WAR不会部署到Tomcat 7.0.19

IAm*_*aja 5 java tomcat web.xml web-applications war

我有一个不会部署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>
Run Code Online (Sandbox Code Playgroud)

这个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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

而非常模糊/不合理的日志输出:

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
Run Code Online (Sandbox Code Playgroud)

我取消部署了这个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
Run Code Online (Sandbox Code Playgroud)

如果我的(超级简单)有问题web.xml,Tomcat 应该在日志输出中抱怨.如果我web.xml/ServletContextListener没事,但是我的contextInitialized方法中出现了异常,那么该catch块会将消息打印到控制台 - 但这种情况并没有发生.

关于什么可能是潜在的问题或我有什么选择开始诊断这个的任何想法?提前致谢!

mih*_*imi 1

您应该在方法中调用超类。

@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
        super.contextInitialized(servletContextEvent);
Run Code Online (Sandbox Code Playgroud)

....}

   @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        super.contextDestroyed(servletContextEvent);
    }
Run Code Online (Sandbox Code Playgroud)

作为额外的,您可以确保增加 tomcat 服务器上的日志级别(可能集成 log4j) http://tomcat.apache.org/tomcat-7.0-doc/logging.html

米哈伊