Static CORBA listener port
 Technote (troubleshooting)
 
This document applies only to the following language version(s):
US English
 
Problem(Abstract)

Scenario

Server is up and client is able to connect successfully. If the server is brought down and back up again, the client does not work until the server is restarted.

22:45:38,785 ERROR [REQUEST:connection-monitor]
siac.tw.domain.service.adapter.ejb.EJBRequest: Error trying to
initialize EJB adapter: Remote exception detected
java.rmi.RemoteException: CORBA TRANSIENT 0x4942f301 No; nested
exception is:
org.omg.CORBA.TRANSIENT: Connection refused:host=10.10.10.10,port=55295
vmcid: IBM minor code: 301 completed: No
at
com.ibm.CORBA.iiop.UtilDelegateImpl.mapSystemException(UtilDelegateImpl.
java:258)
at javax.rmi.CORBA.Util.mapSystemException(Util.java:83)
at
com.siac.tw.application.services.eml._EmlCommandControllerHome_Stub.crea
te(_EmlCommandControllerHome_Stub.java:222)
at
siac.tw.domain.service.adapter.ejb.EJBRequest.makeConnection(EJBRequest.
java:311)
at
siac.tsi.sei.service.ServiceAdapter$Reconnector.run(ServiceAdapter.java:
54)
at java.lang.Thread.run(Thread.java:568)

In this trace we see the client trying to access 10.10.10.10, port 55295. When the server comes back up, it has a different listener port. The client is still trying to access
Host=10.10.10.10,port=55295, which has been dynamically changed to a different port.
 
Cause
This is expected behavior and working as designed. By default, the ORB on the server comes up on a dynamically-assigned listener port. Initially, the client successfully connects to it; however; once the server recycles, it is likely to come up on a different dynamic listener port. The client assumes that the current connection is still valid, and continues to access the outdated port. The connection fails until the client is recycled.
 
Resolving the problem
To avoid this problem, set the listener port on the server to a static port. Set to a static port, the server always comes up on the same port and the client continues to function without a restart.
We recommend that you hard code the following corba listener port, upon which the client is failing. After the server comes back up, it has a different port set, where the client is still trying to access the original port it received.

In the admin.config and JVM, add the following property
com.ibm.CORBA.ListenerPort=<static port number>

NOTE:
In WebSphere Application Server v5, Network Deployment installations, the NodeAgent is introduced. It uses a static port, while the Application Servers still get ports assigned dynamically. This way the client always gets the address from the NodeAgent initially (direct IOR), and subsequently routed to the Application Servers. If an AppServer goes down and come up on a different port (which is likely), it reregisters its new address with the NodeAgent. The next call the client makes to the old address fails and it goes back to the NodeAgent. The NodeAgent then forwards the client to the new address of the AppServer.
 
 
Cross Reference information
Segment Product Component Platform Version Edition
Application Servers Runtimes for Java Technology Java SDK
 
 


Document Information


Product categories: Software > Application Servers > Distributed Application & Web Servers > WebSphere Application Server > Object Request Broker (ORB)
Operating system(s): Windows
Software version: 5.0
Software edition:
Reference #: 1174796
IBM Group: Software Group
Modified date: Dec 19, 2006