在我的Tomcat日志(catalina)中,我收到以下错误,阻止我的应用程序启动:
SEVERE: Error listenerStart 24-Mar-2009 13:23:10 org.apache.catalina.core.StandardContext start SEVERE: Context [/exampleA] startup failed due to previous errors
我不知道为什么我会这样做。在我的web.xml中,我有以下
<listener>
<listener-class>
uk.co.a.listener.SessionListener
</listener-class>
</listener>
<listener>
<listener-class>
uk.co.a.listener.SessionAttributeListener
</listener-class>
</listener>
当我评论听众时,它启动正常。列表人员的代码如下:
public class SessionAttributeListener implements HttpSessionAttributeListener {
static Log log = LogFactory.getLog(SessionAttributeListener.class.getName());
public void attributeAdded(HttpSessionBindingEvent hsbe) {
log.debug("VALUE attributeAdded to THE SESSION:" + hsbe.getName());
}
public void attributeRemoved(HttpSessionBindingEvent hsbe) {
log.debug("VALUE attributeRemoved from THE SESSION:" + hsbe.getName());
}
public void attributeReplaced(HttpSessionBindingEvent hsbe) {
log.debug("VALUE attributeReplaced in THE SESSION:" + hsbe.getName());
}
}
和
public class SessionListener implements HttpSessionListener {
static Log log = LogFactory.getLog(SessionListener.class.getName());
private static int activeSessions = 0;
public void sessionCreated(HttpSessionEvent evt)
{
activeSessions++;
log.debug("No. of active sessions on:"+
new java.util.Date()+" : "+activeSessions);
}
public void sessionDestroyed (HttpSessionEvent evt)
{
activeSessions--;
}
}
为什么不开始?或者我在哪里可以查找更多信息?
更新
启动时,SessionAttributeListener似乎只有一个问题。 SessionListener没有启动,因为&lt; listener&gt;在&lt; servlet&gt;
之后宣布更新
使用的JAR文件存在问题。未包含SessionAttributeListener的类。当它被包括在内时,应用程序就开始了。
更新
AttributeListener似乎没有运行。使用它时代码失败。有没有一种简单的方法可以检查监听器是否正在运行?
答案 0 :(得分:2)
由于我最终在其他地方找到了解决方案的路线,我认为用这些信息更新此问题会很有用。
这与基础异常有关,导致可怕的'SEVERE:Error listenerStart'消息未被记录在任何地方,以及如何配置日志记录以产生异常。
从here可以清楚地了解日志问题和解决方案。
在我的情况下,我选择了更加简洁的版本,添加了
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/web-app].level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/web-app].handlers = java.util.logging.ConsoleHandler
到tomcat conf / logging.properties,并用适当的Web应用程序上下文路径替换/ web-app。
神奇的是隐藏的异常出现并且告诉我Java 6运行时不想知道Java 7编译的代码。令人尴尬,但很容易修复。
这适用于Tomcat 7.您的里程可能会有所不同。
答案 1 :(得分:1)
重新读取更新“AttributeListener似乎没有运行。使用它时代码失败。是否有一种简单的方法可以检查监听器是否正在运行?”你尝试过添加静态初始化程序吗?
之类的东西static {
log.debug("static initialiser called");
}
第一次引用类时,你应该得到一条日志记录。
答案 2 :(得分:0)
当您在Tomcat日志中遇到“由于先前错误而导致启动失败”时,您将在日志中找到导致此问题的更多异常,或者您需要在Tomcat中完全配置日志记录,以便异常可能是写入日志。一旦将根本原因写入日志,解决方案通常是微不足道的。