mardi 27 novembre 2012

Java RMI


Modèle de base de Java RMI: Exécution des objets distribués en Java est possible avec l'aide de Java RMI. Un client peut accéder à un objet Java hébergée qui se trouve sur une machine virtuelle distante de toute JVM. Il s'agit de deux procédures pas à pas. La première étape consiste à propos de l'exécution des clients et des serveurs en Java. Cette volonté leur permet à un inhérente orientée objet et l'apparence des objets d'interagir avec toutes les caractéristiques de Java. Donc, c'est dire qu'on ne peut accéder / exécuter un objet serveur à partir de n'importe quelle machine virtuelle Java (JVM) Par conséquent, nous pouvons atteindre la plate-forme indépendante.

La deuxième est que le modèle fondamental du RMI de Java ont toujours un programme client, et ce programme client est utilisé pour approcher les objets distants depuis n'importe quelle machine virtuelle Java. Pour la connexion entre un client et un objet distant besoin d'une référence à l'objet, soit hébergé par un programme serveur. Objet serveur distant peut être localisé par le serveur de deux manières différentes. Ces deux procédures ont leurs propres méthodes pour donner de référence à distance au client. Ce sont des procédures,

• explicitement.
• Implicitement.

Les deux sont utilisés pour "obtenir une référence distante".

Java RMI Architecture:

Pour créer un service Math utilisant Java RMI J'ai suivi ces étapes.

1. Définir une interface distante
2. Mise en œuvre du serveur
3. La mise en œuvre du client
4. Compilez le code source
5. Démarrer Java RMI registre, serveur, puis le client.

Créer l'interface à distance:

En Java RMI est une interface utilisée pour étendre la "java.rmi.Remote" interface. Interface distante ne dispose pas de méthode elle-même, et il est utilisé pour le marquage des objets à distance, ce qui rend possible d'identifier comme il est. (Harold E. R., 2000). Ensemble de méthodes distantes également déclarées dans l'interface. Chaque méthode seule télécommande doit déclarer «java.rmi.RemoteException» ou une superclasse de la "RemoteException" dans sa section lancers, en plus de toute exception spécifique de l'application.

Exemple que j'ai utiliser dans ce paragraphe pour l'interface distante, "bite.example.SampleServer". Il déclare que ces quatre méthodes, "addition", "soustraction", "multiplication" et "Square".

Voici le code source pour "SampleServer.java".

Serveur échantillon
bite.example emballage;
importer java.rmi.Remote;
java.rmi.RemoteException importation;
SampleServer interface publique s'étend à distance
{
Outre public int (int x, int y) throws RemoteException;
public int soustraction (int x, int y) throws RemoteException;
multiplient public int (int x, int y) throws RemoteException;
public int carre (int x) throws RemoteException;
public int getValue () throws RemoteException;
getLastOp public String () throws RemoteException;
}

La mise en œuvre de Sever:

Dans ce contexte, notre "serveur" classe exporte l'objet distant et cette classe est titulaire d'un serveur "principal" méthode, c'est de produire une instance de l'implémentation d'objet distant. Puis il combine cette instance à un nom dans un registre RMI Java. La classe qui détient cette "main" méthode peut-être la classe d'implémentation par lui-même ou d'une autre classe complètement.

Dans la catégorie "Serveur" Nous déclarons la "principale" méthode pour le serveur, et aussi effectuer la SampleServer interface distante. «Principal» de notre serveur méthode suit ces deux étapes. Un nouvel objet distant est produite et exporter dans la première étape, la deuxième étape est d'environ l'enregistrement d'un objet avec un registre RMI Java.
Le code source de la classe "SampleServerImpl.java" est comme suit.

Impl serveur exemple.
bite.example emballage;
importer java.rmi.registry.Registry;
importer java.rmi.registry.LocateRegistry;
java.rmi.RemoteException importation;
java.rmi.server.UnicastRemoteObject importation;
public class SampleServerImpl met en œuvre SampleServer {
privé int valeur = 0;
lastOp private String;
SampleServerImpl () {
}
Outre public int (int x, int y) throws RemoteException {
value = x + y;
lastOp = "PLUS";
la valeur de retour;
}
public int soustraction (int x, int y) throws RemoteException {
value = x - y;
lastOp = "soustraction";
la valeur de retour;
}
publique se multiplient (int x, int y) throws RemoteException {
value = x * y;
lastOp = "MULTIPLY";
la valeur de retour;
}
public int carre (int x) throws RemoteException {
value = x * x;
lastOp = "SQUARE";
la valeur de retour;
}
/ Les propriétés de ressource * /
public int getValue () throws RemoteException {
la valeur de retour;
}

setValue public void (int value) {
this.value = valeur;
}
getLastOp public String () throws RemoteException {
retourner lastOp;
}
public void setLastOp (String lastOp) {
this.lastOp = lastOp;
}
public static void main (String args []) {
try {
/ / Créer et exporter un objet distant
SampleServerImpl obj = new SampleServerImpl ();
Stub SampleServer = (SampleServer) UnicastRemoteObject.exportObject (obj, 0);
/ / Enregistrement de l'objet distant avec un registre de Java RMI
/ / Et se lient stub de l'objet distant dans le registre
Registre Registre LocateRegistry.getRegistry = ();
registry.bind ("SampleServer", tampon);

System.out.println ("Serveur prêt");
} Catch (Exception e) {
System.out.println ("exception du serveur:" + e.toString ());
e.printStackTrace ();
}
}
}

Mise en œuvre de client:

Classe Client acquiert un «tampon» pour le registre sur l'hôte du serveur, et il est stub objet des recherches à distance dans le registre en leur nom, puis il invoque la «Addition», «Soustraction», «Multiplier» et «carré» des méthodes sur l'objet distant à l'aide moignon.
Le code source du client est la suite.

Exemple de client

bite.example emballage;
import java.io. *;
importer java.rmi.registry.LocateRegistry;
importer java.rmi.registry.Registry;
importer java.util.Scanner;
public class {SampleClient
public static void main (String [] args) {
String host = (args.length début java-Djava.rmi.server.codebase = file: C :/ rmi /-Djava.rmi.server.name = 192.168.0.03 bite.example.SampleServerImpl "
Et puis j'ai eu la sortie "Serveur prêt"

Démarrez le client: étape finale consiste à démarrer le client. Lorsque le serveur est prêt, je ouvrir une autre fenêtre de ligne de commande, puis exécutez le client comme suit: "C: \ rmi> java bite.example.SampleClient"...

Aucun commentaire:

Enregistrer un commentaire