As already stated, posting to the remote queue works fine if I use
QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
instead of
QueueSession session = connection.createQueueSession(true, -1);
It makes no difference whether I use ConnectionFactory or XAConnectionFactory.
To find more details on the problem I examined the server logs and switched the logger for org.jboss.qm to DEBUG level.
Astonishingly, there seems to be no difference in the log if I use the transacted session instead of the normal one.
Here are some extracted snippets:
Sending within MDB.onMessage() on local host:
2006-09-29 11:22:30,036 DEBUG [org.jboss.mq.referenceable.SpyDestinationObjectFactory] SpyDestinationObjectFactory->getObjectInstance()
2006-09-29 11:22:30,040 DEBUG [org.jboss.mq.referenceable.SpyConnectionFactoryObjectFactory] Extracting SpyConnectionFactory from reference
2006-09-29 11:22:30,045 DEBUG [org.jboss.mq.referenceable.SpyConnectionFactoryObjectFactory] The GenericConnectionFactory is: GenericConnectionFactory[server=org.jboss.mq.il.uil2.UILServerIL@4ff8413a connectionProperties={UIL_PORT_KEY=8293, ClientILService=org.jboss.mq.il.uil2.UILClientILService, UIL_ADDRESS_KEY=172.23.4.115, UIL_TCPNODELAY_KEY=yes, PingPeriod=60000, UIL_CHUNKSIZE_KEY=1000000, UIL_RECEIVE_REPLIES_KEY=No, UIL_BUFFERSIZE_KEY=2048}]
2006-09-29 11:22:30,047 DEBUG [org.jboss.mq.il.uil2.SocketManager] Begin ReadTask.run
2006-09-29 11:22:30,047 DEBUG [org.jboss.mq.il.uil2.SocketManager] Begin WriteTask.run
2006-09-29 11:22:30,047 DEBUG [org.jboss.mq.il.uil2.SocketManager] Created ObjectOutputStream
2006-09-29 11:22:30,049 DEBUG [org.jboss.mq.il.uil2.SocketManager] Created ObjectInputStream
2006-09-29 11:22:30,091 DEBUG [org.jboss.mq.il.uil2.UILClientILService] Starting
2006-09-29 11:22:30,106 DEBUG [org.jboss.mq.il.uil2.UILClientILService] Stopping
2006-09-29 11:22:30,107 DEBUG [org.jboss.mq.il.uil2.SocketManager] End ReadTask.run
2006-09-29 11:22:30,108 DEBUG [org.jboss.mq.il.uil2.SocketManager] End WriteTask.run
The receiver on the remote host 172.23.4.115 logs something like:
2006-09-29 15:31:02,052 DEBUG [org.jboss.mq.referenceable.SpyDestinationObjectFactory] SpyDestinationObjectFactory->getObjectInstance()
2006-09-29 15:31:02,292 DEBUG [org.jboss.mq.referenceable.SpyConnectionFactoryObjectFactory] Extracting SpyConnectionFactory from reference
2006-09-29 15:31:02,293 DEBUG [org.jboss.mq.referenceable.SpyConnectionFactoryObjectFactory] The GenericConnectionFactory is: GenericConnectionFactory[server=org.jboss.mq.il.uil2.UILServerIL@b77a46 connectionProperties={UIL_PORT_KEY=8293, ClientILService=org.jboss.mq.il.uil2.UILClientILService, UIL_ADDRESS_KEY=172.23.4.115, UIL_TCPNODELAY_KEY=yes, PingPeriod=60000, UIL_CHUNKSIZE_KEY=1000000, UIL_RECEIVE_REPLIES_KEY=No, UIL_BUFFERSIZE_KEY=2048}]
2006-09-29 15:31:02,295 DEBUG [org.jboss.mq.il.uil2.SocketManager] Begin ReadTask.run
2006-09-29 15:31:02,295 DEBUG [org.jboss.mq.il.uil2.SocketManager] Begin ReadTask.run
2006-09-29 15:31:02,296 DEBUG [org.jboss.mq.il.uil2.SocketManager] Begin WriteTask.run
2006-09-29 15:31:02,296 DEBUG [org.jboss.mq.il.uil2.SocketManager] Begin WriteTask.run
2006-09-29 15:31:02,296 DEBUG [org.jboss.mq.il.uil2.SocketManager] Created ObjectOutputStream
2006-09-29 15:31:02,296 DEBUG [org.jboss.mq.il.uil2.SocketManager] Created ObjectOutputStream
2006-09-29 15:31:02,297 DEBUG [org.jboss.mq.il.uil2.SocketManager] Created ObjectInputStream
2006-09-29 15:31:02,298 DEBUG [org.jboss.mq.il.uil2.SocketManager] Created ObjectInputStream
2006-09-29 15:31:02,302 DEBUG [org.jboss.mq.il.uil2.UILClientILService] Starting
2006-09-29 15:31:02,303 DEBUG [org.jboss.mq.il.uil2.ServerSocketManagerHandler] Setting up the UILClientIL Connection
2006-09-29 15:31:02,303 DEBUG [org.jboss.mq.il.uil2.ServerSocketManagerHandler] The UILClientIL Connection is set up
2006-09-29 15:31:02,307 DEBUG [org.jboss.mq.referenceable.SpyDestinationObjectFactory] SpyDestinationObjectFactory->getObjectInstance()
2006-09-29 15:31:02,310 DEBUG [org.jboss.mq.il.uil2.SocketManager] End WriteTask.run
2006-09-29 15:31:02,310 DEBUG [org.jboss.mq.il.uil2.ServerSocketManagerHandler] Exiting on IOE
java.net.SocketException: Socket closed
at java.net.SocketInputStream.read(SocketInputStream.java:162)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
at org.jboss.util.stream.NotifyingBufferedInputStream.read(NotifyingBufferedInputStream.java:67)
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2196)
at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2376)
at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2443)
at java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2515)
at java.io.ObjectInputStream$BlockDataInputStream.readByte(ObjectInputStream.java:2664)
at java.io.ObjectInputStream.readByte(ObjectInputStream.java:875)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:290)
at java.lang.Thread.run(Thread.java:595)
2006-09-29 15:31:02,371 DEBUG [org.jboss.mq.il.uil2.UILClientILService] Stopping
2006-09-29 15:31:02,373 DEBUG [org.jboss.mq.il.uil2.SocketManager] End ReadTask.run
2006-09-29 15:31:02,311 DEBUG [org.jboss.mq.il.uil2.SocketManager] End WriteTask.run
2006-09-29 15:31:02,310 DEBUG [org.jboss.mq.il.uil2.SocketManager] End ReadTask.run
The strange exception causing the ServerSocketManagerHandler to exit on IOE seems to be independent of my original problem and is always there: no difference between successful send and failure.
Sometimes there is also an
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.readByte(ObjectInputStream.java:2666)
at java.io.ObjectInputStream.readByte(ObjectInputStream.java:875)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:290)
at java.lang.Thread.run(Thread.java:595)
instead of the SocketException. But it seems to make no difference, too. Whether the one or the other exception occurs is undetermined.
I hope that the snippets could help a little. Perhaps there is also another log setting to find a clue on the problem?