Lods
[Mes prises de notes
Middleware -> P. 680 -> tolérance panne -> équilibrage machine
RMI -> 100 % JAVA -> différent avec CORBA utilise plusieurs langages
RMI utilise directement les sockets
Objet serveur | interface | objets client
Lire le tutorial sur streamable dataSet]
RMI ou Remote Method Invocation permet de créer des applications java-à-java distribuées,
dans lesquelles les méthodes des objets java distants peuvent être appelées depuis des
machines virtuelles java et sur différents hôtes. Un programme java peut effectuer un appel
sur un objet distant lorsqu’il obtient la référence de l’objet distant, soit en recherchant l’objet
distant dans le service d’annuaire d’amorce fourni par RMI, soit n recevant la référence sous
forme d’argument ou de valeur de retour.
RMI utilise la sérialisation d’objets pour le marshalling et le dé-marshalling des paramètres, il
ne tronque pas les types, et supporte un véritable polymorphisme orienté objet.
Dans le langage de programmation Java un objet distant est une instance d’une classe
qui implémente une interface distante. Votre interface distante déclarera chacune des
méthodes que vous souhaitez appeler à distance. Les interfaces distantes ont les
caractéristiques suivantes :
- L’interface distante doit être déclarée publique -> sinon les clients provoque
une erreur lorsqu’ils tentent de charger un objet distant implémentant
l’interface distante.
- L’interface distante étend l’interface java.rmi.Remote
- Chaque méthode dit déclarer java.rmi.RemoteException (ou une superclasse de
RemoteException) dans sa clause throws, en plus des exceptions propres à
l’application
- Le type de données de tout objet distant transmis sous forme d’argument ou de
valeurs de retour doit être déclaré en tant que type interface distante et non en
tant que classe d’implémentation.
Comme l’invocation des méthodes distantes peut échouer de manière très différente de
l’invocation des méthodes locales, les méthodes distantes signalent les échecs de
communication en déclenchant une exception java.rmi.RemoteException
Au minimum, la classe d’implémentation d’un objet distant doit :
- Implémenter une interface distante
- Définir le constructeur de l’objet distant