Under what circumstances is TAG VSGN LOCATOR set in the tag member of the TaggedProfile structure in the IOR ?

From Support
Jump to: navigation, search

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