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.