]
Ovidiu Feodorov updated JBMESSAGING-1020:
-----------------------------------------
Attachment: jboss-messaging.jar
JBM 1.0 series (SP4 and higher) need to be able to dynamically detect
a valid client-side IP interface
------------------------------------------------------------------------------------------------------
Key: JBMESSAGING-1020
URL:
http://jira.jboss.com/jira/browse/JBMESSAGING-1020
Project: JBoss Messaging
Issue Type: Patch
Components: JMS Remoting
Affects Versions: 1.0.1.SP4
Reporter: Ovidiu Feodorov
Assigned To: Ovidiu Feodorov
Attachments: JBMESSAGING-1020.patch, jboss-messaging.jar
JBM 1.0 series uses a client-side remoting callback server to accept server-to-client TCP
connections. This connections are used by the JBM server to asynchronously send messages
to the client. However, for multi-homed clients, there are situations when the client
sends an incorrect IP address: InetAddress.getLocalHost().getHostAddress() returns a
different IP address than one that is visible from the server side.
The documentation suggest using "jboss.messaging.callback.bind.address" system
property to force an IP address. This approach is not satisfactory, as IP addresses on
client machines change upon reboot. The overhead of changing static configuration for each
reboot is unacceptable.
The problem stems from the fact that InetAddress.getLocalHost(), which is used by the
Messaging code as default callback server address, may not be reachable from the JMS
server, depending on the routing configuration.
The patch uses the assumption that once the direct client-to-server TCP/IP connection is
established, the client-side local address of that connection can be reached reached from
the server. To get that IP address back to the client, the Remoting protocol should be
modified to support a new primitive ("$GET_CLIENT_LOCAL_ADDRESS"), which is only
handled by socket transports and ignored by others.
The Messaging client sends an invocation containing this primitive immediately after
connection is established. If the invocation returns a non-null result, the Messaging
client will use that IP address (presumably one of its own local interfaces) to configure
the callback server.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: