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
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