I am experiencing serious trouble with a multithreaded rich Java client that performs a lot of EJB calls to stateless EJBs on JBoss3.2.2. We have 10 threads and each thread performs about 5-10 method calls pr second.
The problem is that some of the treads gets locked in the remote EJB method call and never returns. This seems to happen when two or more threads performs a method call almost simoultanesly.
A lot of debugging has proven that the JRMPInvokerProxy.invoke() nevern returns.
1. Each thread has its own InitialContext and JAAS LoginContext (standard ClientLoginModule). The JAAS client config file auth.conf shows:
2. We use the DatabaseLoginModule (Sybase database) on server side.
3. We use the default JRMPInvoker with JBoss.
4. Both client and JBoss server runs on JDK131 for Unix SPARC 64 bit. The same problem occurs when client and server runs on Windows 2000 JDK 131.
I would appreciate any comments on this issue. Perhaps there is another Invoker than the JRMPInvoker that is better? Or should I treat the InitialContext or JAAS logincontext differently?
I found out of it. The problem had nothing to do with the JRMPInvoker. The problem was og general art, serializing parameters in the different EJB method call for each thread. Some parameters were Hashtables that contained shared value objects between the different threads. Locks and dead locks occured when these synchronized Hashtables were serialized.