2010-11-20 5 views
0

J'ai une application Java RMI que je veux porter à l'aide de CORBA. Pour ce faire, je dois changer la définition de l'interface distante de java à IDL mais je ne suis pas sûr exactement comment faire cela.Portage interface java à IDL

Pour le moment l'une des méthodes de l'interface java a un paramètre qui n'est pas un type de données prédéfini (comme string, int etc) mais un que j'ai défini moi-même. Dans l'interface java vous définiriez comme ça:

public int doSomething(MyObject o); 

Dans le passage de la mise en œuvre RMI de l'objet est rendu possible parce que le client et le serveur ont la définition de MyObject de classe sur leur chemin de construction.

Je me demande si cela fonctionnerait si je mets les fichiers myObject sur le client et le serveur, puis modifier la définition de méthode IDL à quelque chose comme ceci:

long doSomething(in MyObject o); 

Ou dois-je définir cette classe et ses méthodes en quelque sorte aussi dans l'IDL?

Répondre

1

Vous devez bien définir MyObject dans votre module idl. Il n'est pas suffisant d'avoir la classe définie dans le chemin de génération pour le client et le serveur.

+0

ok, mais comment le définir? devrais-je utiliser la commande typedef? – dominos

+0

nah vous allez simplement définir une interface dans votre module idl avec MyObject puis l'implémenter et vos signatures de méthodes deviendront doSomething (MyInterface) etc ... – hhafez

+0

dans cette MyInterface dois-je définir uniquement les méthodes de l'objet qui sont utilisées sur le serveur ou toutes les méthodes? Aussi dois-je faire que cette classe d'objet implémente cette interface dans Java? – dominos

3

rmic -idl le fera pour vous. Voir la documentation des outils.

+0

Oui, on dirait que cela aurait été facile. J'ai déjà fait l'idl manuellement, cependant. – dominos