I am working on a JMS client for WebLogic 11g (WebLogic Server 10.3.6.0). The client is based on wlthint3client.jar
library. The client uses asynchronous API (listeners) to read messages from JMS queue. Client is multi-threaded and uses multiple parallel JMS consumers.
Weblogic JMS server is configured to have a JMS transaction timeout of 10 minutes, yet I have problems with commiting transactions that are over 6 minutes long. This happens only when there are many long transactions going at the same time.
Is such case commit fails with following exception:
weblogic.jms.common.JMSException: weblogic.messaging.dispatcher.DispatcherException: java.rmi.RemoteException: Could not establish a connection with -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server, java.io.IOException: Bootstrap request to JVMID -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server got an error or timed out; nested exception is:
java.io.IOException: Bootstrap request to JVMID -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server got an error or timed out; nested exception is:
java.rmi.ConnectException: Could not establish a connection with -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server, java.io.IOException: Bootstrap request to JVMID -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server got an error or timed out; nested exception is:
java.io.IOException: Bootstrap request to JVMID -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server got an error or timed out
at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:116)
at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncNoTran(DispatcherAdapter.java:61)
at weblogic.jms.client.JMSSession.commit(JMSSession.java:1224)
at weblogic.jms.client.JMSSession.commit(JMSSession.java:1198)
at weblogic.jms.client.WLSessionImpl.commit(WLSessionImpl.java:108)
Some other observations:
- It seems my client only can handle 5 messages at a time. I have more consumers, let say 10, I have more available messages in the queue, but still only 5 are processed in parallel.
- If I configure the client to use < 5 consumers then the problem does not occur.
- If there are < 5 parallel long transactions - the problem does not occur