Avatar billede fredslund Nybegynder
04. december 2002 - 12:32 Der er 5 kommentarer og
1 løsning

RMI og SSL

Kære eksperter!

Jeg sidder og roder lidt med noget SSL til min RMI-forbindelse, men det virker ikke! - ØV!
Måske I kan hjælpe???

Jeg får en java.rmi.NotBoundException, når jeg kører følgende rmi-klient:

import java.rmi.*;


public class KlientTest
{
    public KlientTest(){}
   
    public static void main(String[] args)
    {   
        try{
            ServerInterface server = (ServerInterface)Naming.lookup("//localhost:1099/Resultatkravsystem");
            KlientAdminInterface klientAdm = server.getKlientAdmin();
            KlientInterface klient = (KlientInterface)klientAdm.get("770573-0436");
            System.out.println(klient.allToString());    }
        catch(Exception re){
            System.out.println("Fejl...\n"+ re);}
    }
}
Avatar billede arne_v Ekspert
04. december 2002 - 12:45 #1
Nu kan jeg ikke se noget SSL i din kode.

Fejlen-beskeden siger at der ikke er en server,
som har bindet den pågældende resource.

Enten kører serveren ikke eller serveren har
bindet til en anden rmiregistry eller navnet
passer ikke.

PS: Plejer man ikke at bruge rmi://localhost/Resultatkravsystem ?
Avatar billede carstenknudsen Nybegynder
04. december 2002 - 12:54 #2
//localhost er den korrekte start, men som arne_v
efterlyser, hvor er SSL (det er det spændende)?
Avatar billede fredslund Nybegynder
04. december 2002 - 12:56 #3
Den viste kode virker fint, hvis jeg blot kalder super() uden parametre på serveren..... - så der skulle ikke umiddelbart være noget problem med selve RMI'en...

public Server() throws RemoteException
    {
      //super(); //virker - men uden SSL
      super(0, new KlientFabrik(), new ServerFabrik());
Avatar billede fredslund Nybegynder
04. december 2002 - 12:58 #4
De to "fabrikker" ser således ud:

public class ServerFabrik
    implements RMIServerSocketFactory, Serializable {

    public ServerSocket createServerSocket(int port)
        {
            System.out.println("I ServerFabrik.....");
          SSLServerSocketFactory serverFac = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
            SSLServerSocket serverSoc = null;
            try
            {
                serverSoc = (SSLServerSocket)serverFac.createServerSocket(port);
            }catch (IOException e){System.out.println("Fejl i ServerFabrik: "+e);}
           
            return serverSoc;
    }
}


og den anden:

public class KlientFabrik    implements RMIClientSocketFactory, Serializable
{
    private String minHost;
    public KlientFabrik(String minHost)
    {
        this.minHost = minHost;
    }
  public Socket createSocket(String host, int port)    throws IOException
    {
        System.out.println("I KlientFabrik..........."+host);
    System.out.println("Min host: "+minHost);
        SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();
    SSLSocket socket = (SSLSocket)factory.createSocket(host, port);
    return socket;
    }
}
Avatar billede fredslund Nybegynder
04. december 2002 - 13:05 #5
Tag jer ikke af konstruktøren, - det er blot fordi jeg har prøvet at lege lidt med at lave createSocket med localhost....
Avatar billede fredslund Nybegynder
22. april 2003 - 20:23 #6
Problemet var en certifikatfil, der ikke lå det rigtige sted!
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