carookee - group communication for you
Home / JavaForum / Networking
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.245 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 10 von 610 (2%) |<   <   >   >|

Autor Moltar
Datum 17.04.07, 15:09
Betreff SSL + RMI


Hallo,

ich habe ein kleines RMI Projekt, das ich gerne auf RMI+SSL umstellen möchte. Dazu habe ich mir im Netz einige Tutorials durchgelesen und versucht, das ganze nachzubauen.

Leider erhalte ich grundsätzlich eine RemoteException, wenn der Client versucht, das lookup auszuführen.

Hier meine Quelltexte:

Der Server: Soll eigentlich nur einen String "verarbeiten"
public class SSLServer extends UnicastRemoteObject implements SSLServerInterface {
    private static final long serialVersionUID = 1L;
    
    public SSLServer() throws RemoteException {
        super(Registry.REGISTRY_PORT+1,
        new SslRMIClientSocketFactory(),
        new SslRMIServerSocketFactory());
        //super();
    }
    
    public String getMessage(String s) throws RemoteException {
        return s + " bar";
    }
}





Der serverStarter: Legt die Registry und den SecurityManager an und startet den Server
public class serverStarter {
    public static void main(String[] args) {
        SSLServer sslServer = null;
        Registry sslRegistry = null;
        try {
            sslServer = new SSLServer();
            } catch(RemoteException e) {
            System.out.println("Error: Cannot create SSLServer: RemoteException.");
        }
        System.out.println("Success: SSLServer created.");
        
        // Create security manager
        if(System.getSecurityManager()==null) {
            System.setSecurityManager(new RMISecurityManager());
        }
        System.out.println("Success: Security manager set.");
        
        // Create sslRegistry
        try {
            sslRegistry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT,
            new SslRMIClientSocketFactory(),
            new SslRMIServerSocketFactory());
            //sslRegistry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
            } catch (RemoteException e) {
            System.out.println("Error: Cannot create SSLRegistry: RemoteException.");
        }
        System.out.println("Success: SSLRegistry created.");
        
        // Bind sslServer to registry
        try {
            sslRegistry.bind("SSLSERVER", sslServer);
            } catch (AccessException e) {
            System.out.println("Error: Cannot bind SSLServer: AccessException");
            System.exit(0);
            } catch (RemoteException e) {
            System.out.println("Error: Cannot bind SSLServer : RemoteException");
            System.exit(0);
            } catch (AlreadyBoundException e) {
            System.out.println("Error: Cannot bind SSLServer: AlreadBoundException.");
            System.exit(0);
        }
        System.out.println("Success: SSLServer bound.");
    }
}


Der Client: Verbindet sich zum Server und soll einen String zur Verarbeitung senden.
public class SSLClient {
    private SSLServerInterface sslServer = null;
    private Registry sslRegistry = null;
    
    public SSLClient() {
    }
    
    public boolean connect(String ip, String name) {
        try {
            sslRegistry = LocateRegistry.getRegistry("localhost", Registry.REGISTRY_PORT);
            sslServer = (SSLServerInterface)sslRegistry.lookup(name);
            } catch (RemoteException e) {
            System.out.println("Client: RemoteException: connect()");
            return false;
            } catch (NotBoundException e) {
            System.out.println("Client: NotBoundException: connect()");
            return false;
        }
        return true;
    }
    
    public String getMessageFromServer(String msg) {
        String result = null;
        try {
            result = sslServer.getMessage(msg);
            } catch (RemoteException e) {
            return "Error: getMessageFromServer: RemoteException.";
        }
        return result;
    }
}


Und schließlich der ClientStarter, der den Client aufruft und ihn nacheinander seine Funktionen abarbeiten lässt.
public class clientStarter {
    public static void main(String args[]) {
        SSLClient c = new SSLClient();
        String msg = "foo";
        
        if(c.connect("localhost", "SSLSERVER")==false) {
            System.out.println("Error client connect");
            System.exit(0);
        }
        
        System.out.println("Client sending: " + msg);
        msg = c.getMessageFromServer(msg);
        System.out.println("Client received: " + msg);
    }
}


Der Output vom serverStarter ist wie folgt:

Success: SSLServer created.
Success: Security manager set.
Success: SSLRegistry created.
Success: SSLServer bound.


Und der vom clientStarter:

Client: RemoteException: connect()
Error client connect


Als Parameter für den serverStarter verwende ich:

-Djava.rmi.server.hostname=localhost
-Djava.security.policy=rmi.policy


Für den Client habe ich keine Parameter angegeben.

Wenn ich die Version ohne SSL verwendet funktioniert das Projekt (siehe auskommentierte Zeilen in SSLServer-Konstruktor und serverStarter Registry-Aufruf).

Wäre super, wenn jemand zumindest einen Ansatz liefern könnte, wo mein Fehler liegt.

Schonmal im Voraus vielen Dank an alle, die sich die Mühe machen, sich mit dem Problem zu befassen.


 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com