PQ61243: EJB client hangs with servlet, JSP or stand alone Java client
Downloadable files
Abstract
The Application Server clone exists on node-02. When the clone on node-02 is stopped, the Application does not connect to the running clone.
Download Description
PQ61243 resolves the following problem:
USERS AFFECTED:
WebSphere® Application Server users of enterprise applications.
PROBLEM DESCRIPTION:
Enterprise application hangs when it tries to use RMI-IIOP to send data across the wire. This hang seems to be happening on the client side.
PROBLEM CONCLUSION:
This defect was created to workaround an IBM® SDK bug. When the Object Request Broker (ORB) IIOPConnection.send() tries to send data over the wire, the SDK intermittently throws an InterruptedIOException back IIOPConnection.send() and eventually causes a hang on the ORB layer. To avoid this InterruptedIOException, ORB explicitly retries five times when this exception is thrown from the SDK. However, if the SDK continuously throws the same exception or IOException after 5 retries, ORB will hang again. To make ORB more robust, the ORB reader thread should be adjusted to avoid the potential dead lock in the ORB layer.
In one scenario, Web Methods were run as a Java™ client on Solaris™, connecting to WebSphere Application Server v3.5.5 stateful session bean on another Solaris host. This stateful session bean communicates to a stateless session bean on another remote v3.5.5 AIX node. The remote tier is actually two v3.5.5 nodes in the same domain, 01 and 02. 01 is the primary node and contains a model and cloned application server. The application server clone exists on 02. When the clone on 02 is stopped, the application does not connect to the clone that is still running.
Actual Exception:
=================
[1/15/02 13:29:34:329 CST] 21b220 ORBRas X
com.ibm.CORBA.iiop.IIOPConnection send Thread-0 The following exception was logged
java.io.InterruptedIOException:
at java.net.SocketOutputStream.socketWrite(Native Method)
at java.net.SocketOutputStream.write(Unknown Source)
at
com.ibm.CORBA.iiop.ClientRequestImpl.writeTo(ClientRequestImpl.java:336)
at
com.ibm.CORBA.iiop.IIOPConnection.send(IIOPConnection.java:1352)
at
com.ibm.CORBA.iiop.ClientRequestImpl.invoke(ClientRequestImpl.java:508)
...
If the client bean were running on AIX, it does recover. On Solaris, it does not.
Prerequisites
None
Installation instructions
Please review the readme for detailed installation instructions.