RMI: ConnectException

Status
Nicht offen für weitere Antworten.

boskop

Aktives Mitglied
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:

Code:
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:

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

Jetzt das Problem:

Code:
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

Bekanntes Mitglied
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:

Code:
grant {
	permission java.security.AllPermission;
};


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

Code:
	    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

Code:
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

Neues Mitglied
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?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben