tomcat启动报错,找不到对应的 queue,从而引发内存泄漏

tomcat启动报错,无法创建 bean listenerStatusChangeDealHandler, no queue 'STOCK.NOTIFY_CHANGE.INTER.CACHE.QUEUE' in vhost

从启动日志来看,有时候仅会看到内存泄漏,而没有与queue相关的日志,很容易走错方向。

按照 http://blog.csdn.net/wangjunjun2008/article/details/23375501 的方法可以看到详细日志,从而确定报错原因

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. tomcat启动报错,无法创建 bean listenerStatusChangeDealHandler, no queue 'STOCK.NOTIFY_CHANGE.INTER.CACHE.QUEUE' in vhost  
  2. Jun 52014 1:39:42 PM org.apache.catalina.core.StandardContext listenerStart  
  3. SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener  
  4. org.springframework.context.ApplicationContextException: Failed to start bean 'listenerStatusChangeDealHandler';  
  5.  nested exception is org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup  
  6.     at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:169)  
  7.     ...  
  8. Caused by: org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup  
  9.     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doStart(SimpleMessageListenerContainer.java:339)  
  10.     at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:363)  
  11.     at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:166)  
  12.     ... 33 more  
  13. Caused by: org.springframework.amqp.rabbit.listener.FatalListenerStartupException: Cannot prepare queue for listener.   
  14. Either the queue doesn't exist or the broker will not allow us to use it.  
  15.     at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:228)  
  16.     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:524)  
  17.     at java.lang.Thread.run(Thread.java:662)  
  18. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'STOCK.NOTIFY_CHANGE.INTER.CACHE.QUEUE' in vhost '/'class-id=50, method-id=10), null""}  
  19.     at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)  
  20.     at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)  
  21.     at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)  
  22.     at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:216)  
  23.     at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)  
  24.     ... 11 more  
  25. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'STOCK.NOTIFY_CHANGE.INTER.CACHE.QUEUE' in vhost '/'class-id=50, method-id=10), null""}  
  26.     at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:454)  
  27.     at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:294)  
  28.     at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)  
  29.     at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)  
  30.     at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:526)  
  31. Jun 52014 1:39:42 PM org.apache.catalina.core.StandardContext start  
  32. SEVERE: Error listenerStart  
  33. Jun 52014 1:39:42 PM org.apache.catalina.core.StandardContext start  
  34. SEVERE: Context [/TravelHubPkgStock] startup failed due to previous errors  
  35. Jun 52014 1:39:42 PM org.apache.catalina.core.ApplicationContext log  
  36. INFO: Closing Spring root WebApplicationContext  
  37. Jun 52014 1:39:42 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc  
  38. SEVERE: The web application [/TravelHubPkgStock] registered the JDBC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.  
  39. Jun 52014 1:39:42 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  40. SEVERE: The web application [/TravelHubPkgStock] appears to have started a thread named [Thread-2] but has failed to stop it. This is very likely to create a memory leak.  
  41. Jun 52014 1:39:42 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  42. SEVERE: The web application [/TravelHubPkgStock] appears to have started a thread named [Thread-3] but has failed to stop it. This is very likely to create a memory leak.  
  43. Jun 52014 1:39:47 PM org.apache.coyote.http11.Http11Protocol start  
  44. INFO: Starting Coyote HTTP/1.1 on http-8080  
  45. Jun 52014 1:39:48 PM org.apache.jk.common.ChannelSocket init  
  46. INFO: JK: ajp13 listening on /0.0.0.0:9090  
  47. Jun 52014 1:39:48 PM org.apache.jk.server.JkMain start  
  48. INFO: Jk running ID=0 time=0/121  config=null  
  49. Jun 52014 1:39:48 PM org.apache.catalina.startup.Catalina start  
  50. INFO: Server startup in 324602 ms  

经过排查和测试,发现项目中使用rabbitmq服务,而rabbitmq于昨天被重装了,从而里面的队列全部没有了,导致项目启动时初始化bean时候报错。

有趣的是,之前rabbitmq停止服务时,该项目启动正常,而rabbitmq服务提供服务,且某一指定队列不存在时,项目却无法正常启动,

由此可见,代码的健壮性有待改进哪。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值