Interopérabilité JOnAS - CORBA

37
Interopérabilité JOnAS - CORBA Projet de fin d’études chez Evidian Patrick Bruneton et Marc Dutoo

description

Interopérabilité JOnAS - CORBA. Projet de fin d’études chez Evidian Patrick Bruneton et Marc Dutoo. Objectifs. Objectifs de l’interopérabilité. Intérêts Relier des applications existantes Permettre des clients EJB multi-langages Buts Interopérabilité inter-conteneurs EJB - PowerPoint PPT Presentation

Transcript of Interopérabilité JOnAS - CORBA

Page 1: Interopérabilité JOnAS - CORBA

Interopérabilité JOnAS - CORBA

Projet de fin d’études chez Evidian

Patrick Bruneton et Marc Dutoo

Page 2: Interopérabilité JOnAS - CORBA

Objectifs

Page 3: Interopérabilité JOnAS - CORBA

Objectifs de l’interopérabilité

• Intérêts– Relier des applications existantes– Permettre des clients EJB multi-langages

• Buts– Interopérabilité inter-conteneurs EJB– Accès à un serveur JOnAS depuis un client

CORBA– Accès à des serveurs CORBA depuis un EJB

Page 4: Interopérabilité JOnAS - CORBA

Objectifs du stage

• Les cas envisagés

ClientCORBAClient

CORBA

ClientEJB

ClientEJB

Serveur JOnAS

Serveur JOnAS

Page 5: Interopérabilité JOnAS - CORBA

Objectifs

• 4 niveaux d’interopérabilité– Protocole: support du protocole de

communication de CORBA par JOnAS– Nommage: support du service de nommage

CORBA par JOnAS– Transactions mixant des ressources CORBA et

JOnAS– Sécurité

Page 6: Interopérabilité JOnAS - CORBA

Choix d’un protocole RMI/IIOP

Page 7: Interopérabilité JOnAS - CORBA

Nécessité d’un protocole RMI/IIOP

• JOnAS utilise des protocoles RMI inconnus du monde CORBA.

• IIOP (Internet Inter Orb Protocol) est le protocole de communication de CORBA.

• EJB impose le modèle de programmation répartie Java RMI, mais pas le protocole sous jacent.

• EJB s’adapte à CORBA avec RMI/IIOP: modèle de programmation RMI au dessus d’un ORB IIOP.

Page 8: Interopérabilité JOnAS - CORBA

Protocoles disponibles

• Sun RMI/IIOP– Implémentation de référence par Sun

• David RMI – Personnalité RMI/IIOP de l’ORB Jonathan (Kelua)

Jonathan (ORB)

Jérémie (RMI) David (CORBA)

David RMI (RMI/IIOP)

Page 9: Interopérabilité JOnAS - CORBA

Comparaison des protocoles• Sun RMI/IIOP et David RMI: performances identiques mais plus lent

que RMI/JRMPTemps d'appel RMI (ms)

0

500

1000

1500

2000

2500

3000

3500

RMI/JRMP

Jeremie

RMI/IIOP

David RMI

Page 10: Interopérabilité JOnAS - CORBA

Comparaison des protocoles

• Sun : pas de passage de paramètres implicites

• David : produit Objectweb, similarités avec Jérémie déjà intégré dans JOnAS

• Test d’interopérabilité

Client \ Serveur Sun RMI/IIOP David RMI/IIOP

Sun RMI/IIOP oui oui

Sun Java IDL oui oui

Orbacus oui non

David RMI/IIOP oui oui

David CORBA oui oui

Page 11: Interopérabilité JOnAS - CORBA

Choix d’un protocole

• David RMI est plus adapté à nos besoins par la présence d’intercepteurs

• Mais, David non disponible au début du projet

• À défaut, intégration de RMI/IIOP dans JOnAS– Possibilité de patcher les stubs pour passage de

paramètres implicites

Page 12: Interopérabilité JOnAS - CORBA

Intégration d’un protocole RMI/IIOP dans JOnAS

Page 13: Interopérabilité JOnAS - CORBA

JOnAS actuel

• Deux protocoles, deux distributions:– Version RMI/JRMP

– Version Jérémie

– Compilation conditionnelle

Sources JOnAS

VersionRMI

