Bemerkungen zum ORBit-ORB
// Einfachstes beispiel für Corba
interface Hallo
{
void gruss(in string name,in short mal);
void test();
};
Der Hallo-Server wird mit
./hallo-server -ORBIIOPIPv4=1 -ORBIIOPv6=0 -ORBIIOPUSock=0gestartet, d.h er hat nur eine IIOP-IPv4-Adresse.
Die IOR-Adresse (gibt er mit object_to_string auf stdio aus), ist sowohl mit dem iordump bon MICO als auch dem ior-decode von ORBit interpretierbar.
Mit Corba-Script (hier mit einer auf MICO-basierender Version) können wir den Server ansprechen:
bash-2.03$ cssh
CorbaScript 1.3.4 (Apr 7 2001) for MICO 2.3.5 for C++
Copyright 1996-2001 LIFL, France
>>> hallo=Hallo("IOR:010000000e00000049444c3a48616c6c6f3a312e30000000010000000000000034000000010100000b0000007277732e696e7465726e000027060000180000000000000039d6743b4009d23f01000000efa5c6b799e4d815");
>>> hallo._type
< OMG-IDL interface Hallo {
void gruss (in string name, in short mal);
void test ();
}; >
>>> hallo.test();
>>> hallo.gruss("Kippenhausen",1);
>>>
Und siehe, es geht ....
orbit-name-server -ORBIIOPIPv4=1 > /tmp/orbit_ns_iorgestartet.
bash-2.03$ nsadmin -ORBNamingIOR=`cat /tmp/orbit_ns_ior `
CosNaming administration tool for MICO(tm)
nsadmin> ls
nsadmin> cat hallo
IOR:010000000e00000049444c3a48616c6c6f3a312e30000000010000000000000034000000010100000b0000007277732e696e7465726e000027060000180000000000000039d6743b4009d23f01000000efa5c6b799e4d815
nsadmin> repoid hallo
IDL:Hallo:1.0
nsadmin> url hallo
we aren't talking to an Interoperable Naming Service
nsadmin> locurl hallo
corbaloc::rws.intern:1575/%00%00%00%009%d6t;@%09%d2?%01%00%00%00%ef%a5%c6%b7%99%e4%d8%15
nsadmin> iordump hallo
Repo Id: IDL:Hallo:1.0
IIOP Profile
Version: 1.0
Address: inet:rws.intern:1575
Location: corbaloc::rws.intern:1575/%00%00%00%009%d6t;@%09%d2?%01%00%00%00%ef%a5%c6%b7%99%e4%d8%15
Key: 00 00 00 00 39 d6 74 3b 40 09 d2 3f 01 00 00 00 ....9Öt;@.Ò?....
ef a5 c6 b7 99 e4 d8 15 ï¥Æ·.äØ.
nsadmin>
Die Kommandos ls und url gehen also nicht ...
Das Einhängen des orbit-NamingKontexts in einem MICO-nameserver klappt:
bash-2.03$ nsadmin bind_context orbit `cat /tmp/orbit_ns_ior ` bash-2.03$ nsadmin CosNaming administration tool for MICO(tm) nsadmin> cat orbit/hallo IOR:010000000e00000049444c3a48616c6c6f3a312e30000000010000000000000034000000010100000b0000007277732e696e7465726e000027060000180000000000000039d6743b4009d23f01000000efa5c6b799e4d815
name-client `cat /tmp/orbit_ns_ior ` list /funktioniert.
name-client `cat /tmp/orbit_ns_ior ` bind_context mico `cat /tmp/mico_ns_ior `Funktioniert auch:
rw@rws:/exp/corba/ORBit2/hello > name-client `cat /tmp/orbit_ns_ior ` list / mico/ hallo rw@rws:/exp/corba/ORBit2/hello > name-client `cat /tmp/orbit_ns_ior ` list /mico orbit/ rels/ syslogTest:
bash-2.03$ cssh
CorbaScript 1.3.4 (Apr 7 2001) for MICO 2.3.5 for C++
Copyright 1996-2001 LIFL, France
>>> NS=CORBA.ORB.resolve_initial_references("NameService");
>>> import NSTools
>>> n=NSTools.StringToName("orbit/hallo");
>>> hallo=NS.resolve(n);
>>> hallo._type
< OMG-IDL interface Hallo {
void gruss (in string name, in short mal);
void test ();
}; >
>>> hallo.test
< OMG-IDL operation void Hallo::test (); >
>>> hallo.test();
>>> hallo.gruss("Ravensburg",1000);
>>>
... ist erfolgreich