-
Key: CORBA3-66
-
Legacy Issue Number: 5430
-
Status: closed
-
Source: Oracle ( Ken Cavanaugh)
-
Summary:
I have recently realized that there is a serious backward compatibility
issue in the PI changes introduced by the Object Reference Template.
The problem is in the IORInterceptor. The original PI specification
defined only the establish_components method on IORInterceptor.
ORT added 3 new methods to this interface: components_established,
adapter_state_changed, and adapter_manager_state_changed.The compatibility problem arises with the Java mapping. Prior to
the CORBA 3.0 IDL to Java mapping, local interfaces were simply
mapped to interfaces. The mapping for the CORBA 3.0 IORInterceptor
is then simply:public interface IORInterceptorOperations
{ void establish_components (org.omg.PortableInterceptor.IORInfo info); void components_established (org.omg.PortableInterceptor.IORInfo info); void adapter_manager_state_changed (int id, short state); void adapter_state_changed ( org.omg.PortableInterceptor.ObjectReferenceTemplate[] templates, short state); }
extends org.omg.PortableInterceptor.InterceptorOperationspublic interface IORInterceptor extends IORInterceptorOperations,
org.omg.PortableInterceptor.Interceptor, org.omg.CORBA.portable.IDLEntity
{
}Any client of PI that implements IORInterceptor from CORBA 2.6 defines only the
establish_components method, so that client will fail on a CORBA 3.0 version of PI.I propose the following changes to the draft CORBA 3.0 spec to fix this problem:
In Section 21.5.4, replace the definition of IORInterceptor with:
local interface IORInterceptor : Interceptor
{ void establish_components( in IORInfo info ) ; };
local interface IORInterceptor_3_0 : IORInterceptor
{ void components_established( in IORInfo info ) ; void adapter_manager_state_changed( in AdapterManagerId id, in AdapterState state ) ; void adapter_state_changed( in ObjectReferenceTemplateSeq templates, in AdapterState state ) ; };
Replace the first sentence in 21.5.4.2 with:
After all of the establish_components methods have been called, the
components_established methods are called on all registered IORInterceptor_3_0
instances.Replace the first sentence in 21.5.4.3 with:
Any time the state of an adapter manager changes, the adapter_manager_state_changed
method is invoked on all registered IORInterceptor_3_0 instances.Replace the first sentence in 21.5.4.4 with:
Adapter state changes unrelated to adapter manager state changes are reported by
invoking the adapter_state_changed method on all registered IORInterceptor_3_0
instances. -
Reported: CORBA 3.0 — Fri, 14 Jun 2002 04:00 GMT
-
Disposition: Resolved — CORBA 3.0.2
-
Disposition Summary:
Resolve urgently as suggested
-
Updated: Fri, 6 Mar 2015 20:58 GMT
CORBA3 — Serious backward compatibility issue in the PI
- Key: CORBA3-66
- OMG Task Force: Core 2002 RTF