Chcę aby mój program mógł wywołać metodę w programie-serwerze(tj. programie rozszerzającym klasę Remote) korzystając z java.rmi. Mam jednak problem z określeniem lokalizacji teog programu za pomocą Naming.rebind. Poniżej umieszczam kod, który znalazłem w necie jednak nie rozumiem jak dokładnie użyta w nim metoda rebind wskazuje na lokalizację serwera.
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;
import java.security.AccessControlException;
public class ServerApp {
public static void main(String[] s){
boolean err = false;
int registryPort = 8000;
try{
LocateRegistry.createRegistry(registryPort);
Server server = new ServerImpl("Simple datetime server: v. 1.0.0");
UnicastRemoteObject.exportObject(server);
Naming.rebind("//localhost:"+registryPort+"/dServer", server);
}
catch(java.rmi.UnknownHostException uhe){
System.out.println("[error] podana nazwa hosta nie jest \n identyfikatorem tego komputera\n"+uhe+"\n");
err = true;
}
catch(AccessControlException ace){
System.out.println("[error] nie masz uprawnien aby uruchomic serwer\n na tym porcie dla podanej nazwy hosta\n"+ace+"\n");
err = true;
}
catch(RemoteException re){
System.out.println("[error] nie udało się zarejestrować \n zdalnego obiektu serwera\n"+re+"\n");
err = true;
}
catch(MalformedURLException mURLe){
System.out.println("[error] wewnętrzny błąd" + mURLe+"\n");
err = true;
}
catch(Exception ee){
System.out.println("[error] cccc"+ee.getMessage()+"\n");
err = true;
}
if(!err)
System.out.println("\n[OK] Simple datetime server running...\n");
}
}
Proszę o wyrozumiałość. To mój pierwszy program korzystający z java.rmi.*