| Summary | Is it possible to derive the implementation language from an IOR? | 
|---|---|
| Article Number | 15666 | 
| Environment | All Supported Operating Systems Orbix | 
| Question/Problem Description | Is it possible to derive the implementation language from an IOR? Can the ORB implementation be derived from an IOR? What kind of information about the implementation is available from an IOR? Is it possible to find the real endpoint location from an IOR? | 
| Clarifying Information | |
| Error Message | |
| Defect/Enhancement Number | |
| Cause | |
| Resolution | Ideally it should not be possible to derive any of this information from an IOR as one of the goals of CORBA was always transparency of ORB implementation. That said there is one minor place where you can get some information. Using iordump it does look into the object key and is able to guess what the IOR might be from: >> 84 [25][00][00][00] Object Key length: 37 bytes (including any trailing null) >> 88 [3a][3e][02][33][31][17][52][65][70][6c][69][63][61][74][65][64][53][69][6e][67][6c][65][74][6f][6e][50][4f][41][00][07][4c][6f][63][61][74][6f][72] Object key data: ':>.31.ReplicatedSingletonPOA..Locator' * no null character at end (warning) (looks like an Orbix ART Direct Persistent key) The iordump utility should be added to the PATH environment when the Orbix domain script is source. This utility can be run on a file that contains an IOR or directly on the IOR itself. Other useful information that can be sourced from the IOR is the host and port that client requests are directed to. If the POA which generated the IOR is indirect persistent then this will be the host and port of the locator and not that of the real server endpoint. For some IORs it may be possible to derive the POA from the Object Key which will look something like:                 Object Key length: 54 bytes (including any trailing null) >>  92 [3a][3e][02][32][31][12][6c][6f][63][6e][6f][64][65][6e][73][2e][6c][6f][ 63][61][74][69][6f][6e][14][49][54][5f][4e][61][6d][69][6e][67][43][6f][6e][74][ 65][78][74][45][78][74][00][08][00][00][00][00][00][00][02][00]                 Object key data: ':>.21.locnodens.location.IT_NamingContextExt..........' Note the object key is vendor specific and it will depend on what ORB implementation generated the IOR. In this case the Object Key was generated by Orbix 6 and we can tell this is from the Naming Service and the POA name is IT_NamingContextExt. We can then lookup the associated POA, ORB and process to find out where this is running: >itadmin poa list IT_NamingContextExt IT_ObjectGroupFactory IT_ObjectGroup IT_NamingServiceAdmin_iona_services.naming.NBDUBMMURPHY02 IT_MasterNamingContextExt_iona_services.naming.NBDUBMMURPHY02 IT_MasterObjectGroupFactory_iona_services.naming.NBDUBMMURPHY02 IT_MasterObjectGroup_iona_services.naming.NBDUBMMURPHY02 >itadmin poa show IT_NamingContextExt FQPN: IT_NamingContextExt   Active: yes (in iona_services.naming.NBDUBMMURPHY02)   Lifespan: persistent   ORB Names:     iona_services.naming.NBDUBMMURPHY02   Allow Replicas outside this list: yes   Load Balancing Algorithm:  <NONE>   Allow Dynamic Registration: no   Parent FQPN: <NONE>   Children FQPN: <NONE> >itadmin orbname show iona_services.naming.NBDUBMMURPHY02 ORB Name:       iona_services.naming.NBDUBMMURPHY02   Process Name: iona_services.naming.NBDUBMMURPHY02   Active:       yes >itadmin process show iona_services.naming.NBDUBMMURPHY02 Process Name: iona_services.naming.NBDUBMMURPHY02 Active: yes   PID: 50936   Start time: Wed, 11 Jul 2012 13:01:19.8430000   Activated: yes Description: iona_services.naming.NBDUBMMURPHY02 Startup Mode: on_demand Usually Monitored By: iona_services.node_daemon.NBDUBMMURPHY02 Startup Information:   Node Daemon Name: iona_services.node_daemon.NBDUBMMURPHY02     Path Name: C:\\apps\\Orbix\\6.3.5-VC10-x64\\asp\\6.3\\bin\\itnaming.exe     Arguments: -ORBdomain_name locnodens -ORBname iona_services.naming.NBDUBMMUR PHY02 -ORBconfig_domains_dir "C:\\apps\\Orbix\\6.3.5-VC10-x64\\etc\\domains"     Environment Variables: Inherited from Activation daemon     File Access Permissions:       User:  mamurphy       Group: nobody     File Creation Permissions:       Umask: 022     Current Directory: C:\\WindowsResource Limits: | 
| Workaround | |
| Notes | Here is some sample output: iordump IOR:01...snip...c00 Stringified IOR is: ([string/coded data] length: 432 / 214 bytes) >> IOR:01...snip...c00 ---------------------------------------------------------- >>  0 [01]         Byte order of IOR: (1) Little Endian >>  1 [00][00][00]         (padding) >>  4 [28][00][00][00]         TypeId length: 40 bytes (including null) >>  8 [49][44][4c][3a][6f][6d][67][2e][6f][72][67][2f][43][6f][73][4e][61][6d][6 9][6e][67][2f][4e][61][6d][69][6e][67][43][6f][6e][74][65][78][74][3a][31][2e][3 0][00]         TypeId value: 'IDL:omg.org/CosNaming/NamingContext:1.0.' >>  48 [01][00][00][00]         Number of tagged profiles: 1         Profile 1: >>  52 [00][00][00][00]                 Tag: (0) TAG_INTERNET_IOP >>  56 [9a][00][00][00]                 Profile length: 154 bytes >>  60 [01]                 Byte Order: (1) Little Endian >>  61 [01][02]                 Version: 1.2 >>  64 [0f][00][00][00]                 Host length: 15 bytes (including null) >>  68 [4e][42][44][55][42][4d][4d][55][52][50][48][59][30][32][00]                 Host string: 'NBDUBMMURPHY02.'                 (host name lookup succeeded, maps to IP address 10.2.9.7) >>  83 [00]         (padding) >>  84 [03][0c]                 Port: 3075                 (IANA allocated vendor IIOP port for: Progress Orbix ART Locator) >>  86 [00][00]         (padding) >>  88 [36][00][00][00]                 Object Key length: 54 bytes (including any trailing null) >>  92 [3a][3e][02][32][31][12][6c][6f][63][6e][6f][64][65][6e][73][2e][6c][6f][ 63][61][74][69][6f][6e][14][49][54][5f][4e][61][6d][69][6e][67][43][6f][6e][74][ 65][78][74][45][78][74][00][08][00][00][00][00][00][00][02][00]                 Object key data: ':>.21.locnodens.location.IT_NamingContextExt..........'                 (looks like an Orbix ART Indirect Persistent key) >>  146 [00][00]         (padding) >>  148 [03][00][00][00]                 Number of tagged components: 3                 Component 1: >>  152 [00][00][00][00]                         Tag: (0) ORB_TYPE >>  156 [08][00][00][00]                         Component length: 8 bytes >>  160 [01]                         Component Byte Order: (1) Little Endian >>  161 [00][00][00]         (padding) >>  164 [41][5f][54][49]                         Vendor ID: 0x49545f41, prefix: 'IT_', vendor: Micro Focus Software, ORB: Orbix ART 1.0                 Component 2: >>  168 [01][00][00][00]                         Tag: (1) CODE_SETS >>  172 [18][00][00][00]                         Component length: 24 bytes >>  176 [01]                         Component Byte Order: (1) Little Endian >>  177 [00][00][00]         (padding) >>  180 [01][00][01][00]                         Native CodeSet id (for char): 65537                         (ISO 8859-1:1987; Latin Alphabet No. 1) >>  184 [00][00][00][00]                         Number of conversion code sets (CCS): 0 >>  188 [00][01][01][00]                         Native CodeSet id (for wchar): 65792                         (ISO/IEC 10646-1:1993; UCS-2, Level 1) >>  192 [01][00][00][00]                         Number of conversion code sets (CCS): 1 >>  196 [09][01][01][00]                         CCS(1) CodeSet Id 65801                         (ISO/IEC 10646-1:1993; UTF-16, UCS Transformation Format  16-bit form)                 Component 3: >>  200 [06][00][00][00]                         Tag: (6) ENDPOINT_ID_POSITION >>  204 [06][00][00][00]                         Component length: 6 bytes >>  208 [01]                         Component Byte Order: (1) Little Endian >>  209 [00]         (padding) >>  210 [00][00]                         EndpointId begin (index): 0 >>  212 [2c][00]                         EndpointId end (index): 44 | 
| Attachment | 
| Created date: | 06 September 2011 | 
|---|---|
| Last Modified: | 13 February 2013 | 
| Last Published: | 11 July 2012 | 
| First Published date: | 10 September 2011 | 
#Orbix
#KnowledgeDocs

