IOR-Analyse Tool

Download: ior.zip (18.04.1999, 10 KByte)

Mit der Einführung des Internet Inter-ORB Protokolls (IIOP) gewann das Thema CORBA-Interoperabilität eine neue Qualität. Dank des IIOP können Objekte, die in unterschiedlichen Sprachen implementiert sind oder auf unterschiedlichen Plattformen laufen, transparent miteinander kommunizieren. Die Verfügbarkeit von TCP/IP ist die einzige Voraussetzung, denn das IIOP ist die Umsetzung des General Inter-ORB Protokolls auf Basis von TCP/IP.

Das GIOP selbst ist unabhängig von irgendeiner Transportschicht, es läßt sich somit auf unterschiedliche Netzwerkprotokolle abbilden. Auf diese Weise ist es auch möglich, aus einer TCP/IP-Domain, Objekte einer anderen Domain, die zum Beispiel IPX verwendet, aufzurufen. In solch einem Fall wird eine Brücke benötigt, die die GIOP-Nachrichten zwischen den beiden Protokollen überträgt. Woher weiß jedoch ein ORB, in welcher Domain ein Objekt liegt, beziehungsweise, welches Protokoll es verwendet?

Diese Angaben sind in der Interoperable Object Reference (IOR) eines Objekts enthalten, und die sollte sich von jedem ORB in jeder Domain analysieren lassen. Den Anfang der IOR bildet ein Octet, das die Byte-Order angibt. Eine eins steht für Little-Endian, eine null für Big-Endian. Damit obliegt es dem Empfänger einer IOR, die Bytefolge bei Bedarf umzustellen. Danach folgt ein String, der die Typ-ID der Objekt-Referenz enthält. An die Typ-ID schließt sich eine Sequence mit Profilen an, die alle Protokolle enthalten, über die das betreffende CORBA-Objekt zu erreichen ist. Jedes Profil besteht aus einer Profil-ID und den profilabhängigen Daten.

Zwei Profil-IDs sind in dem IDL-Modul IOP spezifiziert: TAG_INTERNET_IOP für IIOP-Profile und TAG_MULTIPLE_COMPONENTS für Profile, die aus mehreren Komponenten bestehen. Es können aber auch weitere, herstellerspezifische Profil-IDs und -daten vorkommen. Hat ein Profil die Kennung TAG_INTERNET_IOP, so ist die IDL-Struktur IIOP::ProfileBody als Bytefolge in den Profildaten gespeichert:

module IIOP {
struct Version {
char major;
char minor;
};

struct ProfileBody {
Version iiop_version;
string host;
unsigned short port;
sequence object_key;
};
};


In den Fällen, in denen sich eine IOR nicht einfach als Folge von Bytes zwischen Domains übertragen läßt, kann man sie auch in einen String umwandeln. Dies erfolgt mittels der Common Data Representation (CDR), bei der jedes Octet durch jeweils zwei hexadezimale Zeichen repräsentiert wird. In dem ersten Zeichen stehen dann die oberen vier Bits eines Octets, in dem zweiten die unteren vier. Vor die kodierte Referenz wird zudem der String »IOR:« gestellt.

Unser kleines IOR-Anaylse Tool kann Referenzen, die mittels CDR kodiert sind, wieder in eine lesbare Form umwandeln. In der Hauptdatei »IORTest.java« sind auch einige Beispiel-IORs enthalten. Die letzte der fünf Referenzen sieht in der CDR-Darstellung folgendermaßen aus:

IOR:012020202100000049444c3a434f5242416e65742f526f
6f6d496e666f726d6174696f6e3a312e300020202002000000
0153495670000000010101200500000073756e6700202020d7
000000010000004e00000001504d4300000000210000004944
4c3a434f5242416e65742f526f6f6d496e666f726d6174696f
6e3a312e30002020201a000000564953494f5242202d20494f
4e414f52422054455354494e4700202000000000000000006a
000000010100200c0000003139322e3136382e312e33006004
20204e00000001504d43000000002100000049444c3a434f52
42416e65742f526f6f6d496e666f726d6174696f6e3a312e30
002020201a000000564953494f5242202d20494f4e414f5242
2054455354494e4700

Die Ausgabe des Java-Programms zeigt, daß die IOR zwei Profile enthält. Das erste Profil hat eine unbekannte Profile-ID, bei der zweiten Profile-ID handelt es sich um TAG_INTERNET_IOP. Das betreffende CORBA-Objekt kann folglich auch mit Hilfe von IIOP mit anderen Objekten kommunizieren.

Type ID : IDL:CORBAnet/RoomInformation:
1.0
Number of profiles : 2
Profile No. 1
New tag : 1447645953
Profile data : ??? ? sung Î ? N ?
PMC ! IDL:CORBAnet/RoomIn
formation:1.0 ? VISIORB
- IONAORB TESTING
Profile No. 2
Tag : TAG_INTERNET_IOP
Version.major : 1
Version.minor : 0
Host : 192.168.1.3
Port : 1120
Object key : ?PMC ! IDL:CORBAnet
/RoomInformation:1.0
? VISIORB - IONAORB TESTING

   
   

© 1997-2007 Entrance Software GmbH