dÉpartement si am dery invocation de méthode à distance exemple : java remote method invocation...

108
DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java Merci à Rémi Vankeisbelck, Michel Riveill etc

Upload: mireio-laine

Post on 03-Apr-2015

110 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

DÉPARTEMENT SIAM DERY

Invocation de Méthode à distance Exemple : Java

Remote Method Invocation

À travailler seuls

Concepts généraux

Mise en œuvre Java

Merci à Rémi Vankeisbelck, Michel Riveill etc

Page 2: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Client Serveur2

Page 3: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Invocation de méthodes distantes3

Mécanisme qui permet à des objets localisés sur des machines distantes de s’échanger des messages (invoquer des méthodes)

Page 4: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

RMI4

Core API (intégré au JDK 1.1) Gratuit 100 % Java

Développé par JavaSoftRéservé aux objets JavaUtilise les sockets et le protocole JRMP

Page 5: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Invocation de méthodes distantes5

Page 6: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Stubs et encodage des paramètres6

le code d’un objet client invoque une méthode sur un objet distant Utilisation d’un objet substitut dans la JVM du client :

le stub (souche) de l ’objet serveur

Page 7: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Stubs et encodage des paramètres7

Page 8: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Du côté du client8

Appel d’une méthode du stub (de façon entièrement transparente)

le stub construit un bloc de données avec identificateur de l’objet distant à utiliser description de la méthode à appeler paramètres encodés qui doivent être passés

puis il envoie ce bloc de données au serveur...

Page 9: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Du côté du serveur9

un objet de réception (Squeleton) effectue les actions suivantes : décode les paramètres encodés situe l ’objet à appeler invoque la méthode spécifiée capture et encode la valeur de retour ou l ’exception

renvoyée par l ’appel

Page 10: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Encodage des paramètres10

Encodage dans un bloc d ’octets afin d ’avoir une représentation indépendante de la machine

Types primitifs et «basiques» (int/Integer...) Encodés en respectant des règles établies Big Endian pour les entiers...

Objets ...

Page 11: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Générateur de stubs11

Les stubs gèrent la communication ainsi que l'encodage des paramètres

Processus évidemment complexe...Entièrement automatique

Un outil permet de générer les stubs pour les OD

Page 12: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Stubs et rmic12

La commande rmic du jdk rend transparent la gestion du réseau pour le programmeur une référence sur un ODréférence son stub local

syntaxe = un appel local objetDistant.methode()

Page 13: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Un exemple : le sempiternel « Hello World » !!!

13

Page 14: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Interfaces et classes prédéfinies14

Page 15: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Interface = protocole d ’application15

L ’interface HelloWorldimport java.rmi.*;

interface HelloWorld extends Remote {public String sayHello()

throws RemoteException;}

Page 16: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Rôle de l ’interface16

HelloWorldHelloWorld

Page 17: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Les exceptions17

L’exception RemoteException doit être déclarée par toutes les méthodes distantes Appels de méthodes distants moins fiables que les

appels locaux Serveur ou connexion peut être indisponible Panne de réseau ...

Page 18: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Du côté client18

HelloWorld hello = ...;// Nous verrons par la suite comment obtenir // une première référence sur un stub

String result = hello.sayHello();System.out.println(result);

Page 19: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Du côté Serveur19

Implémentation de la classe qui gère les méthodes de l’interface HelloWorld// Classe d'implémentation du Serveur

public class HelloWorldImpl extends UnicastRemoteObjectimplements HelloWorld {

public String sayHello() throws RemoteException {

String result = « hello world !!! »; System.out.println(« Méthode sayHello invoquée... » +

result); return result;}

}

Page 20: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Classe d’implémentation20

doit implanter l’interface HelloWorlddoit étendre la classe RemoteServer du

paquetage java.rmiRemoteServer est une classe abstraiteUnicastRemoteObject est une classe concrète

qui gére la communication et les stubs

Page 21: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Classe d’implémentation21

HelloWorldHelloWorld

HelloWorldImpl

Page 22: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

L’outil RMIC22

outil livré avec le JDK permet de générer les stubs

> rmic -v1.2 HelloWorldImpl génère un fichier HelloWorldImpl_stub.class

