Avatar billede destructor Nybegynder
15. februar 2004 - 22:31 Der er 9 kommentarer

Connection refused

Jeg kører en server lokalt og det har virket fint... lige indtil jeg fik Internet. Koden ser således ud:

    String regNavn = "Server";
    try
    {
      LocateRegistry.createRegistry(1099);
      Server server = new Server();
      Naming.rebind(regNavn,server);
      System.out.println(regNavn + " - OP-Serveren er startet!");
    }
    catch(Exception e)
    {
      System.err.println("Fejl i server-opstart: " + e);
      e.printStackTrace();
    }

og fejlen lyder som følgende:

Fejl i server-opstart: java.rmi.ConnectException: Connection refused to host: 10.0.0.8; nested exception is:
    java.net.ConnectException: Connection refused: connect

java.rmi.ConnectException: Connection refused to host: 10.0.0.8; nested exception is:
    java.net.ConnectException: Connection refused: connect

    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:567)

    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)

    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)

    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:313)

    at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)

    at java.rmi.Naming.rebind(Naming.java:160)

    at OP.Server.main(Server.java:369)

Caused by: java.net.ConnectException: Connection refused: connect

    at java.net.PlainSocketImpl.socketConnect(Native Method)

    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)

    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)

    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)

    at java.net.Socket.connect(Socket.java:452)

    at java.net.Socket.connect(Socket.java:402)

    at java.net.Socket.<init>(Socket.java:309)

    at java.net.Socket.<init>(Socket.java:124)

    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)

    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)

    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)
    ... 6 more

Er der nogen der kan se hvad problemet er?
Jeg kører ikke nogen firewall, og har ikke ændret noget i security manager
Avatar billede arne_v Ekspert
15. februar 2004 - 22:37 #1
Har din server IP 10.0.0.8 ?

Har regNavn den rigtige værdi ?
Avatar billede destructor Nybegynder
15. februar 2004 - 22:43 #2
jeg kører serveren lokalt

det er serveren jeg kører i ovenstående eksempel,

regNavn = "Server" er hvad jeg har sat den til
Avatar billede ulrikm Nybegynder
15. februar 2004 - 22:44 #3
Hvad bruger du LocateRegistry til? Skulle det ikke nærmere være som nedenstående:

  String regNavn = "Server";
    try
    {
      Registry registry = LocateRegistry.createRegistry(1099);
      Server server = new Server();
      registry.rebind(regNavn,server);
      System.out.println(regNavn + " - OP-Serveren er startet!");
    }
    catch(Exception e)
    {
      System.err.println("Fejl i server-opstart: " + e);
      e.printStackTrace();
    }
Avatar billede arne_v Ekspert
15. februar 2004 - 22:48 #4
LocateRegistry.createRegistry(1099);

er bare en måde at slippe for manuelt at starte RMIRegistry på - den har jeg
også brugt en gang imellem.
Avatar billede destructor Nybegynder
15. februar 2004 - 22:49 #5
Jo, perfekt. Tak skal du ha'!
Avatar billede destructor Nybegynder
15. februar 2004 - 22:52 #6
Jeg forstår bare ikke helt hvad forskellen er. Er det ikke det samme der sker i begge tilfælde?
Avatar billede ulrikm Nybegynder
15. februar 2004 - 22:53 #7
(Naming.rebind() skal bruge en server,port og objektnavn, Registry.rebind() kun et objektnavn, da Registry allerede er lokaliseret)

arne> Jep, et retorisk spørgsmål
Avatar billede arne_v Ekspert
15. februar 2004 - 22:57 #8
På en eller anden måde må "Server" pege på 10.0.0.8 som det created registry ikke
lytter på.

Hvis du vil have mysteriet opklaret er du nødt til at checke din IP konfiguration.
Avatar billede ulrikm Nybegynder
15. februar 2004 - 23:12 #9
Fra dokumentationen af java.rmi.Naming:

If host is omitted, the host defaults to the local host. If port is
omitted, then the port defaults to 1099, the "well-known" port that RMI's registry, rmiregistry, uses.

- det burde altså virke på begge måder, så det er stadig mystisk.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester