Re: Question in Orbeline (fwd)

Jayakumar Muthukumarasamy ([email protected])
Thu, 13 Apr 1995 14:12:40 -0400 (EDT)

Ewald,

Here is the reply I got from Orbeline about the problem. It is
exacly what we figured. But the message below has a couple of solutions too.
The first one is quite obvious. But is works only when things are asynchronous.
The second one, however, is more general, and works for both synchronous, and
asychronous methods.

-jk

Forwarded message:
> From [email protected] Thu Apr 13 13:32:54 1995
> Date: Thu, 13 Apr 1995 10:35:45 +0800
> From: [email protected] (Neguine Navab)
> Message-Id: <9504131735.AA17308@dali>
> To: [email protected]
> Subject: Re: Question in Orbeline
> X-Sun-Charset: US-ASCII
> Content-Length: 1493
>
> Jayakumar,
> Sorry for not getting back to you earlier. It has been very busy around
> here lately.
>
> I looked into the problem you had reported. The set/get attributes
> are straightforward. The problem originates from when you try
> to print_obj_id.
>
> Your client application call print_obj_id with the object reference
> of my_object.
>
> print_obj_id on the server side has to make an ORB call to get the id
> of my_object instance. But since print_obj_id is already in a call,
> it deadlocks when it tries to make a new call. The reason for this
> is that the ORB can be receiving and processing one message at a
> time when threads are not used. If you use a multi-threaded
> version of ORBeline, you wouldn't encounter this problem.
> But unfortunately since you are using SunOS, there is not thread
> support for that platform.
>
> An easy way of getting around this problem is to make the call
> to print_obj_id a oneway call. That way you can make your
> call. The print_obj_id will return immediately and you will
> be free to make the call to o->id().
> interface object_server {
> oneway void print_obj_id(in my_object id);
> };
>
> Another solution would be to pass the name of the myObject object
> to print_obj_id instead of an object reference and do a _bind
> in the server to the myObject object. In that case ORBeline will
> determine that the object is local and bypass the ORB.
>
> This is kind of hard to explain in e-mail. If my message is not
> clear, please let me know and I will try to clarify the point.
>
> Neguine
>