rmic doit être passé pour toutes les classes d'implémentation des OD afin d'en générer les stubs

Depuis la v3, les stubs sont générés dans un package sous le répertoire de travail

Deux nouvelles options : "-idl" and "-iiop" pour générer des IDL and des

stubs pour IIOP.

Page 23: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Fichiers générés

Un squelette(skeleton) pour un objet serveur au dessus du protocole JRMP qui contient une méthode qui répartit les appels aux implémentations des objets distants

Un talon (tie) pour un objet serveur similaire au squelette, qui communique avec le client en utilisant le protocole IIOP.

Un stub ou proxy pour l’objet distant responsable pour faire des appels aux méthodes sur les objets du sserveur.

Le protocole JRMP est utilisé dans la génération par défault. U

Page 24: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Référence sur un objet24

On sait implanter un serveur d ’un côté, et appeler ses méthodes de l ’autre

MAIS

Comment obtient-on une référence vers un stub de notre objet serveur ???

Page 25: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Localisation des objets de serveur25

On pourrait appeler une méthode sur un autre objet serveur qui renvoie une référence sur le stub...

Mais quoi qu ’il en soit, le premier objet doit lui aussi être localisé (La poule et l ’œuf) !!!

On a alors recours a un Service de Nommage

Page 26: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Les Services de Nommage26

Obtention d'une première référence sur un objet distant : « bootstrap » à l’aide d’un Service de Nommage ou Annuaire

Enregistrement des références d'objets dans l'annuaire afin que des programmes distants puissent les récupérer

Page 27: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Exemple : Le RMIRegistry27

Implémentation d'un service de nommage Fourni en standard avec RMI

Permet d'enregistrer des références sur des objets de serveur afin que des clients les récupèrent

On associe la référence de l'objet à une clé unique (chaîne de caractères)

Le client effectue une recherche par la clé, et le service de nommage lui renvoie la référence distante (le stub) de l'objet enregistré pour cette clé

Page 28: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Le RMIRegistry28

Programme exécutable fourni pour toutes les plates formes

S'exécute sur un port (1099 par défaut) sur la machine serveur

Pour des raisons de sécurité, seuls les objets résidant sur la même machine sont autorisés à lier/délier des références

Un service de nommage est lui-même localisé à l'aide d'une URL

Page 29: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

La classe Naming29

du package java.rmi permet de manipuler le RMIRegistry supporte des méthodes statiques permettant de

Lier des références d'objets serveur Naming.bind(...) et Naming.rebind(...)

Délier des références d'objets serveur Naming.unbind(...)

Lister le contenu du Naming Naming.list(...)

Obtenir une référence vers un objet distant Naming.lookup(...)

Page 30: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Enregistrement d’une référence30

L’objet serveur HelloWorld (coté serveur bien entendu…) On a créé l'objet serveur et on a une variable

qui le référenceHelloWorld hello = new HelloWorldImpl();

On va enregistrer l'objet dans le RMIRegistryNaming.rebind("HelloWorld",hello);

L'objet est désormais accessible par les clients

Page 31: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Obtention d'une référence coté client31

sur l'objet serveur HelloWorld On déclare une variable de type HelloWorld et

on effectue une recherche dans l'annuaire

HelloWorld hello = (HelloWorld)Naming.lookup("rmi://www.helloworldserver.com/HelloWorld");

On indique quelle est l'adresse de la machine sur laquelle s'exécute le RMIRegistry ainsi que la clé

La valeur retournée doit être transtypée (castée) vers son type réel

Page 32: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Remarque32

Le Service de Nommage n'a pas pour fonction le référencement de tous les objets de serveur Il devient vite complexe de gérer l'unicité des clés

La règle de bonne utilisation du Naming est de lier des objets qui font office de point d'entrée, et qui permettent de manipuler les autres objets serveurs

Page 33: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Une autre utilisation du rmiRegistry33

import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry;Client Registry registry; registry = LocateRegistry.getRegistry(); Hello hello = (Hello) registry.lookup("coucou"); Serveur LocateRegistry.createRegistry(port); // port=1099

Hello stub = (Hello) UnicastRemoteObject.exportObject(unHello, 0);Naming.rebind("rmi://"+"localhost"+":"+ port +"/coucou", stub);

Page 34: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

