Discussion:
[openjms-developer] Question on internal orb/rmi
Dean Anderson
2008-04-08 17:26:35 UTC
Permalink
Hi folks!

I notice that the internal orb(?) tries to establish a separate TCP/TCPS
connection to NOTIFY the client of a new message. This doesn't work so
well if the client is behind a nat. The client picks all queued
messages on establishing the connection, but no new messages thereafter.
The following exception is seen on the server.

Any suggestions? http tunneling is umm, undesirable. I need a ssl tcp
connection established by the client that is used for _all_
communication between client and server during the session. BTW, it
also seems to be a significant performance/time delay hit to establish
separate tcp/tcps connections, anyway. Is this an easy fix? I'm no
expert on RMI, though.

Thanks!

--Dean



21:54:23.456 DEBUG [Scheduler-Worker-3] - Failed to notify client
java.rmi.RemoteException: Failed to connect to 192.168.2.101:54848;
nested exception is:
org.exolab.jms.net.connector.ResourceException: Failed to
connect to 192.168.2.101:54848
at
org.exolab.jms.client.net.JmsSessionStubImpl__Proxy.onMessageAvailable(JmsSessionStubImpl__Proxy.java:26
5)
at
org.exolab.jms.server.SessionConsumer.notifyMessageAvailable(SessionConsumer.java:527)
at
org.exolab.jms.server.SessionConsumer.dispatch(SessionConsumer.java:505)
at
org.exolab.jms.server.SessionConsumer.access$000(SessionConsumer.java:78)
at
org.exolab.jms.server.SessionConsumer$1.run(SessionConsumer.java:155)
at org.exolab.jms.scheduler.SerialTask.run(SerialTask.java:164)
at
org.exolab.jms.common.threads.ThreadPool$NotifyingRunnable.run(ThreadPool.java:211)
at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
Source)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.exolab.jms.net.connector.ResourceException: Failed to
connect to 192.168.2.101:54848
at
org.exolab.jms.net.socket.SocketManagedConnection.createSocketProtected(SocketManagedConnection.java:270
)
at
org.exolab.jms.net.socket.SocketManagedConnection.createSocket(SocketManagedConnection.java:182)
at
org.exolab.jms.net.tcp.TCPSManagedConnection.createSocket(TCPSManagedConnection.java:113)
at
org.exolab.jms.net.socket.SocketManagedConnection.<init>(SocketManagedConnection.java:114)
at
org.exolab.jms.net.tcp.TCPSManagedConnection.<init>(TCPSManagedConnection.java:79)
at
org.exolab.jms.net.tcp.TCPSManagedConnectionFactory.createManagedConnection(TCPSManagedConnectionFactory
.java:98)
at
org.exolab.jms.net.connector.DefaultConnectionPool.createManagedConnection(DefaultConnectionPool.java:23
3)
at
org.exolab.jms.net.connector.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java
:140)
at
org.exolab.jms.net.connector.AbstractConnectionFactory.getConnection(AbstractConnectionFactory.java:167)
at
org.exolab.jms.net.connector.AbstractConnectionManager.getConnection(AbstractConnectionManager.java:208)
at
org.exolab.jms.net.connector.AbstractConnectionManager.getConnection(AbstractConnectionManager.java:187)
at
org.exolab.jms.net.orb.UnicastDelegate.getConnection(UnicastDelegate.java:189)
at
org.exolab.jms.net.orb.UnicastDelegate.invoke(UnicastDelegate.java:153)
at org.exolab.jms.net.proxy.Proxy.invoke(Proxy.java:102)
at
org.exolab.jms.client.net.JmsSessionStubImpl__Proxy.onMessageAvailable(JmsSessionStubImpl__Proxy.java:25
9)
--
Av8 Internet Prepared to pay a premium for better service?
www.av8.net faster, more reliable, better service
617 344 9000
Tim Anderson
2008-04-10 05:52:44 UTC
Permalink
Odd. The server shouldn't be trying to establish a separate connection -
all data should be multiplexed over the connection initiated by the client.

