Under what circumstances is TAG VSGN LOCATOR set in the tag member of the TaggedProfile structure in the IOR ?
Question:
Under what circumstances is TAG_VSGN_LOCATOR set in the tag member of the TaggedProfile structure in the IOR ?
What is the value of TAG_VSGN_LOCATOR is supposed to be?
(This information applies to VBJ 3.x and VBC++ 3.x)
Answer:
The TAG_VSGN_LOCATOR is set when a stub is created for a VisiBroker _bind() call.
Both the VBJ and VBC++ ORBs have utility functions that allow the ORB to create an IOR with this tag strictly from a repository Id and an object name. The IOR is placed into a stub so that when the ORB tries to bind it encounters the special tag an knows that it must query the osagent for a real IOR. It can only be seen in a pure stub before it has been bound to an object (for example the IOR passed to a bind interceptor may have this tag). It should not possible to export an IOR that contains a profile with this tag and no other ORB vendor should encounter it in a VisiBroker IOR.
TAG_VSGN_LOCATOR is defined (in C++) as follows:
const IOP::ProfileId IOP::TAG_VSGN_LOCATOR = 0x56495300;
An application should almost never need to know this. No legitimate object reference created under normal means and examined outside of a bind interceptor should encounter this tag.
Normally there may be non-standard or proprietary profiles in an IOR so if an application parses an IOR it should skip anything that is not an IIOP profile. In the case of a bind interceptor that usually leads to logic to handle the case where no IIOP profile is present. At this point there is little that a typical application can do to respond other than roll a complete IOR from scratch, or let the normal bind proceed and move the logic over to the bind_succeeded interceptor function depending on teh intention of teh application.
Article originally contributed by