Guice 注入实体管理器放在线程ThreadLocal<EntityManager> 中,strut2线程当达到10就不在增加,导致线程中实体管理器一直存在,直到j2ee容器关闭,缓存一直在实体管理中保存,action执行完成也没有关闭实体管理器。
解决办法:
@Override
protected Injector getInjector() {
return Guice.createInjector(
new JpaPersistModule("Warn"),
new Struts2GuicePluginModule(),
new ServletModule() {
@Override
protected void configureServlets() {
bind(StrutsPrepareAndExecuteFilter.class).in(Singleton.class);
filter("/*").through(PersistFilter.class);//自动打开和关闭实体管理器
filter("/*").through(StrutsPrepareAndExecuteFilter.class);
this.install(new MyModule());
}
});
}