# RMI ohne Kommandozeileneingabe



## K-Man (16. Nov 2005)

Hallo.
Ist es möglich, eine RMI-Anwendung(Server) zu starten, ohne die lästigen Kommandozeilenbefehle eingeben zu müssen?

Soviel ich weiß, kann muss man Stub und Skeleton noch "per Hand" (rmic) erzeugen.

Die registry kann mit "LocateRegistry.createRegistry(1099);" gestartet werden.

Die CodeBase und die policy geb ich wie folgt ein...

System.setProperty( "java.rmi.server.codebase", K:\\XXX );
System.setProperty( "java.security.policy", "K:\\XXX\\java.policy" );

Jetzt kommt noch ein Fehler:

java.net.MalformedURLException: unknown protocol: k

Kann mir vielleicht jemand helfen? Oder hat einer einen Beispielcode, wie ich den Server ohne Kommandozeileneingaben starten kann?


----------



## Bleiglanz (16. Nov 2005)

na ja, K:\ ist wahrscheinlich ein Laufwerk? dann verwende file:// als Protokoll


----------



## K-Man (16. Nov 2005)

Ok jetzt ist es irgendwei gegangen. Man muss aber file/...verwenden  :lol: 
Danke
Jetzt heißt es dann aber ab und zu, dass der Port schon benutzt wird. Wie kann ich das umgehen? Ich benutze rebind zum registrieren der Objekte..


----------



## K-Man (16. Nov 2005)

Ach ja. Wie geht die file:/-Angabe unter Unix?
Irgendwie findet er da die policy-Datein nicht.
Also ich habs ua mit file:/home/user/xxx/java.policy probiert, aber es kommt die Fehlermeldung, die man erhält wenn man keine policy-file hat...


----------



## Bleiglanz (16. Nov 2005)

file:///home/user/xxx/java.policy


----------



## K-Man (16. Nov 2005)

Hat nicht geklappt. Hier mal mein Code

```
String codebase = "file:///home/user/Documents/engine/";
System.setProperty("java.rmi.server.codebase", codebase);
System.setProperty("java.security.policy", "file:///home/user/Documents/engine/java.policy");
System.setSecurityManager(new RMISecurityManager());
```


----------



## Guest (16. Nov 2005)

Versuche java.security.policy ohne file://


----------



## K-Man (16. Nov 2005)

Also falls es nicht jeder verstanden hat. Ich bekomme folgende Fehlermeldung:

access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)
java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)

Irgendwie findet er die java.policy nicht. Stub findet er, also müsste der Eintrag mit der Codebase stimmen.


----------



## Guest (16. Nov 2005)

K-Man hat gesagt.:
			
		

> Irgendwie findet er die java.policy nicht. Stub findet er, also müsste der Eintrag mit der Codebase stimmen.


Hast du jetzt endlich das file:// aus  java.security.policy entfernt oder nicht?
Es muss funktionieren, wenn die Datei vorhanden ist.


----------



## K-Man (16. Nov 2005)

Jetzt geht es. Also man braucht schon "file:///"

Irgendwie ist es am Anfang doch nicht gegangen, aber jetzt gehts 

Bin jetzt um einige Erfahrungen schlauer. Ua war zB im Server die hosts-Datei fehlerhaft. Deswegen konnte der Clients keine Verbingung aufbauen. Die Stubs wurden zwar erfolgreich vom Server geladen, aber die umgekehrte Verbingung war deswegen nicht möglich.

Danke für eure Hilfe


----------

