-
Key: CORBA26-96
-
Legacy Issue Number: 4747
-
Status: closed
-
Source: Oracle ( Ken Cavanaugh)
-
Summary:
The Java RTF recently passed a resolution to fix some problems with the
use of portable interceptors with the co-located call optimization. This
resolution introduced a new abstract class ServantObjectExt that extends
org.omg.CORBA.portable.ServantObject with methods for reporting
normal and exceptional completion of the co-located call.When we look at the issue of mixed versions of stubs and ORBs with
this change, there is one case that is particularly interesting:
an old stub (uses only ServantObject) with a new ORB (provides
ServantObjectExt). In this case, the ORB can detect that an old
stub was used, because neither one of the two new methods was called.
However, this leaves the ORB with no way to report the reply status
correctly in the RequestInfo::reply_status attribute.To handle this special case, I propose that we add a new value of
UNKNOWN for the reply status. This will only be used if the ORB
cannot determine the reply status of an operation. This occurs
with any co-located optimized call with the existing Java mapping.
With the passage of the resolution to issue 4701, the scope of
this occurence is smaller but still possible.Revised text:
In section 21.3.12.10, add after PortableInterceptor::TRANSPORT_RETRY:
PortableInterceptor::UNKNOWN
In section 21.3.12.10, replace the third bullet under client with:
Within the receive_other interception point, this attribute will
be any of: SUCCESSFUL, LOCATION_FORWARD, TRANSPORT_RETRY, or UNKNOWN.
SUCCESSFUL means an asynchronous request returned successfully.
LOCATION_FORWARD means that a reply came back with LOCATION_FORWARD
as its status. TRANSPORT_RETRY means that the transport mechanism
indicated a retry - a GIOP reply with a status of NEEDS_ADDRESSING_MODE,
for instance. UNKNOWN means that the ORB was unable to determine
the correct status. This can occur for example in the Java language
mapping when the optimized path for a co-located call is used.In section 21.3.12.10, replace the third bullet under server with:
Within the send_other interception point, this attribute will
be any of: SUCCESSFUL, LOCATION_FORWARD, or UNKNOWN.
SUCCESSFUL means an asynchronous request returned successfully.
LOCATION_FORWARD means that a reply came back with LOCATION_FORWARD
as its status. UNKNOWN means that the ORB was unable to determine
the correct status. This can occur for example in the Java language
mapping when the optimized path for a co-located call is used.In section 21.10, add the following after const ReplyStatus TRANSPORT_RETRY = 4:
const ReplyStatus UNKNOWN = 5;
-
Reported: CORBA 2.5 — Wed, 12 Dec 2001 05:00 GMT
-
Disposition: Resolved — CORBA 2.6
-
Disposition Summary:
No Data Available
-
Updated: Fri, 6 Mar 2015 21:38 GMT