[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.)