我有一个 Tomcat 不会部署的 WAR,虽然它通常会告诉我为什么它不会部署该应用程序的原因或一些指示,但 Tomcat 的 catalina 日志输出只是指出:
SEVERE: Context [/appmon-qa] startup failed due to previous errors
这是 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 并部署了另一个我知道工作正常的 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
如果我的( super 简单的)web.xml
有问题,Tomcat 应该 会在日志输出中提示。如果我的 web.xml/ServletContextListener
没有问题,但是在我的 contextInitialized
方法中有什么东西抛出异常,catch
block 将打印消息到控制台 - 但那没有发生。
关于可能是什么潜在问题或我必须开始诊断此问题的选项有什么想法吗?提前致谢!
最佳答案
您应该在您的方法中调用父类(super class)。
@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
迷海
关于java - WAR 不会部署到 Tomcat 7.0.19,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10950649/