użycie java.rmi.Naming

0

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

0

Wskazuje tak, że teraz jak z klienta będziesz chciał wywołać metodę serwera, to najpierw go znajdzie mniej więcej tak:


RemoteServer server = (RemoteServer) Registry.lookup("//localhost:"+registryPort+"/dServer");
server.serverMethod();

1 użytkowników online, w tym zalogowanych: 0, gości: 1