# Hinter RMI: Java IO oder NIO?



## tuxedo (4. Okt 2007)

Hallo,

hab mich gerade gefragt was hinter der RMI-Technik steckt... Wird da das "alte" IO von Java oder schon das "New IO" genutzt? Oder geht das ohne Umwege über IO/NIO Libs durch die JVM auf eine Native Ebene?

- Alex


----------



## Guest (4. Okt 2007)

Das "alte" IO von Java wird verwendet.


----------



## tuxedo (5. Okt 2007)

Hast du da irgendwelche Quellen?


----------



## Guest (5. Okt 2007)

alex0801 hat gesagt.:
			
		

> Hast du da irgendwelche Quellen?


Ja, den Code von Java.


----------



## tuxedo (5. Okt 2007)

Wenn ich mich in Eclipse die Klassen entlang hangle lande ich unter anderem bei:


```
sun.rmi.transport.tcp.TCPEndpoint
```

Und dazu hab ich keinen Source in der "src.zip" meines JDKs
Nirgendwo bin ich auf ein Import von java.io gestoßen. Und ich hab auch keine java.io typischen Klassen in verwendung gesehen. 

Kannst du deine "Quelle" etwas genauer spezifizieren?

- Alex


----------



## Guest (5. Okt 2007)

Schau dir die SocketFactories an. Es werden ganz normale Sockets erstellt. Von nio ist da nix zu finden.
z.B. in java.rmi.server.RMISocketFactory liefert unter getDefaultSocketFactory() eine Instanz von 
sun.rmi.transport.proxy.RMIMasterSocketFactory. Das ist wieder in rt.jar drin und im decompilierten
Code findest du die Verwendung von sun.rmi.transport.proxy.RMIDirectSocketFactory.
RMIDirectSocketFactory macht dann wieder nichts anderes als einfache Sockets zu instanziieren.


----------



## Guest (5. Okt 2007)

Und in sun.rmi.transport.tcp.TCPTransport gibt es eine Methode executeAcceptLoop(), die schön old-school-mässig
einen ConnectionHandler für die TCP-Verbindung instanziiert und ausführt.

```
...
Socket socket = null;
socket = serverSocket.accept();
...
try
{
   TCPTransport.connectionThreadPool.execute(new ConnectionHandler(socket, s));
}
catch(RejectedExecutionException rejectedexecutionexception)
{
   TCPTransport.closeSocket(socket);
   ...
}
```


----------



## tuxedo (5. Okt 2007)

Okay, danke. 

Weiß vielleicht jemand ob's angedacht ist RMI noch mit NIO zu implementieren?

Nur mal so rein aus interesse gefragt. Bedarf hab ich dafür zwar nicht, aber es gibt sicher Anwendungsbereiche wo das durchaus Sinn macht.

Gruß
Alex


----------

