2017-01-27 61 views
0

这个问题是一个类似于上SO以前发布的:介绍了Ehcache打破了Web应用程序(没有错误消息)

Ehcache causing Tomcat 7 to give 404

然而,按照这两个变化的建议,这个问题仍然存在:

  1. 确保ehcache.xml中是在WEB-INF/classes中
  2. 确保Tomcat的是7.0.52或更高版本

(我正在运行Tomcat 7.0.69)

当我将EhCache引入它时,webapp根本无法启动。有 没有错误信息。

catalina.log,它只是说,

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 

在我的web应用程序自身的日志,我只能看到一个听众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 

的Web应用程序可能会开始在我的开发环境(在Eclipse),但拒绝在部署环境(Tomcat上运行)开始。

回答

0

原来,问题是我忘了检入hibernate.cfg.xml的更新版本。部署的环境错过了这个文件,所以webapp无法启动。

是什么让这个错误难以追查是否有没有错误信息。只有当我的同事告诉我,她也无法启动Web应用程序(在她的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) 

换句话说检查,因为某些原因的错误信息在Eclipse中打印,但不是tomcat。

我希望tomcat,hibernate和/或ehcache可以在部署环境中吐出更有意义的错误消息。

通过分享这个故事,我希望它能帮助别人更快地解决类似问题。