Avatar billede california Nybegynder
18. september 2007 - 14:10 Der er 16 kommentarer og
1 løsning

Problemmer med Centos og Java RMI /etc/hosts

Hej Forum,

I en test opstilling med en Windows RMI-Server og Centos-klienter tilslutter, virker min kode. Men når jeg flytter RMI-Serveren til en af Centosmaskinerne kan der hverken oprettes forbindelse fra Windows eller Centos-klienterne.

Jeg har søgt op internettet og fundet andre der har samme fejl. Deres problemmer har været noget med /etc/hosts konfigurationen, men  selvom jeg prøver dette kan jeg stadig ikke oprette en forbindelse.

Fejlbeskeden er følgenden:
Connection refused to host: 127.0.0.1; nested exception is:
        java.net.ConnectException: Connection refused

Min /etc/hosts :
10.0.0.3                servername
127.0.0.1              servername localhost

Endvidere skal det siges at jeg godt kan lave en telnet 10.0.0.2 1099 og opnp forbindelse. Ligesom det først er ved RMI Lookup klient programmet fejler.

Er der nogen af Jer der har oplevet dette?
Avatar billede arne_v Ekspert
18. september 2007 - 15:26 #1
Firewall ?
Avatar billede california Nybegynder
18. september 2007 - 16:23 #2
Hej Arne,

Det burde der ikke være, da jeg jo heller ikke ville kunne oprette en forbindelse med telnet. Jeg tror det essentielle i dette er at den prøver at forbinde til 127.0.0.1 og ikke 10.0.0.2, hvilket kan ses fra den exception der kastes.
Avatar billede arne_v Ekspert
18. september 2007 - 17:17 #3
Hvordan ser lookup URL ud ?
Avatar billede california Nybegynder
18. september 2007 - 17:21 #4
Client:

public class SampleClient 
{
  public static void main(String[]  args)
  {
      if( args.length == 0) {
          System.out.println("Hostname missing");
          System.exit(0);
      }
      try
        {
          System.out.println("Tilslutter: " + args[0]);
          Registry registry = LocateRegistry.getRegistry(args[0],1099);
          SampleServer remoteObject = (SampleServer)registry.lookup("SAMPLE-SERVER");
          System.out.println("Got remote object");
          System.out.println(" 1 + 2 = " +
              remoteObject.sum(1,2) );
        }
      catch (RemoteException exc)
        {
          System.out.println("Error in lookup: " + exc.getMessage());
        }
      catch (java.rmi.NotBoundException exc)
        {
          System.out.println("NotBound: " + exc.toString());
        }
  }
}

Server:
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;

public class SampleServerImpl extends UnicastRemoteObject
                            implements SampleServer
{
    int counter = 1;
  SampleServerImpl() throws RemoteException
  {
    super();
  }
  public int sum(int a,int b) throws RemoteException
  {
      System.out.println("Bang! " + counter++);
      return a + b;
  }
  public static void main(String args[])
  {
    try
      {
        SampleServerImpl Server = new SampleServerImpl();     
        LocateRegistry.createRegistry(1099);
        Registry registry = LocateRegistry.getRegistry(1099);
        registry.rebind("SAMPLE-SERVER", Server); 
        System.out.println("Server waiting.....");
      }
    catch (RemoteException re)
      {
        System.out.println("Remote exception: " + re.toString());
      }

  }
}
Avatar billede arne_v Ekspert
18. september 2007 - 18:08 #5
Proev at angive IP i URL.

Ikke "SAMPLE-SERVER" men "rmi://10.0.0.3:57777/SAMPLE-SERVER".
Avatar billede california Nybegynder
18. september 2007 - 18:57 #6
Desværre. Samme fejl.
Avatar billede california Nybegynder
18. september 2007 - 19:14 #7
Avatar billede arne_v Ekspert
18. september 2007 - 19:21 #8
Ja (hvis det er den port du vil bruge).

Og du angiver det paa baade server og client ?
Avatar billede arne_v Ekspert
18. september 2007 - 19:23 #9
Det er client der giver fejlen ikke ?

Kan du proeve:

-Djava.rmi.server.hostname=10.0.0.3

paa server startup ?
Avatar billede california Nybegynder
18. september 2007 - 19:34 #10
Hvordan kalder jeg -Djava?  Java genkender ikke kommandoen
Avatar billede arne_v Ekspert
18. september 2007 - 19:43 #11
java -Djava.rmi.server.hostname=10.0.0.3 SampleServerImpl
Avatar billede california Nybegynder
18. september 2007 - 19:57 #12
Exception in thread "main" java.lang.NoClassDefFoundError: SampleServerImpl

Det hele ligger i en Jar dist der hedder JavaRMI_Server, men selvom jeg kalder det på nedestående måde kommer samme fejl:
java -Djava.rmi.server.hostname=10.0.0.3 JavaRMI_Server
Avatar billede arne_v Ekspert
18. september 2007 - 21:10 #13
java -Djava.rmi.server.hostname=10.0.0.3 -cp JavaRMI_Server.jar SampleServerImpl
Avatar billede california Nybegynder
19. september 2007 - 16:59 #14
Hej Arne, nu kom det endelig til at virke med din hjælp.

Post et svar og du får pointene.

Mange tak for hjælpen!

Ved du om man kan tilføje det til programmet da det skal afvikles på x antal maskiner og jeg vil være træt af at skulle lave startup scripts til programmerne?
Avatar billede arne_v Ekspert
20. september 2007 - 00:59 #15
ok
Avatar billede arne_v Ekspert
20. september 2007 - 01:02 #16
Du kan angive main class i manifestet og bruge -jar fremfor -cp.

-D i command line må kunne erstattes af et System.setProperty kald i din main.
Avatar billede california Nybegynder
20. september 2007 - 12:35 #17
Det vil jeg prøve!
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