# RMI Verständnisfrage: Interface doppelt?



## automatix (18. Nov 2010)

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


----------



## Marcinek (18. Nov 2010)

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


----------



## automatix (18. Nov 2010)

Heißt das automatisch, dass die jeweils zweimal vorhanden sein müssen?


----------



## Noctarius (18. Nov 2010)

Die Klasse (bzw das Interface) muss nur einmal erstellt werden aber es muss in beiden Classpath's vorhanden sein.


----------



## mvitz (18. Nov 2010)

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 (18. Nov 2010)

mvitz hat gesagt.:


> Ich weiß nicht genau, was du mit "zweimal vorhanden" meinst. In der Regel teilt man solche Projekte in 3 Teile:
> 
> common (--> common.jar):
> RemoteInterface
> ...



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 (18. Nov 2010)

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


----------



## automatix (18. Nov 2010)

Alles klar. Danke!


----------



## tfa (18. Nov 2010)

> 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.


----------

