[omniORB] COMM_FAILURE vs NO_IMPLEMENT

Stephen Crawley crawley@dstc.edu.au
Wed, 23 Feb 2000 13:48:30 +1000


Andriy,

You wrote:
> my question/proposition concerns type of exception thrown in the
> case where client tries to perform operation on referenced object and
> its ORB while trying to establish TCP connection to the host/port
> specified in reference reveals that noone listens at the other end
> ("connection refused"). Currently omniORB (2.8.0) throws COMM_FAILURE
> which I think would be more appropriate for the case where client ORB
> cannot reach server due to network failures ("network unreachable",
> "host ubreachable" etc). It seems to me that sever hosting object not
> being run can not be treated as communication failure. In VisiBroker
> they use NO_IMPLEMENT to distinguish between these two cases. Perhaps,
> that would be useful to indroduce such difference into omniORB.

According to my reading of the CORBA 2.3 spec, a client ORB should raise
TRANSIENT if this occurs while attempting to connect before making an
operation invocation.  COMM_FAILURE should only be raised if there is
a comms problem between sending a request and receiving the reply.
NO_IMPLEMENT should >>not<< be raised.

This is all change barred in the 2.3 spec ...

-- Steve