Issues for Object Reference Template Finalization Task Force discussion list
To comment on any of these issues, send email to ort-ftf@omg.org. (Please include the issue number in the Subject: header, thusly: [Issue ###].) To submit a new issue, send email to issues@omg.org.
List of issues (green=resolved, yellow=pending Board vote, red=unresolved)
Issue 4440: Object Adapter name problem in ORT
Issue 4445: Interoperability of ObjectReferenceTemplate and Factory.
Issue 4476: There is no way to modify a POA's ORT and append to it
Issue 4478: Creating IORs
Issue 4440: Object Adapter name problem in ORT (ort-ftf)
Click here for this issue's archive.
Source: Oracle (Mr. Ken Cavanaugh, nobody)
Nature: Uncategorized Issue
Severity:
Summary:
The adopted specification for the Object Reference Template is
ptc/01-04-03. This specification introduces adapter names for
object adapters. Adapter names are needed in the definition of the
ObjectReferenceTemplate abstract valuetype. An AdapterName is
simply a sequence of strings that is used to identify an
instance of an object adapter.
In the case of the POA, the spec defines the AdapterName as follows
in section 21.5.2.1:
In the case of the POA, the adapter name shall be the sequence
of names starting with the root POA that is required to reach
the POA using the find_POA call. The name of the root POA is
the empty sequence.
Also, in section 21.3.14.6:
The adapter_name attribute defines a name for the object adapter that
services requestws for the invoked object. In the case of the POA,
the adapter_name is the sequence of names from the root PAO to the POA
that services the request. The root POA is not named in this sequence.
The problem here is that the POA occupies the entire name space of
possible adapter names, so an ORB that supports other proprietary
object adapters cannot unambiguously identify instances of other
object adapter through ServerRequestInfo.adapter_name.
Resolution: Update the specification so that the Object Adapter ID of the root POA is { "RootPOA" }
Revised Text: Replace the last paragraph of section 21.5.2.1 with:
In the case of the POA, the adapter name of a POA instance shall be the sequence of names starting with the root POA that is required to reach the POA instance using the find_POA call. The name of the root POA is the sequence containing only the string "RootPOA".
Replace section 21.3.14.6 with:
The adapter_name attribute defines a name for the object adapter that services requests for the invoked object. In the case of the POA, the adapter_name is the sequence of names from the root POA to the POA that services the request. The name of the root POA is the sequence containing only the string "RootPOA".
Actions taken:
July 30, 2001: received issue
April 26, 2010: closed issue
April 26, 2010: closed issue
Issue 4445: Interoperability of ObjectReferenceTemplate and Factory. (ort-ftf)
Click here for this issue's archive.
Source: Borland Software Corporation (Mr. Vijaykumar Natarajan, nobody)
Nature:
Severity:
Summary: Nothing in the specs (I think the submission does say this somewhere)
say that the valuetypes defined in this spec and implemented by the ORB
vendor are not expected to be transmitted across different ORB
implementations.
Proposal:
Add paragraph to 51.5.3.1:
Concrete definitions and implementations of ObjectReferenceTemplate and
ObjectReferenceFactory are ORB implementation specific and are not
defined as they are not expected to be exchanged between ORB
implementations.
Resolution: Add a clarification to the specification
Revised Text: Add the following paragraph to the end of section 21.5.3.1:
Concrete definitions and implementations of ObjectReferenceTemplate and ObjectReferenceFactory are ORB implementation specific and are not defined as they are not expected to be exchanged between ORB implementations
Actions taken:
August 2, 2001: received issue
April 26, 2010: closed issue
April 26, 2010: closed issue
Issue 4476: There is no way to modify a POA's ORT and append to it (ort-ftf)
Click here for this issue's archive.
Source: Borland Software Corporation (Mr. Vijaykumar Natarajan, nobody)
Nature: Uncategorized Issue
Severity:
Summary: If I wish to register an ORF (ObjectReferenceFactory) as the current
factory, there is no way for it to append to the current template. In
other words, an updated factory can only replace the original but not
say add another profile to the one the given POA would generate w/ the
adapter template.
As an inverse, there is no way for a POA to require or even request an
ORF to include profiles that it deems fit.
Proposal:
Add a parameter to make_object
Object make_object( in string repositoryId, in ObjectId id,
ObjectReferenceTemplate template);
Add the following methods to ObjectReferenceTemplate
abstract valuetype ObjectReferenceTemplate : ObjectReferenceFactory {
readonly attribute ServerId server_id ;
readonly attribute ORBId orb_id ;
readonly attribute AdapterName adapter_name;
ProfileSeq getProfiles(in string repositoryId, in ObjectId id);
ComponentSeq getComponents(in IOP::ProfileId profile_id);
};
where ProfileSeq is defined as
module IOP {
typedef sequence <TaggedProfile> ProfileSeq;
typedef sequence <TaggedComponent> ComponentSeq;
}
Add the following sections:
21.5.3.8 getProfiles
This returns the set of profiles that the POA would have generated using
its default template. This can optionally be included in the generated
IOR.
[ED: This is independent of make_object, because make_object returns an
object reference from which profiles would have to be extracted for
inclusion]
21.5.3.9 getComponents
This returns set of components that would have been include in the
profile with the id profile_id and allows the factory to choose to
include those in the profiles that it generates.
Resolution: see above
Revised Text: Raise an interop issue to update the appropriate version of the core spec Chapter 13 as follows:
In the IDL for module IOP in section 13.6.2, add
typedef sequence <TaggedProfile> TaggedProfileSeq ;
and replace the anonymous sequence <TaggedProfile> with TaggedProfileSeq
Update the ORT specification (ptc/01-04-03) as follows:
Change the IDL for ObjectReferenceFactory in section 21.5.3.1 and in section 21.10 as follows:
abstract valuetype ObjectReferenceFactory {
boolean equals( in ObjectReferenceFactory other ) ;
Object make_object( in string repository_id,
in ObjectId id ) ;
IOP::TaggedProfileSeq make_profiles( in string repository_id,
in ObjectId id ) ;
} ;
Change section 21.5.3.3 to read (that is, delete the last two sentences in the section):
make_object creates an Object Reference from this factory using the given repository ID and object ID.
Add new sections:
21.5.3.4 make_profiles
make_profiles returns the sequence of tagged profiles for the IOR that corresponds to the object reference that would be created by a call to make_object with the same arguments.
21.5.3.5 equals
equals satisfies the usual reflexive, symmetric, and transitive properties that equality normally respects. That is, for any ObjectReferenceFactories X, Y, and Z:
X.equals( X ) = true
X.equals( Y ) = Y.equals( X )
if X.equals( Y ) = true and Y.equals( Z ) = true, then X.equals( Z ) = true
If X and Y are different object adapters, and Xinfo and Yinfo are the IORInfo objects passed to the IORInterceptor, then Xinfo.adapter_template().equals( Yinfo.adapter_template() ) = false
An equals method on a user defined ObjectReferenceFactory must return false when passed the value of an IORInfo.adapter_template attribute, unless the user defined make_profiles method returns the same ProfileSeq as the adapter_template make_profiles method when invoked with the same arguments, in which case the user defined ObjectReferenceFactory equals method may return true.
renumber current sections 21.5.3.4-21.5.3.7 to 21.5.3.6-21.5.3.9
Actions taken:
August 12, 2001: received issue
April 26, 2010: closed issue
April 26, 2010: closed issue
Discussion: After a long discussion, we agreed on the following summary of this issue:
Users of ORT may wish to accommodate the following two scenarios:
The birth address optimization: when a persistent objref is created, include the profile(s) for the transient address of the server as well as the profile(s) that contain the permanent IOR address.
In a complex system with multiple authentication servers, the IMR and other CORBA servers may not all support the same authentication policies. This leads to a need for the IMR to construct a transient objref that points to the current incarnation of a persistent server and has security information in the IOR that is appropriate for that particular server.
These scenarios are somewhat awkward to address with the current ORT definition for several reasons. The issue here focuses on the following problems:
A user defined IORInterceptor may need to determine whether the current_factory and adapter_template are actually the same valuetype or not.
Getting access to the profiles in an object reference is quite cumbersome, and possibly not portable.
Resolution:
Add operations on the ObjectReferenceFactory to test for equality and generate a sequence of tagged profiles
Issue 4478: Creating IORs (ort-ftf)
Click here for this issue's archive.
Source: Borland Software Corporation (Mr. Vijaykumar Natarajan, nobody)
Nature: Uncategorized Issue
Severity:
Summary: > // ulgy conversion to objectref: we should think about
> // creating utilities for IOR<->objref conversion
I meant to raise that second issue (the ugly IOR to ObjRef conversion).
It is too painful and I think we should address it. I can think of a few
possible solutions.
1. have make object just return profiles, so the ORB can do the
conversion internally.
2. Add a method on the ORT to provide this functionality
3. Add a separate CODEC interface to manufacture IORs from Profiles
(IORFactory, rir etc)
Resolution: Undo the resolution of issue 4476 and close 4478 no change
Revised Text: The revisions are based on the changes introduced by the resolution to issue 4476, so all numbers here assume that 4476 was applied to the Final Adopted specification. The details are as follows:
There is no interop or editorial issue for creating a TaggedProfileSeq.
The equals and make_profiles operations are removed from ObjectReferenceFactory.
Restore section 21.5.3.3 to its state pre vote 2. This section should then read in full: make_object creates an Object Reference from this factory using the given repository ID and object ID. All object refrences created from the same factory share the same profiles and tagged components in their profiles. They may also share some of the data in their object keys, but this is not required.
Remove sections 21.5.3.4 and 21.5.3.5.
Renumber sections 21.5.3.6-21.5.3.9 to 21.5.3.4-21.5.3.7.
Close issue 4478 no change.
Note: in writing the report, I realized that this resolution was incomplete, in that the resolution did not mention updating the IDL in sections 21.5.3.1 and 21.10 to remove the equals and make_profiles operations. However, it should be clear from the context that this was the intention, since the purpose of the accepted resolution to issue 4478 was to declare the requested functionality out of scope, which required undoing the adopted resolution to 4476, which included the IDL changes.
Actions taken: Incorporate change and close issue.
August 14, 2001: received issue
Content-Type: APPLICATION/octet-stream; name="ptc.01-08-31.zip"; x-unix-mode=0664
Content-Description: ptc.01-08-31.zip
Content-MD5: 6GMZ3w+dK8+vqcq1on3++w==
Actions taken:
August 14, 2001: received issue
April 26, 2010: closed issue
April 26, 2010: closed issue
Discussion: I meant to raise that second issue (the ugly IOR to ObjRef conversion). I can think of a few possible solutions:
Have make_object just return profiles, so the ORB can do the conversion internally.
Add a method on the ORT to provide this functionality.
Add a separate CODEC interface to manufacture IORs from profiles (IORFactory, rir, etc.)
--------------------------------------------------------------------------------
After much discussion, a proposal was put forth to declare the intended usages behind issues 4476 and 4478 as out of scope for the ORT specification. This proposal passed in Vote 3.