[omniORB] Problem with multi-threading omniORB/ORBacus for Java !?
Peter-Rene Steiner
peter-rene.steiner@bruker.de
Tue, 27 Mar 2001 19:00:22 +0200
Hello all,
I got a problem concerning multi-threading awareness of
omniORB and ORBacus (using omniORB 3.0.2, JOB 4.0.5,
Windows NT 4.0 SP6a, MSVC6++/SP3).
The details:
Let us a have a simple interface like the echo example: here the server
has only one method that prints a text, sleeps for 5 seconds, then returns.
The client creates a number of threads (say 20) all calling this one method
nearly at the same time.
1. Using omniORB for client and server. [C++/C++]
I have set "omniORB::maxTcpConnectionPerServer = 15;" in server and client sources.
Everything works as expected: 15 calls are accepted, 5 seconds delay,
for each returning call another waiting thread comes in; so there are 5
calls waiting in a second phase, finally after a total of 10 seconds everything is done.
Great.
2. Using ORBacus for Java for the client. [J/C++]
Server executable unchanged, still omniORB.
I have set
props.put("ooc.orb.conc_model", "threaded");
props.put("ooc.orb.oa.conc_model", "thread_per_request");
in the Java code as documented by OOC. Now 20 threads are starting and calling,
but each 5 seconds one call returns, another comes in, after a total of 100 seconds
the job is done. The calls seem to be serialized.
Not great.
3. Using same JOB client with a server created with JOB. [J/J]
Works as expected.
4. Using the omniORB client from (1.) with that JOB server from (3.) [C++/J]
Works as expected.
Any ideas? Maybe I can post the sources, but some first thoughts would be fine!
Greetings,
Peter-Rene Steiner