# RMI: ConnectException



## boskop (5. Mai 2006)

Hallo, 

ich habe ein Problem mit RMI. Zuerst vorneweg, ich habe noch nie ein RMI programm geschrieben, sprich das ist mein erstes. Da es aber sehr banal ist, sollte das Ding doch laufen... hab ich mir gedacht.
Dem ist aber leider nicht so, deshalb frag ich nach langem Suchen mal hier nach.

Also ich hab einen Server: 


```
public static void main(String args[]) {
    try {
      System.out.println("Starting server...");
      
      Registry registry = null;
      try {
        registry = LocateRegistry.getRegistry(Registry.REGISTRY_PORT);
      } catch(Exception e) {
        registry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
      }
      
      
      ServerImpl server = new ServerImpl();
      RemoteStub stub = UnicastRemoteObject.exportObject(server);
      registry.rebind(ServerImpl.LOOKUPNAME, stub);
      
      System.out.println("Server ready!");
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(0);
    }
  }
```

Und den Client dazu:


```
private void setupConnection() throws Exception {
    server = (Server) Naming.lookup("rmi://localhost:" + Registry.REGISTRY_PORT + "/" + Server.LOOKUPNAME);
  }
```

Jetzt das Problem:


```
java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
     [code=Java] java.net.ConnectException: Connection refused: connect
     [code=Java] at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
     [code=Java] at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
     [code=Java] at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
     [code=Java] at sun.rmi.server.UnicastRef.newCall(Unknown Source)
     [code=Java] at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
     [code=Java] at java.rmi.Naming.lookup(Unknown Source)
     [code=Java] at ch.corix.pls.prc.ComponentAction.setupConnection(ComponentAction.java:47)
     [code=Java] at ch.corix.pls.prc.ComponentAction.actionPerformed(ComponentAction.java:28)
     [code=Java] at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
     [code=Java] at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
     [code=Java] at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
     [code=Java] at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
     [code=Java] at javax.swing.AbstractButton.doClick(Unknown Source)
```

Ich such jetzt schon ewig, dachte schon, es könnte ev. an der Firewall liegen, aber das war's auch nicht.

Weiss jemand Rat?

Danke, 

Boskop


----------



## Ralf Ueberfuhr (5. Mai 2006)

Das klingt nach fehlenden Rechten. Ich habe auch wenig Erfahrung, aber das sollte helfen:

Füge deinem Project eine leere (Text-)Datei namens "policy" hinzu, mit folgendem Inhalt:


```
grant {
	permission java.security.AllPermission;
};
```


Bevor du irgendwelchen Code mit RMI ausführen lässt, füge das hinzu:


```
System.setProperty("java.security.policy", voller_Pfad_zur_policy_Datei);
	    if(System.getSecurityManager() == null) System.setSecurityManager(new RMISecurityManager());
```


Wenn du die policy-Datei im Projektordner direkt hast, dann kannst du anstelle von voller_Pfad_zur_policy_Datei auch


```
new File("policy").getAbsolutePath()
```

einsetzen.

Damit räumst du deinem Programm sämtliche Rechte ein. Wenn du nicht alle Rechte setzen magst, dann erkundige dich nochmal anderweitig über den Inhalt der policy-Datei. Fürs Erste sollte das hier reichen.


----------



## mbo (8. Mai 2006)

Hallo,
es muss nicht zwangsläufig ein Rechteproblem sein, obwohl ich das nicht ausschliesen will. Ich schaue in solchen Fällen (mehr oder weniger lange) in die API.

gem. JAVA-API (http://java.sun.com/j2se/1.5.0/docs/api/) findet dein Programm eine Methode nicht.

"_java.net.ConnectException: Connection refused: connect_" spricht dafür, dass er weder den angegebenen Port
noch einen Socket findet, d.h. der Server läuft nicht.

Server und Client liesen sich problemlos kompilieren?


----------



## Fabian030 (22. Mai 2009)

bssst
forget it. ^^


----------

