# RMI Anfängerfrage



## Chairon (29. Jan 2008)

Hallo zusammen,

hab bisher in diesem Forum leider nix passendes zu meinem Problem gefunden.

Ich habe folgendes vor: 
Ein Datenbankserver soll auf Rechner A laufen, ein Gameserver auf Rechner B und die Clients auf den Rechnern C bis N. Naja das riecht nach RMI, wenn man nicht vor hat CORBA oder sowas zu verwenden (auch wenn die Sache mit dem Naming-Directory bei CORBA besser ist).

So um nun das Remote-Interface vom Datenbankserver bei Änderungen nicht ständig in sämtlichen Clients abändern zu müssen habe ich mir gedacht, dass ich alles, was nach außen hin angeboten werden soll (also Interface und einige Objekte die ich brauche) in eine ClassLib zu packen. 

Der Datenbankserver soll über ein Shell-Script (erstmal auf Windows, später dann auch auf Linux) gestartet werden können. Dazu gibt es eine Klasse *DBSStartup*, die dafür sorgt, dass das Datenbank-Server-Objekt registriert wird.

Noch ein Wort zu der Package-Struktur: Im Datenbankserver existiert nur das package "databaseserver", die ClassLib besteht aus den Packages "exceptions", "objects" und "remote".

Meine Frage ist nun, wie ich das ganze starten kann.
Ich hab es versucht mit

java -Djava.rmi.server.codebase=file:/%cd%\build\classes -Djava.security.policy=java.policy databaseserver.DBSStartup localhost 2000

allerdings bekomme ich damit die Meldung, dass die Klasse databaseserver.DBSStartup nicht gefunden werden kann. Weiß jemand woran das liegen könnte?


----------



## tuxedo (29. Jan 2008)

Chairon hat gesagt.:
			
		

> Weiß jemand woran das liegen könnte?



Sieht so aus als hättest du alles angegeben, bis auf der ClassPath ..

- Alex


----------



## Chairon (30. Jan 2008)

Wie gebe ich den Classpath denn korrekt an? Und auf was muss ich dort verweisen?


----------



## tuxedo (30. Jan 2008)

java -cp ./ausgehend/vom/aktuellen/verzeichnis/den/pfad/angeben/der/deine/jars/und/klassen/beinhaltet  -jar meinProgramm.jar

Weitere Infos findest du hier im Forum in der FAQ bzw. in "Java ist auch eine Insel" im Onlinebuch von Galileo Computing.

- Alex


----------



## Chairon (30. Jan 2008)

Ok, danke dir erstmal für deine Hilfe, ich probiere das mal aus.


----------



## Chairon (30. Jan 2008)

So ich hab das ganze hinbekommen. Die Lösung war die folgende:
Class-Path in das Manifest-File vom Datenbankserver eintragen und mit folgendem Aufruf starten:



> java -Djava.rmi.server.codebase=file:/%cd%\lib\DBRemoteLib.jar -Djava.security.policy=java.policy -jar DatabaseServer.jar localhost 2000




- Chairon


----------

