|
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 |
|
|
|
|
|
|