【问题标题】:Exception on Spring integration, when shut down the tomcat server关闭 Tomcat 服务器时 Spring 集成异常
【发布时间】:2012-11-04 04:05:34
【问题描述】:

我有一个在 Tomcat 6 上运行的 Spring Integration 应用程序。它有一个 message-driven-channel-adapter 并与远程 Active MQ 服务器通信。到目前为止,我能够完成我的工作。

但是,当我关闭 Tomcat 时,我在 catalina 日志中不断循环出现以下异常:

Exception in thread   "org.springframework.jms.listener.DefaultMessageListenerContainer#0-178" Exception in thread "org.springframework.jms.listener.DefaultMessageListenerContainer#0-179" 

 java.lang.NullPointerException
    at org.apache.log4j.LogManager.getLogger(LogManager.java:188)
    at org.apache.log4j.Logger.getLogger(Logger.java:104)
    at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:289)
    at org.apache.commons.logging.impl.Log4JLogger.trace(Log4JLogger.java:166)
    at org.springframework.jms.support.JmsUtils.closeMessageConsumer(JmsUtils.java:158)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1111)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:971)
    at java.lang.Thread.run(Thread.java:722)

java.lang.NullPointerException
    at org.apache.log4j.LogManager.getLogger(LogManager.java:188)
    at org.apache.log4j.Logger.getLogger(Logger.java:104)
    at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:289)
    at org.apache.commons.logging.impl.Log4JLogger.trace(Log4JLogger.java:166)
    at org.springframework.jms.support.JmsUtils.closeSession(JmsUtils.java:115)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1112)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:971)
    at java.lang.Thread.run(Thread.java:722)
Nov 13, 2012 7:23:37 PM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already.  Could not load org.apache.log4j.spi.VectorWriter.  The eventual following stack trace is ca
used by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1273)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:154)
    at org.apache.log4j.Category.forcedLog(Category.java:388)
    at org.apache.log4j.Category.log(Category.java:853)
    at org.apache.commons.logging.impl.Log4JLogger.warn(Log4JLogger.java:234)
    at org.springframework.jms.listener.DefaultMessageListenerContainer.handleListenerSetupFailure(DefaultMessageListenerContainer.java:831)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:981)
    at java.lang.Thread.run(Thread.java:722)

你们对此有什么想法吗?在关闭 Tomcat 之前是否需要关闭或销毁 Spring 上下文?

感谢您的帮助

谢谢, 凯斯

【问题讨论】:

  • 你是直接还是间接使用apache velocity?这个 tomcat 上托管了多少应用程序?
  • 出于好奇,为什么要问有关 Velocity 的问题?

标签: java jms spring-integration


【解决方案1】:

好吧,看来你是对的:

在关闭 Tomcat 之前是否需要关闭或销毁 Spring 上下文?

从 Spring JSM 源代码看来,您的 Tomcat 关闭它的 log4j.LogManager 比 Spring 停止它的上下文更早。

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多