Frage zu RMI

navino

Mitglied
Hallo,

versuche mich gerade mal an RMI.

Habe folgenden Server:

package de;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface HelloServer extends Remote {

public String sayHello() throws RemoteException;

}

folgende Implementierung:


package de;

import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
import java.rmi.Naming;

import de.HelloServer;

public class HelloImpl extends UnicastRemoteObject implements HelloServer {

public HelloImpl() throws RemoteException {
}

public String sayHello() {
return "Hello World";
}

public static void main(String args[]) {
try {
Naming.rebind("hello-server", new HelloImpl());
} catch(Exception ex) {
ex.printStackTrace();
}
}


Und folgenden Client, er funktioniert auch:

package de;

import java.rmi.Naming;

public class HelloClient {

public static void main(String args[]) {
try {
HelloServer server = (HelloServer)Naming.lookup("hello-server");
String result = server.sayHello();
System.out.println(result);
} catch(Exception ex) {
ex.printStackTrace();
}
}

}
}

Jetzt die Frage:

Auf dem Client funktioniert es nur (Client und Server sind 2 projekte in Eclpise), wenn ich das Interface HelloServer vom Server in den Client kopiere. Sonst kennt der Client ja nicht vom HelloServer. Wie macht man das in der Praxis? Geht sowas auch dynamisch?

Gruß
navino
 
Moin!
Man kann dem Client auch mitteilen, wo sich die Stubs und Skeletons befinden, mittels der System Property "java.rmi.server.codebase"

*grüssle*
MeinerEiner
 
Hallo,

das heißt, man erzeugt stub und skeleton nur auf dem Server?
Wie macht man das mit der Property?

danke für die schnelle antwort!

navino
 
Hallo,

ja... die Service Interfaces müssen auch auf dem Client liegen... sonst könntest du den ja gar nicht kompilieren. Leg die Service interfaces einfach in ein drittes jar welches vom Server und vom Client benutzt werden.

Gruß Tom
 
Hallo,

danke für Tipps, ich glaube jetzt habe ich das Konzept verstanden.

Dann werd ich mich jetzt mal an die Integration von Spring und RMI versuchen, so dass RMI ganz "normal" mit einem Tomcat läuft....

Habe gelesen, das soll gehen......


Gruß

und noch mal Danke!
 

Neue Beiträge

Zurück