JNDI

Les applications JNDI applications peuvent accéder aux objets enregistrés dans

l’annuaire RMI

RMI peut utiliser d’autres serveurs de noms via JNDI

LDAP ou le serveur de noms Corba par exemple

Page 35: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Conception, implémentation et exécution de l'exemple

35

Rappel On veut invoquer la méthode sayHello() d'un

objet de serveur distant de type HelloWorld depuis un programme Java client

Nous allons devoir coder L'objet distant Le serveur Le client Et définir les permissions de sécurité et autres

emplacements de classes...

Page 36: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Processus de développement36

1) définir une interface Java pour un OD 2) créer et compiler une classe implémentant cette

interface 3) créer et compiler une application serveur RMI 4) créer les classes Stub (rmic) 5) démarrer rmiregistry et lancer l’application

serveur RMI

6) créer, compiler et lancer un programme client accédant à des OD du serveur

Page 37: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Hello World : L'objet distant37

Une interface et une classe d'implémentation stubs générés automatiquement par rmic toutes les classes nécessaires à l’objet de client

doivent être déployées sur la machine cliente et accessibles au chargeur de classes (dans le CLASSPATH)

L'interface HelloWorld (HelloWorld.class) Le stub HelloWorldImpl_stub généré par rmic pour cet objet

Page 38: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Hello World : Le serveur38

instancie un objet de type HelloWorld et attache au service de nommage

puis objet mis en attente des invocations jusqu'à ce que le serveur soit arrêté

import java.rmi.*;import java.rmi.server.*;

public class HelloWorldServer {

public static void main(String[] args) {try {

System.out.println("Création de l'objet serveur...");HelloWorld hello = new HelloWorldImpl();System.out.println("Référencement dans le

RMIRegistry...");Naming.rebind("HelloWorld",hello);System.out.println("Attente d'invocations - CTRL-C pour

stopper");} catch(Exception e) {

e.printStackTrace();}

}}

Page 39: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Serveur (suite)39

Apres avoir compilé le tout... Pour démarrer le serveur, il faut tout d'abord lancer le

RMIRegistry Attention : La base de registres RMI doit connaître les

interfaces et les stubs des objets qu'elle enregistre (CLASSPATH) !!!

> rmiregistry &

et ensuite on lance le serveur

> java HelloWorldServer

Création de l'objet serveur...Référencement dans le RMIRegistry...Attente d'invocations - CTRL-C pour stopper

Page 40: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Hello World : client40

obtenir une référence sur l'objet de serveur HelloWorld, invoquer la méthode sayHello(), puis afficher le résultat de l'invocation sur la sortie standardimport java.rmi.*;

public class HelloWorldClient {

public static void main(String[] args) {try {

System.out.println("Recherche de l'objet serveur...");HelloWorld hello = (HelloWorld)Naming.lookup("rmi://server/HelloWorld");System.out.println("Invocation de la méthode sayHello...");String result = hello.sayHello();System.out.println("Affichage du résultat :");System.out.println(result);System.exit(0);

} catch(Exception e) {e.printStackTrace();

}}

}

Page 41: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Le client (suite)41

Il suffit ensuite de lancer le programme

> java HelloWorldClient

Recherche de l'objet serveur...Invocation de la méthode sayHello...Affichage du résultat :hello world !!!

Au niveau du serveur, le message... Méthode sayHello invoquée... hello world !!! ...s'affichera dans la console

Page 42: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Passage de paramètres42

On sera souvent amenés a passer des paramètres aux méthodes distantes...

Les méthodes distantes peuvent retourner une valeur ou lever une exception...

On a deux types de paramètres Les objets locaux Les objets distants

Page 43: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Passage de paramètres: ATTENTION43

Certains objets sont copiés (les objets locaux), d'autres non (les objets distants)

Les objets distants, non copiés, résident sur le serveur Les objets locaux passés en paramètre doivent être

sérialisables afin d'être copiés, et ils doivent être indépendants de la plate-forme

Les objets qui ne sont pas sérialisables lèveront des exceptions

Attention aux objets sérialisables qui utilisent des ressources locales !!!

Page 44: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Que doit connaître le client ?44

Lorsqu’un objet serveur est passé à un programme, soit comme paramètre soit comme valeur de retour, ce programme doit être capable de travailler avec le stub associé

Le programme client doit connaître la classe du stub

Page 45: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Que doit connaître le client ?45

les classes des paramètres, des valeurs de retour et des exceptions doivent aussi être connues... Une méthode distante est déclarée avec un type de

valeur de retour... ...mais il se peut que l ’objet réellement renvoyé soit

une sous-classe du type déclaré

Page 46: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Que doit connaître le client ?46

Le client doit disposer des classes de stub, classes des objets retournés…

copier les classes sur le système de fichiers local du client (CLASSPATH)...

...cependant, si le serveur est mis à jour et que de nouvelles classes apparaissent, il devient vite pénible de mettre à jour le client

C ’est pourquoi les clients RMI peuvent charger automatiquement des classes de stub depuis un autre emplacement Il s ’agit du même type de mécanisme pour les

applets qui fonctionnent dans un navigateur

Page 47: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Chargement dynamique des classes47

Problème de sécurité Le programme client télécharge du code sur le réseau Ce code pourrait contenir des virus ou effectuer des

opérations non attendues !!! Utilisation d ’un gestionnaire de sécurité pour les

applications de clients RMI Possibilité de créer des gestionnaires de sécurité

personnalisés pour des applications spécifiques RMI fournit des gestionnaires de sécurité suffisants

pour un usage classique

Page 48: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Chargement dynamique48

Pour ne plus déployer les classes du serveur chez le client

Utilisation des chargeurs de classes qui téléchargent des classes depuis une URL

Utilisation d ’un serveur Web qui fournit les classes

Ce que ça change Bien entendu, les classes et interfaces de l ’ objet distant ne

changent pas Le code du serveur ne change pas

le client et la façon de le démarrer sont modifiés Et lancer un serveur Web pour nos classes

Page 49: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Hello World : chargement dynamique49

Séparation des classes Serveur (fichiers nécessaires a l'exécution du

serveur) HelloWorldServer.class HelloWorldImpl.class HelloWorld.class HelloWorldImpl_Stub.class

Download (fichiers de classes à charger dans le programme client) HelloWorldImpl_Stub.class

Client (fichiers nécessaires au démarrage du client) HelloWorld.class HelloWorldClient.class

Page 50: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Hello World : Démarrage du serveur Web

50

Mettre les classes Download dans le répertoire des documents Web du serveur Web, accessibles via une URL

le chargeur de classes ira chercher les classes à un emplacement de type http://www.class-server.com/classes/HelloWorldImpl_Stub.class

};

