RMI Problem Client-Server

TimoH.

Mitglied
Ich habe schonwieder ein kleines Problem, wo ich jetzt nen paar Stunden dran festhänge.

Es geht um den Methoden-Aufruf vom Clienten zum Server übers Internet.

Der lookup() funktioniert einwandfrei => Er findet den RMI-Server, jedoch wenn ich eine Methode aufrufen will, gibt es einen timeout:
Code:
java.rmi.ConnectException: Connection refused to host: 10.0.0.2; nested exception is: 
	java.net.ConnectException: Connection timed out: connect

10.0.0.2 ist die lokale addresse vom server (wobei ich zum connecten natürlich nicht die lokale angebe^^).

Hier einmal die codeausschnitte vom clienten und server.

Server:
Java:
...
        try {
            chat = new ChatHandler(); //Die Server Klasse
            Registry reg = LocateRegistry.createRegistry(ClientServer.PORT);
            reg.rebind(ClientServer.BIND_NAME, chat);
        } catch (Exception e){
            System.out.println("Fehler: "+e);
        }
...

public class ChatHandler extends UnicastRemoteObject implements ClientServer{

    private Map<String,Callback> clients;

    public ChatHandler() throws RemoteException {
        super();
        clients = Collections.synchronizedMap(new HashMap<String,Callback>());
    }

    public void clientConnect(String clientName, Callback listener) throws RemoteException {
        if(clients.containsKey(clientName)){
            throw new RemoteException(clientName+" ist bereits verbunden!");
        }else{
            clients.put(clientName, listener);
            updateClientUserList(clientName,clientName,ClientServer.UPDATE_LIST_ADD,false);
            System.out.println("ECP: "+clientName+" hat sich verbunden!");           
        }
    }

...

und der Client:
Java:
...
                    try {
                        callback = new CallbackImpl(ChatMainGUI.this);
                        server = lookupServer();
                        server.clientConnect(options.getOptionen().getUserName(), callback);
                        userList = server.getClientList();
                    } catch (RemoteException ex) {
                        printDebug("server.connect: " + ex);
                    }
...
    private ClientServer lookupServer(){
        try {
            Registry reg = LocateRegistry.getRegistry(options.getOptionen().getServerIP(), options.getOptionen().getPort());
            return (ClientServer) reg.lookup(ClientServer.BIND_NAME);
        } catch (Exception e) {
            onError("Server ist nicht erreichbar!");
            printDebug("lookupServer: "+e);
        }
        return null;
    }

Hat jemand eventuell ne Ahnung was ich falsch mache?

Freue mich über eure Hilfe

Mfg Timo
 
hm ich glaube mein Problem liegt daran, dass mein Server zwar vom
Code:
UnicastRemoteObject
erbt, dort jedoch keinen Port im
Code:
super();
aufruf übergibt.

Die Ports etc. sind alle am Router eignestellt. werde es mal ausprobieren, und dann schreiben obs geklappt hat.
 

Zurück
Oben