[jacorb-developer] _non_existent throws OBJECT_NOT_EXIST instead of returning true

Lothar Werzinger lothar at tradescape.biz
Thu Sep 27 19:13:25 CEST 2012


Hi,

I am using JacORB version: 2.3.0

I am calling _non_existent and I get a org.omg.CORBA.OBJECT_NOT_EXIST thrown.

org.omg.CORBA.OBJECT_NOT_EXIST: Server-side Exception: null  vmcid: OMG  minor 
code: 2  completed: No
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at 
org.jacorb.orb.SystemExceptionHelper.read(SystemExceptionHelper.java:223)
	at org.jacorb.orb.ReplyReceiver.getReply(ReplyReceiver.java:321)
	at org.jacorb.orb.Delegate.invoke_internal(Delegate.java:1074)
	at org.jacorb.orb.Delegate.invoke(Delegate.java:939)
	at org.jacorb.orb.Delegate.non_existent(Delegate.java:1532)
	at org.omg.CORBA.portable.ObjectImpl._non_existent(ObjectImpl.java:137)


AFAIK _non_existent can throw any exception except CORBA.OBJECT_NOT_EXIST, 
where it is supposed to return *true*. So I assume this is a true bug in 
JacORB. Can anyone confirm this?


Excerpt from the CORBA standard:

4.3.5.1 non_existent
boolean non_existent ();
The non_existent operation may be used to test whether an object (e.g., a 
proxy object) has been destroyed. It does this without invoking any 
application level operation on the object, and so will never affect the object 
itself. It returns true (rather than raising CORBA::OBJECT_NOT_EXIST) if the 
ORB knows authoritatively that the object does not exist; otherwise, it 
returns false.
Services that maintain state that includes object references, such as bridges, 
event channels, and base relationship services, might use this operation in 
their “idle time” to sift through object tables for objects that no longer 
exist, deleting them as they go, as a form of garbage collection. In the case 
of proxies, this kind of activity can cascade, such that cleaning up one table 
allows others then to be cleaned up.
Probing for object non-existence may require contacting the ORB that 
implements the target object. Such an attempt may fail at either the local or 
the remote end. If non- existent cannot make a reliable determination of 
object existence due to failure, it raises an exception in the calling 
application code. This enables the application to distinguish among the true, 
false, and indeterminate cases.



Thanks in advance!

Lothar
-- 
Lothar Werzinger
Principal Architect
Tradescape, Inc. - Enabling Efficient Digital Marketplaces
+1-650-931-6719 (direct)
+1-800-687-6088 (main)
+1-800-918-3449 (fax)
lothar at tradescape.biz
http://www.tradescape.biz

This message and any attachment (the "message") is intended solely for the
addressees and is confidential. If you receive this message by mistake,
please delete it and notify the sender immediately. Any use not in
accordance with its purpose, any out-spread or disclosure, either as a whole
or partially, is prohibited except with formal approval. Internet cannot
guarantee the integrity of this message, therefore Tradescape will not be
liable for the message if modified.



More information about the jacorb-developer mailing list