Java 嵌入式Tomcat中的War部署
我在MAC上有一个嵌入式tomcat(7.0.64),正在部署一个war文件,运行在Java1.7.067上。出于某种原因,我的tomcat服务器挂起了调用“tomcat.start()” 我确信它在部署war文件时遇到了困难。按照我的计算方法,我插入了一个不同的war文件(一个简单的hello world),这很有效 我尝试连接tomcat log.properties并将日志定向到文件中,希望得到任何线索。但我没有看到任何异常,日志记录在这些行停止Java 嵌入式Tomcat中的War部署,java,eclipse,tomcat,java-7,embedded-tomcat-7,Java,Eclipse,Tomcat,Java 7,Embedded Tomcat 7,我在MAC上有一个嵌入式tomcat(7.0.64),正在部署一个war文件,运行在Java1.7.067上。出于某种原因,我的tomcat服务器挂起了调用“tomcat.start()” 我确信它在部署war文件时遇到了困难。按照我的计算方法,我插入了一个不同的war文件(一个简单的hello world),这很有效 我尝试连接tomcat log.properties并将日志定向到文件中,希望得到任何线索。但我没有看到任何异常,日志记录在这些行停止 FINE: Loading class
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部署的发生
有什么想法/建议吗
短暂性脑缺血发作
更新-我的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
该行-
FINE: loadClass(com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl, false)
上面的消息表示web应用程序已被删除
已停止,但TimerTask尝试从中加载类。
什么web应用程序启动了此计时器?
如果计时器是由此web应用程序启动的,则它是您的
过错您应该已经配置了
javax.servlet.ServletContextListener在以下情况下停止(取消)计时器:
web应用程序停止。当您访问web时不能加载类
应用程序已停止。
或
如果计时器是由其他web应用程序启动的,则表示
你有永久性内存泄漏的地方。确保你有
在server.xml中配置的JreMemoryLeakPreventionListener。
众所周知,JavaXMLAPI中存在PermGen内存泄漏。A.
已将抑制它的变通方法添加到JreMemoryLeakPreventionListener
在r884341[1]
马克有一篇关于内存泄漏的演讲
或
将Apache Xerces的单独副本与web应用程序捆绑
也许会有帮助。如果根本原因是你没有取消,那就没用了
计时器。
[1]
希望这有帮助。线路-
FINE: loadClass(com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl, false)
上面的消息表示web应用程序已被删除
已停止,但TimerTask尝试从中加载类。
什么web应用程序启动了此计时器?
如果计时器是由此web应用程序启动的,则它是您的
过错您应该已经配置了
javax.servlet.ServletContextListener在以下情况下停止(取消)计时器:
web应用程序停止。当您访问web时不能加载类
应用程序已停止。
或
如果计时器是由其他web应用程序启动的,则表示
你有永久性内存泄漏的地方。确保你有
在server.xml中配置的JreMemoryLeakPreventionListener。
众所周知,JavaXMLAPI中存在PermGen内存泄漏。A.
已将抑制它的变通方法添加到JreMemoryLeakPreventionListener
在r884341[1]
马克有一篇关于内存泄漏的演讲
或
将Apache Xerces的单独副本与web应用程序捆绑
也许会有帮助。如果根本原因是你没有取消,那就没用了
计时器。
[1]
希望这能有所帮助。日志文件中是否都有这些行?什么是log.properties?是的,这些是日志文件中的最后一行。这些都是日志文件中的行吗?什么是log.properties?是的,这是日志文件的最后几行。不确定“web应用程序已停止”是什么意思?现在我只部署这个(只有一个)应用程序。我希望知道的是,如果由于某种原因tomcat无法部署此应用程序,那么它应该抛出某种异常,指示缺少类/等详细信息。只有一个应用程序正在部署,如果其部署本身没有通过,那么我认为这个应用程序中的任何计时器都不会起作用。此外,我还尝试在类路径中捆绑XercesImpl.jar,这也没有帮助。JreMemoryLeak,对此不是很确定,但我会试一试。不确定“web应用程序已经停止”是什么意思?现在我只部署这个(只有一个)应用程序。我希望知道的是,如果由于某种原因tomcat无法部署此应用程序,那么它应该抛出某种异常,指示缺少类/等详细信息。只有一个应用程序正在部署,如果其部署本身没有通过,那么我认为这个应用程序中的任何计时器都不会起作用。此外,我还尝试在类路径中捆绑XercesImpl.jar,这也没有帮助。JreMemoryLeak,对这个不太确定,但我会试一试。