dev@glassfish.java.net

Problem/Error with ORB and mutliple interfaces

From: Dipl.-Ing. Torsten Liermann <lier_at_liermann-it.de>
Date: Fri, 02 Mar 2012 12:07:33 +0000

Hi ORB/ glassfish developers,

corba communications doesn't works between a client and servers with multiple NICs.

---- System Setup ---------------------------------------
Server (Windows 7 x64, jdk 1.6 x32, glassfish 3.1.1):
 Ethernet 1: 10.5.120.94
 Ethernet 2: 10.10.201.95

 IIOP Listener configuration in domain.xml:
   <iiop-listener port="3700" id="orb-listener-1" address="0.0.0.0" lazy-init="true"></iiop-listener>

Client (Windows XP, jdk 1.6):
 Ethernet: 10.10.201.100

Remark:
The client is not connected to the 10.5.0.0. network.
The communication shall take place only in the 10.10.0.0 network

----------------------------------------------------------
Test configuration based on gf-client.jar 3.1.:

 props.setProperty(org.omg.CORBA.ORBInitialHost", 10.10.201.95);
 new InitialContext(props).
     lookup("java:global/a/b/Foo");

After transferring a couple of packets, the communication stalls.
The client tries to connetct to 10.5.120.194 (which it is not connected to).
The cause of this the glassfish sending wrong configuration information:

An excerpt from the ORBDebug log (client side):

  GIOP Message Body

Total length (ByteBuffer position) : 542
Byte Buffer capacity : 542

47 49 4f 50 01 02 00 01 00 00 02 12 00 00 00 05 GIOP............
00 00 00 03 00 00 00 02 4e 45 4f 00 00 00 00 02 ........NEO.....
00 14 00 00 00 00 00 06 00 00 01 10 00 00 00 00 ................
00 00 00 28 49 44 4c 3a 6f 6d 67 2e 6f 72 67 2f ...(IDL:omg.org/
53 65 6e 64 69 6e 67 43 6f 6e 74 65 78 74 2f 43 SendingContext/C
6f 64 65 42 61 73 65 3a 31 2e 30 00 00 00 00 01 odeBase:1.0.....
00 00 00 00 00 00 00 d4 00 01 02 00 00 00 00 0c .......?........
31 30 2e 35 2e 31 32 30 2e 39 34 00 0e 74 00 00 10.5.120.94..t..
00 00 00 19 af ab cb 00 00 00 00 02 00 00 00 64 ....???........d
00 00 00 08 00 00 00 00 00 00 00 00 14 00 00 00 ................

How can we work around this problem?

=================================================================

Second problem:
It does not matter on which interface the iiop listener is configured to listen,
(10.10.201.95) or 0.0.0.0, the client always gets the wrong
IP Adress (10.5.120.94).

Seems like the glassfish is taking the first interface it finds for the ORB, no matter which interface it is configured for...

Thanks for hints
Torsten