java - activemq 和 Glassfish : InactivityIOException: Channel was inactive for too long

标签 java glassfish activemq

我的系统有以下部分:

  • ActiveMQ 5.8.0
  • 在 Glassfish 3.0 上部署 4 个耳朵
  • 连接到 Glassfish 上部署的 Web 服务的 .net 客户端

(这些似乎都没有使用 activemq)

系统可以完美运行数月,直到出现 InactivityIOException (ActiveMQ) 失败

2015-03-11 08:23:17,369 WARN | Transport Connection to: tcp://127.0.0.1:33130 > failed: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (>30000) long: tcp://127.0.0.1:33130 | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ InactivityMonitor Worker

一段时间后 Glassfish 崩溃了

|2015-03-11T08:37:08.845+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=120519;_ThreadName=Thread-2;|2015-03-11 08:34:30,418 [0.1:61616@33130] ERROR ActiveMQEndpointWorker - Connection to broker failed: java.io.EOFException javax.jms.JMSException: java.io.EOFException at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49) at org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1969) at org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1988) at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101) at org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:126) at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101) at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101) at org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:160) at org.apache.activemq.transport.AbstractInactivityMonitor.onException(AbstractInactivityMonitor.java:332) at org.apache.activemq.transport.TransportSupport.onException(TransportSupport.java:96) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:200) at java.lang.Thread.run(Thread.java:744) Caused by: java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:392) at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:275) at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:221) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:213) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196) ... 1 more |#] [#|2015-03-11T08:45:44.211+0100|WARNING|glassfish3.1.2|com.sun.grizzly.config.GrizzlyServiceListener|_ThreadID=19;_ThreadName=Thread-2;|GRIZZLY0023: Interrupting idle Thread: http-thread-pool-8080(4).|#]

我读到ActiveMQ:'channel inactive for too long' exceptions stop broker messaging但我不想停止 InactivityMonitor,设置更高的超时值并不能解决我的问题(只是推迟它),问题是:为什么我会收到此 inactivityException 以及为什么 GF 会挂出?

最佳答案

我认为应该禁用 inactivityMonitor。如果您需要在生产环境中启动并运行它,那么您应该使用配置文件中的属性来配置此行为。

关于java - activemq 和 Glassfish : InactivityIOException: Channel was inactive for too long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28987571/

相关文章:

java - Glassfish:它是如何工作的?

java - spring boot 和 BlockingQueue 监听器

java - activemq 5.9.0 在 Windows 和 Maven 中失败

java - 如何将加密数据写入文本文件?

JavaEE 解决方案配置最佳实践

java - Jersey:重定向到 Jersey 根之外

java - 使用 Netbeans 在远程服务器上热部署

java - 传输方案无法识别 : [amqp]

java - 继承内部类的私有(private)方法

java - 从一个数组迭代计算多个结果