Page 51: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Hello World : Politiques de sécurité51

Le programme Java client doit pouvoir se connecter aux ports de la base de registres RMI et des implémentations des objets de serveur, ainsi qu'au port du serveur Web

Fichier client.policygrant {

permission java.net.SocketPermission"*:1024-65535", "connect,resolve";

permission java.net.SocketPermission"*:80", "connect";

};

Page 52: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Hello World : gestionnaire de sécurité RMI

52

Le client intègre un gestionnaire de sécurité RMI pour les stubs téléchargés dynamiquementimport java.rmi.*;import java.rmi.server.*;

public class HelloWorldClient {

public static void main(String[] args) {try {

// Installe un gestionnaire de sécurité RMISystem.setSecurityManager(new RMISecurityManager());System.out.println("Recherche de l'objet serveur...");HelloWorld hello = (HelloWorld)Naming.lookup("rmi://server/HelloWorld");System.out.println("Invocation de la méthode sayHello...");String result = hello.sayHello();System.out.println("Affichage du résultat :");System.out.println(result);

} catch(Exception e) {e.printStackTrace();

}}

}

Page 53: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Hello World : Démarrage coté serveur

53

1) Lancer la base de registres RMI (elle doit pouvoir accéder aux classes Download - CLASSPATH)> rmiregistry

2) Lancer le serveur Web servant les fichiers de classes Download

3) Lancer le serveur (les classes Server doivent être accessibles)> java HelloWorldServer

Création de l'objet serveur...Référencement dans le RMIRegistry...Attente d'invocations - CTRL-C pour stopper

Page 54: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Hello World : Démarrage coté client

54

