# "Port already in use" RMI über SSL



## Guest (27. Nov 2007)

Hallo,
Ich versuche derzeit ein Programm zu schreiben mit dem ich RMI über SSL realisieren will.
Wenn ich rmiregistry und dann den Server starte, erhalte ich folgende Meldung:
"Port already in use: 2019; nested exception is:
java.net.BindException: Address already in use: JVM_Bind"
Bei Bedarf kann ich den Code posten, aber bei dem Beispiel von
java.sun.com/j2se/1.5.0/docs/guide/security/jsse/samples/index.html
habe ich exakt dasselbe Problem. Da ich ein Programm geschrieben habe, welches funktioniert nur ohne SSL, gehe ich davon aus, dass das Problem irgendwie mit SSL zutun hat. Leider habe ich da keine Erfahrung und bin weder bei google noch hier im Forum fündig geworden. :### 
Ich hoffe ihr könnt mir da weiter helfen.
Vielen Dank schonmal im Voraus


----------



## Angel4585 (27. Nov 2007)

Nun da scheint der Port schon belegt zu sein.
Entweder hast du das Programm zweimal gestartet, oder ein anderes Program pfuscht da rein.


----------



## Gast (27. Nov 2007)

Wenn ich rmiregistry nicht starte tritt der Fehler aber nicht auf. Und ich habe auch schon andere Ports durchprobiert (zum Beispiel 5555 und 2468)


----------



## Angel4585 (27. Nov 2007)

startest du die rmiregistry vllt ausversehen zweimal?


----------



## Gast (27. Nov 2007)

leider nicht


----------



## tuxedo (27. Nov 2007)

Hast du vielleicht (wie ich auch schon) den Fehler gemacht im Code  ein 


```
// Startet die RMI-Registry
			LocateRegistry.createRegistry(mControlPort);
```

zu schreiben und die Registry dennoch in der Console oder über ein Batch-Script zu starten?

Schau doch mal im Fehlerfall während des Fehlers in der Console mit "netstat -a -b" nach welcher Prozess denn den Port schon belegt... Im Windows Tastmanager wirst du, wenn du die Registry aus dem Code heraus gestartet hast, zumindest nicht 2x "rmiregistry" finden.

- Alex


----------



## Guest (27. Nov 2007)

Ach so ist das. Na das erklärt so einiges. Der Server läuft jetzt.
Vielen Dank ^___^

Jetzt wirft allerdings mein Client ne Exception und zwar folgende:

java.rmi.ConnectIOException: error during JRMP connection establishment; nested
exception is:
        javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

Und hier ist mein Client-Code:

```
import java.rmi.*;
import java.rmi.registry.*;
import javax.rmi.ssl.*;

public class RMIClient
{
    public static void main (String args [])
    {
        try
        {
            System.setSecurityManager(new RMISecurityManager());
            
            Registry reg=LocateRegistry.getRegistry("localhost",2019,new SslRMIClientSocketFactory());
            
            Remote rem=reg.lookup(RMIMethods.id);
            RMIMethods rm=(RMIMethods)rem;
            System.out.println(rm.getTime());
        }
        catch (Exception e)
        {
            System.out.println(e);
            System.exit(1);
        }
    }
}
```

Ich glaube die Exception kommt wenn lookup() ausgeführt wird.


----------



## HoaX (28. Nov 2007)

mach stat dem system.out.println(e) ein e.printStackTrace() in den catch-block. dann siehst du ganz genau welche zeile den fehler wirft


----------



## tuxedo (28. Nov 2007)

Anonymous hat gesagt.:
			
		

> Ach so ist das. Na das erklärt so einiges. Der Server läuft jetzt.
> Vielen Dank ^___^



Bitte ... aber erst felsenfest behaupten dass die registry nicht 2x läuft ;-)


----------



## Guest (28. Nov 2007)

HoaX hat gesagt.:
			
		

> mach stat dem system.out.println(e) ein e.printStackTrace() in den catch-block. dann siehst du ganz genau welche zeile den fehler wirft



Erledigt. Die Exception tritt in Zeile 16 auf, also bei lookup().


----------

