我有一个不会部署Tomcat的WAR,虽然它通常给我原因或者说明为什么它不会部署应用程序,Tomcat的catalina日志输出只是说明:
严重:由于之前的错误,上下文[/ appmon-qa]启动失败
这是web.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<!-- The display name of this web application -->
<display-name>AppMonitor</display-name>
<listener>
<listener-class>
com.me.myorg.appmon.AppMonitor
</listener-class>
</listener>
</web-app>
AppMonitor
类中的重要内容:
public class AppMonitor implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent event) {
return;
}
@Override
public void contextInitialized(ServletContextEvent event) {
try {
// Guts of my monitor app
} catch(Exception exc) {
System.out.println("Something bad happened!\n" + exc.getMessage());
}
}
}
非常模糊/不合理的日志输出:
INFO: Deploying web application archive appmon-qa.war
Jun 8, 2012 9:45:30 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Jun 8, 2012 9:45:31 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/appmon-qa] startup failed due to previous errors
Jun 8, 2012 9:45:31 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
Jun 8, 2012 9:45:31 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
Jun 8, 2012 9:45:32 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory host-manager
Jun 8, 2012 9:45:32 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory manager
Jun 8, 2012 9:45:32 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
Jun 8, 2012 9:45:32 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jun 8, 2012 9:45:32 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jun 8, 2012 9:45:32 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8010"]
Jun 8, 2012 9:45:32 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2875 ms
我取消部署了这个WAR并部署了另一个我知道正常工作且Tomcat 7.0.19没有任何问题地启动它,所以我知道它不是Tomcat /配置问题。这显然是我的WAR的错误。目录结构如下:
appmon-qa.war/
META-INF/
MANIFEST.MF
WEB-INF/
classes/
All of my binaries
lib/
All JAR dependencies
web.xml
如果我的(超级简单)web.xml
出现问题,Tomcat 应该在日志输出中抱怨。如果我的web.xml/ServletContextListener
很好,但是某些内容在我的contextInitialized
方法中引发了异常,则catch
块会将消息打印到控制台 - 但这种情况不会发生。
关于什么可能是潜在问题的任何想法或我有什么选择开始诊断这个?提前谢谢!
答案 0 :(得分:1)
你应该在你的方法中调用超类。
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
super.contextInitialized(servletContextEvent);
.... }
和
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
super.contextDestroyed(servletContextEvent);
}
作为额外的,您可以确保增加tomcat服务器上的日志级别(可能集成log4j) http://tomcat.apache.org/tomcat-7.0-doc/logging.html
米哈伊