2
我有一个运行在一个tomcat实例中的多个上下文,每个上下文都需要访问同一个数据库。作为全局jndi资源的hibernate sessionfactory
我遇到了兑现问题,因为每个上下文都有自己的hibernate和ehcache实例。
这似乎不对,他们应该只是hibernate和ehcache的一个实例,这样也会有更好的性能。
我想使一个单一的hibernate会话工厂实例可用于所有上下文,我认为这可以在tomcat中使用全局JNDI资源来完成。
这是解决此问题的好方法吗?
此外,如果任何人都可以提供任何良好的资源来学习如何做到这一点,将不胜感激。
更新:我设法将会话工厂绑定到全局JNDI,但在tomcat启动期间日志中会出现ConcurrentModificationException。
...
INFO: schema update complete
Jan 11, 2012 2:03:19 PM org.hibernate.cache.UpdateTimestampsCache <init>
INFO: starting update timestamps cache at region: org.hibernate.cache.UpdateTimestampsCache
Jan 11, 2012 2:03:19 PM org.hibernate.cache.StandardQueryCache <init>
INFO: starting query cache at region: org.hibernate.cache.StandardQueryCache
Constructed session factory ok [email protected]
Jan 11, 2012 2:03:19 PM org.apache.catalina.mbeans.GlobalResourcesLifecycleListener createMBeans
SEVERE: RuntimeException java.util.ConcurrentModificationException
Jan 11, 2012 2:03:19 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 11, 2012 2:03:19 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.23
...