We have *activeMQ broker (5.10.2)* running embedded in *TomEE (1.7.2)* and
JMS clients connects to activeMQ broker using https protocol. After some
minutes of inactivity JMS client throws javax.jms.JMSException: -
javax.jms.JMSException: Channel was inactive for too (>30000) long:
*https://<reverse_proxy_host>:<RP_port>*
at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
at
org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1998)
at
org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:2017)
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.AbstractInactivityMonitor.onException(AbstractInactivityMonitor.java:314)
at
org.apache.activemq.transport.AbstractInactivityMonitor$4.run(AbstractInactivityMonitor.java:215)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
and
javax.jms.JMSException: Could not post command: KeepAliveInfo {} due to:
java.net.SocketTimeoutException: Read timed out
at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
at
org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1998)
at
org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:2017)
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.AbstractInactivityMonitor.onException(AbstractInactivityMonitor.java:314)
at
org.apache.activemq.transport.AbstractInactivityMonitor$3.run(AbstractInactivityMonitor.java:173)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
We tried to deactivate *'JMS Inactivity Monitor' * using property
*'wireFormat.maxInactivityDuration=0'* set in activeMQ connection URL as
suggested in https://activemq.apache.org/activemq-inactivitymonitor.html
<https://activemq.apache.org/activemq-inactivitymonitor.html>
However it throws following exception after setting
*'wireFormat.maxInactivityDuration=0*' in JMS HTTPS URL
=== Exception Traceback ===
javax.jms.JMSException: Could not create Transport. Reason:
java.lang.IllegalArgumentException: Invalid connect parameters:
{wireFormat.maxInactivityDuration=0}
at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36)
at
org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:317)
at
org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:330)
at
org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:251)
at
com.engineous.common.jms.JMSUtil.createJMSConnection(JMSUtil.java:317)
*How to fix above JMS channel inactive issue? How to set
*transport.useKeepAlive=true* in http/https protocol*
--
Sent from: http://tomee-openejb.979440.n4.nabble.com/TomEE-Dev-f982480.html