VersionJérémie

Compilation 1 Compilation 2

Page 14: Interopérabilité JOnAS - CORBA

2 possibilités d’intégration (1/2)

• Dans la continuité

Sources JOnAS

VersionRMI

VersionJérémie

Compilation 1Compilation 2

VersionRMI/IIOP

Compilation 3

Page 15: Interopérabilité JOnAS - CORBA

2 possibilités d’intégration (2/2)

• Une seule distribution mais support simultané de plusieurs protocoles– Des clients RMI/JRMP et RMI/IIOP peuvent contacter

un même serveur.– Nécessite un export des beans sur tous les ORB ou un

export au cas par cas (plus problématique).– Mais difficultés d’unification des sources, notamment

au niveau des transactions.– Solution étudiée mais non retenue: intégration simple

privilégiée

Page 16: Interopérabilité JOnAS - CORBA

Principe d’intégration (1/2)

• La classe RemoteObject est la classe de base de tous les objets distants JOnAS.

• La changer, revient à modifier le protocole de JOnAS.

• La compilation condition conditionnelle de JOnAS sélectionne une implémentation.

• Ajout d’un protocole RMI/IIOP:– Modification de RemoteObject.jpp– Modification des scripts de compilation

Page 17: Interopérabilité JOnAS - CORBA

Principe d’intégration (2/2)

• La compilation de JOnAS doit générer les stubs et tie iiop des objets distants :

– Pour Sun RMI/IIOP :

• rmic -iiop ne fonctionne pas: compilation de JOnAS impossible (correction dans JDK 1.4)

– Pour David RMI :

• nouveau compilateur jrmic

Page 18: Interopérabilité JOnAS - CORBA

Interopérabilité CORBA

ClientCORBA

(Java, C++, …)

ServeurJOnAS(Java)

stubCORBA

(Java, C++, …)

tieRMI/IIOP

(Java)

RMI

rmic –idl puisidl2java,idl2c++, …

rmic -iiop

IIOP

ClientRMI/IIOP

(Java)

stubRMI/IIOP

(Java)

rmic -iiop

Ecriture d’un client CORBA pour JOnAS :

Page 19: Interopérabilité JOnAS - CORBA

Service de nommage

Page 20: Interopérabilité JOnAS - CORBA

Nécessité d’un CosNaming

• Le service de nommage de CORBA et de RMI/IIOP est le CosNaming.

• JOnAS sur David RMI doit l’utiliser (David en a un).

• En EJB, accès au nommage via JNDI (Java Naming and Directory Interface). Ajout d’une couche JNDI au dessus du CosNaming.

Couche JNDI SUNCouche JNDI SUN

CosNamingDavid

CosNamingDavid

ServeurJOnAS

ServeurJOnASClient RMI/IIOPClient RMI/IIOP

Client CORBAClient CORBA

Page 21: Interopérabilité JOnAS - CORBA

Nécessité d’un registre RMI

• Certains objets JOnAS ne peuvent pas être enregistrés dans le CosNaming. Il faut conserver un registre RMI.

• Deux services de nommage:

CosNaming

Registre RMI

JOnAS

ClientCORBA

ClientRMI/IIOP

Page 22: Interopérabilité JOnAS - CORBA

Transactions et sécurité

Page 23: Interopérabilité JOnAS - CORBA

Transactions dans les EJBs

• Principe– mise à jour distribuée ACID de plusieurs

ressources réparties (BD, JMS, …)

• Gestion des transactions– Bean-managed– Container managed– Initialisation possible côté client

Page 24: Interopérabilité JOnAS - CORBA

Transactions et interopérabilité

• Le service transactionnel CORBA– Object Transaction Service spécifié en IDL

– Contexte transactionnel• Identification et contrôle de la transaction en cours

• imposé par EJB 2.0

• Le cas container-managed– Mise en oeuvre immédiate

• Initialisation côté client– interactions EJB – CORBA (contexte propagé)

Page 25: Interopérabilité JOnAS - CORBA

Transactions et interopérabilité

• 3 solutions envisagées, la dernière retenue– Encapsulation du JOnAS TM sous forme

d’OTS– Implémentation intégrale d’un OTS pour

JOnAS– Coopération des mécanismes OTS et JOnAS

