嵌入式Tomcat中的战争部署

时间:2015-11-17 05:53:18

标签: java eclipse tomcat java-7 embedded-tomcat-7

我在MAC上有一个嵌入式tomcat(7.0.64)并且正在部署一个在java 1.7.067上运行的war文件。出于某种原因,我的tomcat服务器挂起了电话" Tomcat.start()"。

我确信它已经卡住了部署war文件。我认为这种方式我插入了一个不同的战争文件(一个简单的问候世界),并且有效。

我尝试连接tomcat log.properties并将日志定向到文件,希望获得任何线索。但我没有看到任何例外情况,这些线路的记录停止了,

FINE:   Loading class from parent
Nov 16, 2015 9:30:01 PM org.apache.catalina.loader.WebappClassLoader loadClass
FINE:   Loading class from parent
Nov 16, 2015 9:30:01 PM org.apache.catalina.loader.WebappClassLoader loadClass
FINE: loadClass(com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl, false)
Nov 16, 2015 9:30:01 PM org.apache.catalina.loader.WebappClassLoader loadClass
FINE: loadClass(com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl, false)
Nov 16, 2015 9:30:01 PM org.apache.catalina.loader.WebappClassLoader loadClass
FINE: loadClass(com.sun.org.apache.xerces.internal.impl.dv.dtd.DTDDVFactoryImpl, false)
Nov 16, 2015 9:30:01 PM org.apache.catalina.loader.WebappClassLoader loadClass
FINE: loadClass(com.sun.org.apache.xerces.internal.impl.dv.dtd.DTDDVFactoryImpl, false)

不确定它是否找不到" DTDDVFactoryImpl",因为这是jdk库本身的一部分,我也包括xercesimpl.jar。

基本上我正在寻找可以帮助我弄清楚什么或哪个类阻止Web部署发生的方法。

任何想法/指针?

TIA

更新 - 我的log.properties看起来像,

handlers=java.util.logging.ConsoleHandler, org.apache.juli.FileHandler

org.apache.juli.FileHandler.level=ALL
org.apache.juli.FileHandler.directory=./logs
org.apache.juli.FileHandler.prefix=tomcat-

java.util.logging.ConsoleHandler.level=ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

org.apache.catalina.level=FINEST
org.apache.catalina.handlers=org.apache.juli.FileHandler

1 个答案:

答案 0 :(得分:0)

行 -

FINE: loadClass(com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl, false)

上述消息表示Web应用程序已经存在 停止了,但TimerTask尝试从中加载一个类。 什么Web应用程序启动了此计时器? 如果计时器是由这个Web应用程序启动的,那么它就是你的 故障。你应该配置一个 javax.servlet.ServletContextListener在停止(取消)计时器时 Web应用程序停止。您无法在Web上加载类 申请已经停止。  如果计时器是由其他Web应用程序启动的,则意味着 你有PermGen内存泄漏的地方。确保你有 在server.xml中配置的JreMemoryLeakPreventionListener。 众所周知,Java XML API中存在PermGen内存泄漏。一个 解决它的解决方法已添加到JreMemoryLeakPreventionListener 在r884341 [1] Mark有关于Memory Leaks的演讲 http://people.apache.org/~markt/presentations/2010-11-04-Memory-Leaks-60mins.pdf 将Apache Xerces的单独副本与Web应用程序捆绑在一起 可能有帮助。如果根本原因是您未能取消,则无济于事 计时器。 [1] http://svn.apache.org/viewvc?view=revision&revision=r884341

希望这会有所帮助。