The call to AbstractConnectionManager.allocateConnection() should match
the existing ManagedConnection held by the connection pool, and return
a reference to it.

Any chance you can debug it?

Thanks,

Tim
Post by Dean Anderson
Hi folks!
I notice that the internal orb(?) tries to establish a separate TCP/TCPS
connection to NOTIFY the client of a new message. This doesn't work so
well if the client is behind a nat. The client picks all queued
messages on establishing the connection, but no new messages thereafter.
The following exception is seen on the server.
Any suggestions? http tunneling is umm, undesirable. I need a ssl tcp
connection established by the client that is used for _all_
communication between client and server during the session. BTW, it
also seems to be a significant performance/time delay hit to establish
separate tcp/tcps connections, anyway. Is this an easy fix? I'm no
expert on RMI, though.
Thanks!
--Dean
21:54:23.456 DEBUG [Scheduler-Worker-3] - Failed to notify client
java.rmi.RemoteException: Failed to connect to 192.168.2.101:54848;
org.exolab.jms.net.connector.ResourceException: Failed to
connect to 192.168.2.101:54848
at
org.exolab.jms.client.net.JmsSessionStubImpl__Proxy.onMessageAvailable(JmsSessionStubImpl__Proxy.java:26
5)
at
org.exolab.jms.server.SessionConsumer.notifyMessageAvailable(SessionConsumer.java:527)
at
org.exolab.jms.server.SessionConsumer.dispatch(SessionConsumer.java:505)
at
org.exolab.jms.server.SessionConsumer.access$000(SessionConsumer.java:78)
at
org.exolab.jms.server.SessionConsumer$1.run(SessionConsumer.java:155)
at org.exolab.jms.scheduler.SerialTask.run(SerialTask.java:164)
at
org.exolab.jms.common.threads.ThreadPool$NotifyingRunnable.run(ThreadPool.java:211)
at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
Source)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.exolab.jms.net.connector.ResourceException: Failed to
connect to 192.168.2.101:54848
at
org.exolab.jms.net.socket.SocketManagedConnection.createSocketProtected(SocketManagedConnection.java:270
)
at
org.exolab.jms.net.socket.SocketManagedConnection.createSocket(SocketManagedConnection.java:182)
at
org.exolab.jms.net.tcp.TCPSManagedConnection.createSocket(TCPSManagedConnection.java:113)
at
org.exolab.jms.net.socket.SocketManagedConnection.<init>(SocketManagedConnection.java:114)
at
org.exolab.jms.net.tcp.TCPSManagedConnection.<init>(TCPSManagedConnection.java:79)
at
org.exolab.jms.net.tcp.TCPSManagedConnectionFactory.createManagedConnection(TCPSManagedConnectionFactory
.java:98)
at
org.exolab.jms.net.connector.DefaultConnectionPool.createManagedConnection(DefaultConnectionPool.java:23
3)
at
org.exolab.jms.net.connector.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java
:140)
at
org.exolab.jms.net.connector.AbstractConnectionFactory.getConnection(AbstractConnectionFactory.java:167)
at
org.exolab.jms.net.connector.AbstractConnectionManager.getConnection(AbstractConnectionManager.java:208)
at
org.exolab.jms.net.connector.AbstractConnectionManager.getConnection(AbstractConnectionManager.java:187)
at
org.exolab.jms.net.orb.UnicastDelegate.getConnection(UnicastDelegate.java:189)
at
org.exolab.jms.net.orb.UnicastDelegate.invoke(UnicastDelegate.java:153)
at org.exolab.jms.net.proxy.Proxy.invoke(Proxy.java:102)
at
org.exolab.jms.client.net.JmsSessionStubImpl__Proxy.onMessageAvailable(JmsSessionStubImpl__Proxy.java:25
9)
Loading...