RMI Verständnisfrage: Interface doppelt?

automatix

Aktives Mitglied
Hallo zusammen!

Bei einer verteilten Anwendung, die auf RMI aufbaut, dient ein (von java.rmi.Remote erbendes) Interface als Bindeglied zwischen dem Client und dem entfernten Server-Objekt. Wenn ich es also richtig verstehe, muss das Interface auf beiden Rechnern physisch vorhanden sein. Ist das wirklich so? Oder gibt es vielleicht eine Möglichkeit, das eleganter zu gestalten, so dass das Interface einmal zentral anlegt wird und die Clients nur darauf zugreifen?

Danke
 
M

Marcinek

Gast
Die Interfaces müssen zur Ausführungszeit in beiden Classpathes (Server und Client) liegen.
 

mvitz

Top Contributor
Ich weiß nicht genau, was du mit "zweimal vorhanden" meinst. In der Regel teilt man solche Projekte in 3 Teile:

common (--> common.jar):
RemoteInterface
...

server:
common.jar
RemoteInterfaceImpl
...

client:
common.jar
...
 

automatix

Aktives Mitglied
Ich weiß nicht genau, was du mit "zweimal vorhanden" meinst. In der Regel teilt man solche Projekte in 3 Teile:

common (--> common.jar):
RemoteInterface
...

server:
common.jar
RemoteInterfaceImpl
...

client:
common.jar
...

Genau. Und meine Frage ist, ob das common.jar mit RemoteInterface(-s) physisch auf beiden Rechnern liegen muss:

Server-Rechner:
1. Serverpart der Anwendung (RemoteInterfaceImpl...)
2. RemoteInterface
Client-Rechner
1. Clientpart der Anwendung
2. RemoteInterface
 

Noctarius

Top Contributor
Ja sicher, sonst liegt es da doch nicht im Classpath, alternativ Dateifreigabe, dann ist es physikalisch nur einmal vorhanden ;)
 

tfa

Top Contributor
alternativ Dateifreigabe, dann ist es physikalisch nur einmal vorhanden
Oder "Remote Class Loading", der Client kann sich seine Klassen auch übers Netz direkt vom Server holen.
Die Lösung von mvitz ist aber sicherlich am einfachsten und auch am besten in den meisten Fällen.
 

Ähnliche Java Themen

Neue Themen


Oben