Hallo,
ich habe in einem anderem Forum (ich hoffe man nimmt meine abtrönigkeit nicht übel) ein Mini Beispiel zu RMI gefunden welches ich auch erfolgreich umsetzen konnte nur jetzt zu meiner Frage da ich ja beim
eine URL angeben kann wollte ich mal folgendes probieren :
nur dann bekomme ich eine Exception
Mein Code ist folgender :
Server Klasse :
Client Klasse :
und der vollständigkeitshalber das Interface :
ich habe in einem anderem Forum (ich hoffe man nimmt meine abtrönigkeit nicht übel) ein Mini Beispiel zu RMI gefunden welches ich auch erfolgreich umsetzen konnte nur jetzt zu meiner Frage da ich ja beim
Java:
Naming.lookup(URL)
Java:
ITimeService service = (ITimeService)registry.lookup("//localhost:1099/timeservice");
Java:
java.rmi.NotBoundException: //localhost:1099/timeservice
at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:106)
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at Client.main(Client.java:18)
Mein Code ist folgender :
Server Klasse :
Java:
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.Date;
/**
* @author Administrator
*
* TODO Explain me
*/
public class Server implements ITimeService {
public static void main(String[] args) {
new Server().start();
}
/**
*
*/
private void start() {
try {
// Erstellt eine RMIRegistry local auf der VM
LocateRegistry.createRegistry(1099);
ITimeService serviceStub = (ITimeService) UnicastRemoteObject.exportObject(this);
// Hohlt das Registry Objekt
Registry registry = LocateRegistry.getRegistry();
// Bindet den TimeService in die RMIRegistry ein
registry.rebind("timeservice", serviceStub);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* (non-Javadoc)
*
* @see de.tutorials.service.ITimeService#getCurrentDate()
*/
public Date getCurrentDate() throws RemoteException {
System.out.println("server received call @" + System.currentTimeMillis());
return new Date();
}
}
Client Klasse :
Java:
import java.rmi.AccessException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
/**
* @author Administrator
*
* TODO Explain me
*/
public class Client {
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.getRegistry();
ITimeService service = (ITimeService)registry.lookup("//localhost:1099/timeservice");
System.out.println(service.getCurrentDate());
} catch (AccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
und der vollständigkeitshalber das Interface :
Java:
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Date;
/**
* @author Administrator
*
* TODO Explain me
*/
public interface ITimeService extends Remote {
public Date getCurrentDate() throws RemoteException;
}