TM

Page 26: Interopérabilité JOnAS - CORBA

Encapsulation du JOnAS TM sous forme d’OTS (1/3)

Client CORBA

ServeurJOnAS

Client RMI/IIOP

JOnAS TM

Couche OTS

Current(OTS)

UserTransaction (JTA)

TransactionManager (JTA)

Page 27: Interopérabilité JOnAS - CORBA

Encapsulation du JOnAS TM sous forme d’OTS (2/3)

• Traduction de types OTS – JOnAS TM– Exceptions– Références d’objets distants CORBA - RMI

• Unification du contexte transactionnel vers CosTransactions::PropagationContext– Utilisation spécifique du champ any

• Côté client de l’OTS à écrire

Page 28: Interopérabilité JOnAS - CORBA

Encapsulation du JOnAS TM sous forme d’OTS (3/3)

• Avantages– réutilisation et intégration relatives du code– Obtention d’un OTS CORBA complet

• Inconvénients– Trop de traductions d’exceptions– Problème du double référencement des

interfaces OTS et JOnAS TM

• D’où abandon.

Page 29: Interopérabilité JOnAS - CORBA

Implémentation intégrale d’un OTS pour JOnAS (1/2)

Client CORBA

ServeurJOnAS

Client RMI/IIOP

JOnAS TMImplémentation JTS

Current(OTS)

UserTransaction (JTA)

TransactionManager (JTA)

Page 30: Interopérabilité JOnAS - CORBA

Implémentation intégrale d’un OTS pour JOnAS (2/2)

• Unification du contexte transactionnel – Vers celui de CORBA

• Adaptation par correspondances de types• Incompatibilité des APIs

– 70% du code diffère avec la version RMI

• Intégration du service peu cohérente avec JOnAS RMI

• D’où abandon.

Page 31: Interopérabilité JOnAS - CORBA

Coopération des mécanismes OTS et JOnAS TM (1/3)

Client CORBA

ServeurJOnAS

Client RMI/IIOP

JOnAS TM

UserTransaction (JTA)

TransactionManager (JTA)

OTSCORBA

Coopération

Current(OTS)

Chaque monde (EJB et CORBA) contrôle ses propres transactions

Page 32: Interopérabilité JOnAS - CORBA

Coopération des mécanismes OTS et JOnAS TM (2/3)

• Contexte transactionnel: champ any• un client CORBA appelle un EJB

– Encapsulation du contrôle JOnAS de la transaction sous forme de ressource CORBA et enregistrement par le contrôle OTS

• un EJB appelle un objet CORBA– Il faut signaler la présence de la transaction à

l’OTS du monde CORBA pour qu’il la contrôle chez lui

Page 33: Interopérabilité JOnAS - CORBA

Coopération des mécanismes OTS et JOnAS TM (3/3)

• Inconvénients– Mise en oeuvre moins évidente

– Cas de l’appel d’un objet CORBA par un EJB

• Avantages– Réutilisation et intégration maximales

– Le côté client transactionnel est à la charge de l’OTS externe

• Solution retenue pour JOnAS David RMI– Validation non effectuée faute de temps.

Page 34: Interopérabilité JOnAS - CORBA

Sécurité

• Actuellement: contexte de sécurité propagé– Spécifique à JOnAS

• Intégration dans JOnAS David RMI– Configuration– Sérialisation Java faute de temps

• Interopérabilité CORBA– Sécurité JOnAS étendue au monde CORBA– Envisagée (sérialisation IIOP)

Page 35: Interopérabilité JOnAS - CORBA

Bilan

Page 36: Interopérabilité JOnAS - CORBA

Validation

• Utilisation des tests standards• Tests portés et validation de JOnAS David

– Transactions, sécurité

• Non régression de JOnAS RMI / JRMP• Non régression de JOnAS Jérémie

– Passage à Jonathan 3.0 (transactions et sécurité)

• Interopérabilité CORBA– Validation par test simple (sans transactions)

Page 37: Interopérabilité JOnAS - CORBA

Conclusion

• Objectifs atteints– JOnAS version David RMI– Interopérabilité CORBA

• Perspectives– Version JOnAS David RMI officielle (il reste

des bugs)– Validation de l’interopérabilité des transactions