Jms NettyConnectorFactory错误

Jms NettyConnectorFactory错误,jms,netty,hornetq,Jms,Netty,Hornetq,我在tomcat应用程序中有一个Jms侦听器。JMS服务器是hornetQ服务器,我使用netty连接器连接到它。连接成功并且工作正常,但是当tomcat停止时,我在catalina.out中看到以下错误 2014年12月11日下午4:31:40 org.apache.catalina.loader.WebappClassLoader loadClass 信息:非法访问:此web应用程序实例已停止。无法加载org.hornetq.core.remoting.impl.netty.NettyCon

我在tomcat应用程序中有一个Jms侦听器。JMS服务器是hornetQ服务器,我使用netty连接器连接到它。连接成功并且工作正常,但是当tomcat停止时,我在catalina.out中看到以下错误

2014年12月11日下午4:31:40 org.apache.catalina.loader.WebappClassLoader loadClass
信息:非法访问:此web应用程序实例已停止。无法加载org.hornetq.core.remoting.impl.netty.NettyConnectorFactory。最终的后续堆栈跟踪是由出于调试目的以及试图终止导致非法访问的线程而引发的错误引起的,没有任何功能影响。
java.lang.IllegalStateException
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1245)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
位于org.hornetq.utils.ClassloadingUtil.newInstanceFromClassLoader(ClassloadingUtil.java:24)
位于org.hornetq.core.client.impl.ClientSessionFactoryImpl$2.run(ClientSessionFactoryImpl.java:1466)
位于org.hornetq.core.client.impl.ClientSessionFactoryImpl$2.run(ClientSessionFactoryImpl.java:1463)
位于java.security.AccessController.doPrivileged(本机方法)
位于org.hornetq.core.client.impl.ClientSessionFactoryImpl.InstanceConnectorFactory(ClientSessionFactoryImpl.java:1462)
位于org.hornetq.core.client.impl.ClientSessionFactoryImpl。(ClientSessionFactoryImpl.java:203)
位于org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:864)
位于org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:583)
位于org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:107)
位于org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:102)
位于org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)
位于org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:405)
位于org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContainer.java:390)
位于org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageListenerContainer.java:880)
位于org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageListenerContainer.java:856)
位于org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1007)
运行(Thread.java:636)
2014年12月11日下午4:31:40 org.jboss.netty.util.ThreadRenamingRunnable
警告:无法确定线程名称
java.lang.NullPointerException
位于org.jboss.netty.util.ThreadRenamingRunnable.getNewThreadName(ThreadRenamingRunnable.java:126)
位于org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:91)
位于org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
位于org.jboss.netty.util.VirtualExecutorService$ChildExecutorRunnable.run(VirtualExecutorService.java:175)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
在java.lang.Thread.run(Thread.java:636)


我知道这是因为tomcat非法停止了连接器,但我不知道如何修复它

那么,您的意思是说您已经使用jms侦听器创建了jar并将其放在tomcat lib目录中了吗?一些配置细节也会有助于usI基于此博客创建了一个与侦听器的war:我不确定是否可以通过某种方式修改配置以阻止这些错误。所以之前您创建了jar并将其放置在lib目录中?无论如何,您也可以使用jar实现(处理配置更改是一项繁琐的任务),但您需要重新设置tomcat启动/停止侦听器,在停止时,您需要执行清理活动。@KarthikPrasad抱歉,因为我正在度假。所以以前它是一个独立的应用程序,但现在我需要用JMS主题中的数据更新tomcat应用程序中的一些数据结构。我和你暗示要创建一个jar并将其放在库目录中,但我不知道如何前进。我甚至可以尝试注册一个启动/停止监听器,但是如果tomcat是通过服务命令启动/停止的,那会起作用吗?(服务tomcat5启动/停止/重新启动)。是的,您可以根据tomcat生成的各种事件进行处理,例如启动后事件、停止后事件、启动前事件、停止前事件、销毁事件、初始化事件、周期性事件、启动事件、停止事件,您可以使用适当的事件。接口是org.apache.catalina.LifecycleListener。无论如何,我建议使用webapps并从webapps/use contextloader加载spring配置。因为它的可维护性。如果您在webapp/lib目录中有(很少额外的)springjar,那么创建jar并将其放置在tomcat-lib会有更多的依赖项以及spring依赖项问题