[omniORB] Multi-threaded clients

Robert Huffman rhuffman@measurecast.com
Tue, 8 May 2001 10:07:46 -0700 (PDT)


On Mon, 7 May 2001, Gary D. Duzan wrote:

> In Message <Pine.LNX.4.33.0105071608020.23140-100000@gatesofhell.measurecast.com> ,
>    Robert Huffman <rhuffman@measurecast.com> wrote:
>
> =>
> =>We're having a problem with multi-threaded Java clients connecting to a
> =>C++ OmniORB server.  To build the Java client, we use the idl2java
> =>compiler provided with Sun's JDK.
> =>
> =>It appears that any call to the server will block all the other threads
> =>that are trying to call the server.
>
>    It probably is an omniORB question, actually. OmniORB uses a
> thread-per-connection model, so if the client ORB sends all its
> requests over a single connection (as I suspect is happening in
> your case) they will all be handled by the single server thread,
> effectively serializing them...
>
> I understand the threading behaviour may be changing for omniORB 4,
> but others closer to the development can address that.

OK, that makes sense.  Now, the question is, is there a workaround (short
of doing something really whacky like breaking our client into multiple
processes).  I've tried a couple of things.  For example, I created a new
ORB for each request and invoked ORB.connect(Object), but that threw an
unknown CORBA exception.  Then I tried using DII and the
ORB.send_multiple_requests_deferred(Request[]) method, but the good folks
at Sun send the requests over the single connection sequentially, thus
resulting in the same behavior.

Any other ideas?

And does anyone know when omniORB 4 will be release?  Is there a feature
list somewhere?  (I couldn't access the link posted by Christof Meerwalt.)