2010-11-20 6 views
0

Ich habe eine Java-RMI-App, die ich mit CORBA portieren möchte. Um das zu tun, muss ich die Definition der Remote-Schnittstelle von Java zu IDL ändern, aber ich bin mir nicht sicher, wie das geht.Portierung Java-Schnittstelle zu IDL

Im Moment hat eine der Methoden in der Java-Schnittstelle einen Parameter, der kein vordefinierter Datentyp ist (wie String, Int usw.), sondern einen, den ich selbst definiert habe. In dem Java-Schnittstelle würde man es so definieren:

public int doSomething(MyObject o); 

in der RMI Implementierung Verabschiedung des Objekts ist möglich, weil sowohl der Client und Server die Definition der Klasse MyObject auf ihrem Build-Pfad haben.

Also ich frage mich, ob es funktionieren würde, wenn ich auf Client und Server die MyObject-Dateien setzen und dann in IDL zu so etwas wie dies die Methodendefinition ändern:

long doSomething(in MyObject o); 

Oder muss ich diese definieren, Klasse und ihre Methoden irgendwie auch in der IDL?

Antwort

1

Sie müssen MyObject in Ihrem Idl-Modul gut definieren. Es reicht nicht aus, dass die Klasse im Erstellungspfad für Client und Server definiert ist.

+0

ok, aber wie definiert man es? Soll ich den Befehl typedef verwenden? – dominos

+0

nah, Sie werden nur eine Schnittstelle in Ihrem Idl-Modul definieren, die MyObject implementieren wird und Ihre Methodensignaturen zu DoSomething (MyInterface) usw. werden. – hhafez

+0

In diesem MyInterface muss ich nur die Methoden des Objekts definieren, die auf dem Server verwendet werden oder alle Methoden? Muss ich diese Objektklasse auch dazu bringen, diese Schnittstelle in Java zu implementieren? – dominos

3

rmic-idl wird das für Sie tun. Siehe die Werkzeugdokumentation.

+0

Ja, es sieht so aus, als wäre das der einfache Weg gewesen. Habe das idl aber schon manuell gemacht. – dominos