Le client doit pouvoir se connecter à des machines distantes pour la base de registres RMI, les objets de serveur ainsi que le serveur Web On doit lui fournir un fichier client.policy

Le client doit bien connaître l'emplacement des classes afin de pouvoir les télécharger On va le lui préciser lors du lancement

> java -Djava.security.policy=client.policy -Djava.rmi.server.codebase=http://www.class-server.com:80/ HelloWorldClient

Page 55: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Erreurs classiques

Stub inaccessible au rmiregistry java.rmi.ServerException: RemoteException

occurred in server ...java.rmi.UnmarshalException: errorunmarshalling ...java.lang.ClassNotFoundException:

Le stub est accessible au serveur MAIS PAS AU rmiregistryAttention à l’ordre d’appel : génération des stubs et appel du rmiregistry

rmiregistry pas lancé   java.net.ConnectException

Oubli du constructeur pour le RemoteObject unreported exception java.rmi.RemoteException in default constructorpublic class HelloImpl extends UnicastRemoteObject implements Hello {       ^

rmiregistry déjà lancéjava.rmi.server.ExportException: Port already in use: 1099On peut lancer un autre registry mais sur un autre port.

Page 56: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Erreurs classiques

La classe d’implémentation n'hérite pas de UnicastRemoteObject

S'il n'hérite pas de UnicastRemoteObject, il n'est pas Remote donc on lui demande d'être Serializable ...Trouble: java.rmi.MarshalException: error marshalling arguments; nested exception is:         java.io.NotSerializableException: CalculatorImpl

ATTENTION aux CLASSPATH et package Java

Page 57: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Conclusion57

On a vu ce qu'est une invocation de méthode distante

On a vu le mécanisme des stubs, ainsi que l'encodage des paramètres

On a vu le déploiement avec téléchargement des classes dynamiquement

Nous avons même appliqué ces concepts au travers de l'exemple "HelloWorld » en RMI

Page 58: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

CHRONIQUE D’UNE INVASION ANNONCÉEPOURQUOI? COMMENT?

QUI : CORBA / COM-DCOM / JAVA RMI…

Page 59: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Protocoles d’application et Langages de spécifications

Spécifications des types de données qui transitent sur le réseau

XDR et RPC de SUN

Protocole := CHOICE { requete [0] REQUETE, reponse [1] REPONSE }

Programme reqrep { version {

REPONSE rerep(REQUETE) = 1 }= 1} = 10000

ASN.1 et norme ISO

Page 60: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Exemple : annuaire des surnoms

XDR et RPC

Protocole := CHOICE { enregistrerReq [0] SEQUENCE{PrintableString nom,

PrintableString surnom} enregistrerRep[1] BOOLEAN, listerReq [2] NULL, listerRep [3] SET OF Personnes, ….}

Programme surnoms { version {

boolean enregistrer(nomSurnom) = 1; listePersonnes lister(void)=2 }= 1} = 10000

ASN.1 et norme ISO

Page 61: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Générateurs de Stubs

RPCGEN / MAVROS

ASN1 XDR

Librairie marshalling et unmarshalling

squelettes du client et du serveur

Spécificationsdes données

Générateurs

Types de donnéesC Lisp Java

Types de données

C

Fichiersgénérés

Page 62: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Implémentation des objets distribués

Corba indépendant des langages de programmation

Projections C,C++, Java

Un langage de Spécification IDL

Orienté C++

Tout Java

Page 63: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

CORBA, DCOM et JAVA

une interface = une unité élémentaire

héritage des interfaces

aucune interface imposée

normalisation des interface

au moins une interface : Iunknown

non transmissible par héritage

composition d’interfaces

• héritage de classe • implémentation de plusieurs interfaces possibles

Page 64: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Générateurs

RMIC / Orbix...

IDL Int. Java

Spécificationsdes données

Générateurs

Fichiersgénérés Stubs Skeletons Proxy

(mise en œuvre de la sérialisationet désérialisation…)

Page 65: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

CORBA

module Surnoms {typedef string Nom ; struct Personne {Nom nom; string surnom;};typedef sequence<Personne> ListePersonnes;interface Surnoms{

exception ExisteDeja{string surnom;}; boolean enregistrer(in Personne personne) raises

(ExisteDeja); ….. };};

Page 66: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Surnoms.java

Compilation interface IDL

Client

StubForSurnoms.java _SurnomsImplBase.java

Serveur

SurnomsImpl.javaClient.java

Serveur.java

A écrire

Généré

1- Exemple introductif

Surnoms.idl

Compilateur IDL/Java

Répertoire gridRépertoire grid

Répertoire gridRépertoire Surnoms

SurnomsHelper.java

SurnomsHolder.java

jidl Surnoms.idl

Page 67: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

RMI

public interface Surnoms extends java.rmi.Remote{public Boolean enregistrer(String nom, String surnom) throws

java.rmi.RemoteException,

ServeurSurnoms.surnoms.ExisteDeja ;…. }

Page 68: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

RMI

Classes et Interfaces

ClasseLocale

Souche Squelette

ClasseDistante

InterfaceDistante

Remote

Appel méthode m() Appel méthode m()

Machine locale Machine distante

InterfaceDistante

Page 69: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Invocation dynamique

Permet au programme client de découvrir les objets à l’exécution et les interfaces

proposés par ces objets construire dynamiquement messages et requêtes envoyer et recevoir le résultat de telles requêtes

Rend les systèmes réactifs et faciles à modifier

OFFERT PAR CORBA, DCOM et JAVA

Page 70: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

L’invocation dynamique

API (DII) de construction de requêtes sans passer par des souches prégénérées

Un objet Request = un nom d’opération, une liste de couples valeur - type (au sens de l’IR) et une structure pour le résultat invoke send_deferred + get_response, poll_response send_oneway

Page 71: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Un peu plus sur l’infrastructure

transport des messageslocalisation des serveurs et des objetspersistance

ORB pour CORBAnorme Corba 1

DCOM pour OLEnon formelle

JDK

Page 72: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Transport des messages

Références aux objets identifiant (libre choix d ’implémentation dans le

norme CORBA) nombres codés sur 128 bits en OLE url Uniform Resource Locator en Java RMI

Performances différentes et incompatibilités entre ORBset entre ORB et COM

Page 73: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Scénario d ’obtention de la référence du service de nommage

Client ou Serveur ORB

CosNaming::NamingContext

resolve_initial_references ("NameService");

conversion

ajout,retrait,lecture,...

Page 74: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Enregistrer un objet

• Opération pour publier un Objet– en général, opération réalisée par le serveur

• Scénario Type1. Créer un objet2. Construire un chemin d ’accès (Name)3. Appeler l ’opération « bind » ou « rebind » avec le chemin et la référence de l ’objet

void bind (in Name n, in Object obj) raises (NotFound, CannotProceed, InvalidName, AlreadyBound);

Page 75: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Retrouver un objet

Opération réalisée par un client ou un serveurScénario type :

construire un chemin d ’accès (Name) appeler l ’opération « resolve » avec le chemin convertir la référence obtenue dans le bon type

Object resolve (in Name n)raises (NotFound, CannotProceed, InvalidName)

Page 76: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Interaction Client Enregistreur

client serveur

client registre

Lookup : où est objetDistant ?

stub

Il est ici

Envoyez le stub

Le voici

stub squelette

objetDistant

result = objetDistant.m()

result

RMIRegistry + ClassLoader

Page 77: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Interface avec l’infrastructure Un peu de vocabulaire

Coté client : stub en CORBA proxy en OLE stub/proxy en Java

Côté Serveur : stub en OLE skeleton en CORBA implémentation d’une interface en RMI

BOA Objects Adaptaters

Page 78: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Mécanisme de Transport : Client - Serveur

Appel direct : DLL (in process - utilisation du même espace mémoire)

Appel indirect : LRPC (application sur la même machine) passe par le

proxy RPC (sur 2 machines différentes)

IIOP en Corba

Page 79: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Invocations

Invocations statiques IDL en CORBA stub + skeleton En OLE

appel direct si in process proxy + stub si application fournis uniquement pour les

applications MicroSoft Versions récentes définition du langage ODL

IDL et ODL sont incompatibles

Page 80: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Invocations

Invocations dynamiques DII en CORBA IDispatch en OLE java reflect

Du ressort de l’infrastructure

Page 81: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

CORBA vs OLE

définition du serveur très générale laissée à l’implémentation

flexibilité primordiale pour l’intégration de systèmes (BDD…)

processus formel avec l’OMG

• un serveur est une application ou une DLL

• stratégie commerciale et pratique

Page 82: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Services et Objets Distribués

Services normalisésSeulement certains

sont implémentésNaming, Trading,

EventLe programmeur

doit les connecter…

Des services en Programmant avec JavaSecurité,Threads, Événements

Url et Web

Non intégrés à RMI

Page 83: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Les points communs des middlewares en objets distribués

(aspect réseau)

Adressage : à tout objet doit être affecté une référence uniqueTransport : pour établir une communication entre 2 nœuds et transmettre une requêteMarshalling :transformation de la requête pour passer sur leréseau

Page 84: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Les points communs des middlewares en objets distribués

Activation :activer les implémentations des objetsDispatching :gestion des threadsProtocol :transmission des requêtes entre exécutablesDes services communsServices de nommage, Interface repository.....

Page 85: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Les points communs des middlewares en objets distribués

(aspect objet)

Encapsulation :Interdire l'accès direct au contenu de l'objetInterface :Permettre l'évolution du codeHéritage / Composition :Gérer les versionsEnvoi de messagesPrivilégier les communications synchrones

Page 86: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Des objets distribués aux composants

CHRONIQUE D’UNE INVASION ANNONCÉEPOURQUOI? COMMENT?

QUI : / CORBA3 CCM/ WEB SERVICES (.NET, J2EE) / EJBS …

Page 87: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Quels Composants ?

Une vision « simplifiée » : les Web Services

Des composants « normalisés » : CCM

Des composants pratiques : EJB

Et tout ce que l'avenir nous réserve : OpenCCM,Fractal ….

Page 88: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Une « unité logique applicative » Une «librairie» fournissant des données et

des services à d’autres applications. Un objet métier déployé sur le web (vision

objet) Un « module » ou « composant »

(Application avec JAX-RPC : un composant simple avec une interface RMI )

Une sorte d'objet… plutôt qu'un composant

Un Service Web, c’est quoi ?

Page 89: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Architecture globale

Page 90: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Un langage de description : WSDL

Une infrastructure : Le Web et http

Une communication par envoi de messages : SOAP

Du marshalling : XML

Un service de nommage « dynamique » : UDDI

Points communs avec les middlewares objets

Page 91: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

AnnuaireUDDI

ClientXMLXML

5 : J’ai compris comment invoquer5 : J’ai compris comment invoquerton service et je t’envoie un documentton service et je t’envoie un document

XML représentant ma requêteXML représentant ma requête

Serveur

2 : J’ai trouvé! Voici le serveur2 : J’ai trouvé! Voici le serveurhébergeant ce service webhébergeant ce service web

3 : Quel est le format d’appel du3 : Quel est le format d’appel duservice que tu proposes? service que tu proposes?

ContratSOAP

ContratSOAP

4 : Voici mon contrat (WSDL)4 : Voici mon contrat (WSDL)

XMLXML

XMLXML

6 : J’ai exécuté ta requête et je te retourne le résultat6 : J’ai exécuté ta requête et je te retourne le résultat

1 :

Je r

ech

erch

e1

: Je

rec

her

che

un

ser

vice

WE

B

un

ser

vice

WE

B

Cycle de vie d’utilisation

Page 92: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Cycle de vie plus complet…

Déploiement du service Web

Enregistrement du service Web

Découverte du service Web

Invocation du service Web par le client

Page 93: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Pour être de vrais composants…

- Description des interfaces requises

- Langage pour gérer le flux d’exécution :

WSFL

- des services spécifiques

- sécurité (SAML, …)

- transactions (BTP, …)

- une découverte des services web (W3C)

Page 94: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Des environnements intégrés .net

Toute la mécanique est cachéeOn peut se concentrer sur la conceptionAide à l'assemblage ?

Des adeptes et des sceptiques Passage à l'échelle ? Evolution ? Interopérabilité ?

Page 95: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Une brique permettant la programmation par assemblage

Une solution facilitant le déploiement, la gestion du cycle de vie des applications logicielles

Une meilleure intégration des services

plus qu'un objet

Un composant, c’est quoi ?

Page 96: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Exemple des différents éléments

25

Création et utilisation de Bank

Client

Server

JNDI

BankHomeImpl

bh: BankHome

Context

1: bh = lookup()

1.1: lookup()

b : Bank

BankBean

2.3.1: new()2.3.2 setSessionContext()2.3.3 ebjCreate()

2: b = create()

2.1: create()

2.2: create()

3: deposit()3.1: deposit() 3.2: deposit()

III. Composants : 2. EJB

E

Page 97: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Exemple de modèle de composant

30

Modèle abstrait de composant CORBA

Imp

lém

enta

tion

de fa

cette

ConsommateurPayer,

sélectionner, prendre

Ouvrir,remplir,

mettre Monnaie…

Fournisseur

Ouvrir capot, fermer,

Réparateur

Fa

cett

es

réceptacle

Prise de courant

Prise d’eau

*

Plus de monnaie

vide

*Température

Source d’évènementsPuit d’évènements

On/Off

Attributs

III. Composants : 3. CORBA C.

Page 98: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

EJB – CORBA 3: Points communs avec les middlewares

objets

Langages de description : CIDL ou Interfaces Java

Infrastructure : RMI / ORB

Marshalling : repose sur Corba / RMI

Nommage : Home ++

Interface : Héritage + Composition

Page 99: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

EJB – CORBA 3: Apports

Interfaces entrées et sorties : ports requis et offerts

Conteneur : intégration des propriétés non Fonctionnelles (sécurité, persistance, transaction)

Home : fabrique et navigation

Communication par envoi de message et notification (événement)

Page 100: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Un vrai cycle de vie

Fichier de déploiement

Packaging d'assemblage

Approche déclarative basée sur XML

Page 101: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Prochaine invasion dans la lignée ?

Approche composant revisitée :

Open CCM : une meilleure solution CCM + MDA(+ d'abstraction des infrastructures, projections vers des middlewares connus…)

Des Composants à conteneurs ouverts (travaux de recherche)

Des composants adaptables (fractal)

Page 102: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Les problèmes à résoudre encore

Problèmes d’interopérabilité RMI et Corba en Java entre le monde Microsoft et le reste

Arrivée des Web Services : la solution ?

Les composants encore nouveaux…. les Enterprise Java Beans Corba Components et aussi C# et net

Page 103: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Les plus grosses difficultés

Sont conceptuelles Comment choisir les composants adaptés ?

(manque de sémantique, Web sémantique) Comment accepter plus de services ?

(propriétés non fonctionnelles)

Etre plus architecte que programmeur ….

Page 104: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Quelques interrogations ?

Comment choisir le bon middleware (intergiciel) ?Il y en a de plus en plus

Corba, RMI, DCOM, DSA + CCM, J2EE + Web Services, .net ....

Savoir les comparerIdentifier les points communsInteropérabilité : XML une solution suffisante ?

Page 105: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Des Critères de Comparaisons

Autour du concept objet ?Communication synchrone ou asynchrone ?Description via des interfaces ou des messages ?Communication directe ou indirecte ?Spécifique ou indépendant langage ?Possibilité de transformation de messages ou non ?Protocole de communication binaire ou textuelle ?Prise en compte de QoS ou non ?(transaction, sécurité ....)

Page 106: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Comment faire interopérer les middlewares ?

Aller vers un middleware standard ? (J2EE / Corba)

Construire une couche au dessus des middlewares ? des familles de middlewares, des middlewaresgénériques (Jonathan, PolyOrb, ...)Avoir une approche architecturale ?

des design patternsFaire interopérer des middlewares existants?

M2M

Page 107: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

L’avenir ?

Après les approches par composants,des middlewares au dessus de JMS

Une réflexion de plus haut niveau poursortir les schémas communsextérioriser quand et comment on les utilise

ne pas confondre les problèmes avec XML

Page 108: DÉPARTEMENT SI AM DERY Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls Concepts généraux Mise en œuvre Java

Format URL

rmi://[host][:port][/[object]] rmi:[/][object]

If the object name is absent, then the URL names the registry at the given host and port. Otherwise, it names the remote object registered at that registry under the name provided. If the host is omitted, the local host is assumed. If the port is omitted, the default registry port 1099 is assumed.