Java 介绍EhCache断开的web应用(无错误消息)
此问题与之前发布的问题类似,因此: 然而,通过遵循建议的两项更改,问题仍然存在:Java 介绍EhCache断开的web应用(无错误消息),java,hibernate,tomcat7,ehcache,Java,Hibernate,Tomcat7,Ehcache,此问题与之前发布的问题类似,因此: 然而,通过遵循建议的两项更改,问题仍然存在: 确保ehcache.xml位于WEB-INF/classes中 确保Tomcat的版本为7.0.52或更高版本 (我正在运行Tomcat 7.0.69) 当我将EhCache引入webapp时,它根本没有启动。那里 没有错误消息 在catalina.log中,它只是简单地说 Jan 26, 2017 5:34:49 PM org.apache.catalina.core.StandardContext start
Jan 26, 2017 5:34:49 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: One or more listeners failed to start. Full details will
be found in the appropriate container log file
Jan 26, 2017 5:34:49 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/myWebApp] startup failed due to previous errors
在我的webapp自己的日志中,我只能看到一个侦听器MyListener
简单地说,上下文已初始化,然后它也立即
摧毁。没有迹象表明是什么导致了这一立即的销毁行动
2017-01-26 17:34:48,242 [op-2] INFO MyListener,localhost-startStop-2:62
- contextInitialized(): creating hibernate session factory
2017-01-26 17:34:49,437 [op-2] INFO MyListener,localhost-startStop-2:138
- contextDestroyed(): shutting down Quartz scheduler
webapp可以在我的开发环境(在Eclipse中)中启动,但拒绝在已部署的环境(在tomcat上运行)中启动。事实证明,问题是我忘记签入更新版本的
hibernate.cfg.xml
。部署的环境缺少此文件,因此webapp无法启动
让这个bug难以追踪的原因是根本没有错误消息。直到我的同事告诉我她也不能用这个错误消息启动webapp(在她的Eclipse环境中),我才意识到我忘了签入hibernate.cfg.xml
org.hibernate.cache.NoCacheRegionFactoryAvailableException:
Second-level cache is used in the application, but property
hibernate.cache.region.factory_class is not given, please
either disable second level cache or set correct region
factory class name to property hibernate.cache.region.factory_class
(and make sure the second level cache provider, hibernate-infinispan, for example, is available in the classpath).
at org.hibernate.cache.internal.NoCachingRegionFactory.buildEntityRegion(NoCachingRegionFactory.java:69)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:348)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1760)
org.hibernate.cache.NoCacheRegionFactoryAvailableException:
应用程序中使用了二级缓存,但属性
未提供hibernate.cache.region.factory\u类,请
禁用二级缓存或设置正确的区域
属性hibernate.cache.region.factory\u类的工厂类名称
(并确保第二级缓存提供程序hibernate infinispan在类路径中可用)。
位于org.hibernate.cache.internal.nocachGregionFactory.buildEntityRegion(nocachGregionFactory.java:69)
位于org.hibernate.internal.sessionfactorympl。(sessionfactorympl.java:348)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1760)
换句话说,由于某些原因,错误消息是在Eclipse中打印的,而不是在tomcat中打印的
我希望tomcat、hibernate和/或ehcache能够在部署的环境中发出更有意义的错误消息
通过分享这个故事,我希望它能帮助人们在将来更快地解决类似的问题