Discussion:
Passing large array of objects to a SessionBean => SocketWriteError
(too old to reply)
Nicolas Devos
2005-02-09 09:25:27 UTC
Permalink
Hi,

we have a session bean whom API is:
Entity[] findEntity(EntityId[]);

When passing a large array of identifiers (~40000), we get almost
everytime the following exception on the client side after a delay of
4mn:

Exception : java.rmi.UnmarshalException: failed to unmarshal cookie;
nested exception is:
java.net.SocketException: Connection reset by peer: socket write error
java.net.SocketException: Connection reset by peer: socket write error

When we got this exception, we noticed that the session bean was not
called and that the socket was not actually open between the client and
the server: netstat on the client side showed the server ip, but
netstat on the server side did not show the client ip....

When we reduce the size of the array, everything works fine.

Thank you for your help

our config is weblogic 7.0sp1
ans we set the following params in our server config.xml:
CompleteT3MessageTimeout=480
MaxT3MessageSize=2000000000

The objects passed in are quite small, 200 bytes each, that make 10MB
for the input request.

Here is the stack of the client exception:

Exception : java.rmi.UnmarshalException: failed to unmarshal cookie;
nested exception is:
java.net.SocketException: Connection reset by peer: socket write error
java.net.SocketException: Connection reset by peer: socket write error
at
weblogic.rmi.internal.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:109)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:262)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:229)
at
refdata.ejb.ejbReferenceDataManagerBean_3ywtjc_EOImpl_WLStub.findEntity(Unknown
Source)
at
refdata.ejb.ejbReferenceDataManagerHelper.findEntity(ejbReferenceDataManagerHelper.java:189)
at
refdata.ReferenceDataManagerAccessor.findEntity(ReferenceDataManagerAccessor.java:147)
at
refdata.ReferenceDataManager.findEntity(ReferenceDataManager.java:141)
Nicolas Devos
2005-02-11 14:06:17 UTC
Permalink
hi,

Just a quick post to tell you that we found the problem. (FYI we are
running weblo 7.0sp1 on linux JRockit).

We thought we were using nativeIO as the nativeIO property was set to
true in the config.xml. However we did not use the libmuxer.so library
as someone told us that there were some incompatibility with JRockit.

With a closer look at the server log, we found several warning:
"There are : 4 active sockets, but the maximum number of socket readers
allowed by the configuration is : 3, you may want to alter your
configuration" which states that nativeIO is DISABLED !!

We then decided to use the libmuxer.so library and everything started
to work fine. Clients stop waiting forever to get a connection to the
server and everything is now running smoothly.

So if someone get the same problem, USE nativeIO with the libmuxer.so
library !!!

Nicolas
Post by Nicolas Devos
Hi,
Entity[] findEntity(EntityId[]);
When passing a large array of identifiers (~40000), we get almost
everytime the following exception on the client side after a delay of
Exception : java.rmi.UnmarshalException: failed to unmarshal cookie;
java.net.SocketException: Connection reset by peer: socket write error
java.net.SocketException: Connection reset by peer: socket write error
When we got this exception, we noticed that the session bean was not
called and that the socket was not actually open between the client and
the server: netstat on the client side showed the server ip, but
netstat on the server side did not show the client ip....
When we reduce the size of the array, everything works fine.
Thank you for your help
our config is weblogic 7.0sp1
CompleteT3MessageTimeout=480
MaxT3MessageSize=2000000000
The objects passed in are quite small, 200 bytes each, that make 10MB
for the input request.
Exception : java.rmi.UnmarshalException: failed to unmarshal cookie;
java.net.SocketException: Connection reset by peer: socket write error
java.net.SocketException: Connection reset by peer: socket write error
at
weblogic.rmi.internal.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:109)
Post by Nicolas Devos
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:262)
Post by Nicolas Devos
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:229)
Post by Nicolas Devos
at
refdata.ejb.ejbReferenceDataManagerBean_3ywtjc_EOImpl_WLStub.findEntity(Unknown
Post by Nicolas Devos
Source)
at
refdata.ejb.ejbReferenceDataManagerHelper.findEntity(ejbReferenceDataManagerHelper.java:189)
Post by Nicolas Devos
at
refdata.ReferenceDataManagerAccessor.findEntity(ReferenceDataManagerAccessor.java:147)
Post by Nicolas Devos
at
refdata.ReferenceDataManager.findEntity(ReferenceDataManager.java:141)
Loading...