RMI - eigene Registry (no security manager: RMI class loader disabled)

Status
Nicht offen für weitere Antworten.

Saxony

Top Contributor
Hiho,

ich arbeite zur Zeit mit Java RMI.

Ich möchte die Erstellung der Registry direkt von meinem Server erledigen lassen und nicht rmiregistry.exe des JDK verwenden.

Mein Server macht dies im Moment so:
Java:
LocateRegistry.createRegistry(9006);

Registry registry = LocateRegistry.getRegistry(9006);
registry.rebind("MyService", new MyServiceImpl());

Dies soll mir lokal eine Registry mit Port 9006 anlegen. Da MyServiceImpl bereits von UnicastRemoteObject erbt spart man sich ja das UnicastRemoteObject.exportObject(obj, port).

Naja so weit so gut - starte ich nun den Server, erhalte ich folgende Exception:

Code:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: myproject.rmi.server.IMyService (no security manager: RMI class loader disabled)

IMyService ist ein Interface, welches von Remote erbt und die zu verwendenden Methoden enthält.
IMyService wird von MyServiceImpl implementiert.

Java:
public class MyServiceImpl extends UnicastRemoteObject implements IMyService

Wie erzeuge ich nun meine eigene Registry auf einem bliebigen Port ohne Verwendung von rmiregistry.exe?

bye Saxony
 
T

tuxedo

Gast
Puuh. Sieht soweit alles korrekt aus. Hast du mal probiert obs mit dem Standardport 1099 besser funktioniert?

- Alex
 

Saxony

Top Contributor
Hiho,

also wenn ich es genau so wie oben mit 1099 versuche, erhalte ich die selbe Exception.

Verwende ich rmiregistry:

Code:
start rmiregistry -J-Djava.class.path=D:\MyProject\bin -J-Djava.rmi.server.hostname=192.168.4.75

Und im Server:

Java:
Naming.rebind("MyService", new MyServiceImpl());

dann klappt alles.

Kann es sein, dass bei Erzeugung einer eigenen Registry vorher einen SecurityManager setzen muss? Es gibt doch da, RMISecurityManager. Aber eigentlich wollte ich ja die Angabe von codebase, classpath oder download von remote locations vermeiden indem ich die Registry eben per Hand erzeuge, da müsste er ja zumindest für den Server alles im eigentlichen Application ClassPath finden.

bye Saxony
 
T

tuxedo

Gast
Als ich noch RMI benutzt hab, hab ich glaub ich nie einen SecurityManager gesetzt. Ging AFAIR immer auch so.
 

Saxony

Top Contributor
Hiho,

also wenn man nach der Exception googlet, kommt immer mit einem

Java:
System.setSecurityManager(new RMISecurityManager());

soll es klappen!

Tja - leider hat meine Eclipse RCP Anwendung keine Rechte mehr Ihren Classloader zu verwenden bzw. in das logfile zu schreiben.

Aber wo man auch schaut soll es so - teilweise auch ohne RMISecurityManager - funktionieren.

Teilweise sind die Beschreibungen hierzu auch noch aus einer Zeit vor JDK 1.5... ka vielleicht hat sich da ja was geändert.

bye Saxony
 

Saxony

Top Contributor
Hiho,

nunja was soll ich sagen:

klappt nicht:
Java:
LocateRegistry.createRegistry(9006);
 
Registry registry = LocateRegistry.getRegistry(9006);
registry.rebind("MyService", new MyServiceImpl());

so klappt es: !?!
Java:
Registry registry = LocateRegistry.createRegistry(9006);

registry.rebind("MyService", new MyServiceImpl());

bye Saxony
 
T

tuxedo

Gast
Das ist ja "strange"....???:L
Wieder was dazu gelernt ...

Aber gut, hauptsache es funzt jetzt :)

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P RMI - Neue eigene Instanz für jeden Aufruf auf nicht serialisierbares Objekt - wie? Netzwerkprogrammierung 0
T Eigene Scriptsprache Netzwerkprogrammierung 25
B Eigene Objekte per RMI übergeben Netzwerkprogrammierung 2
P Socket Client empfängt nur eigene Text-Eingaben Netzwerkprogrammierung 30
G Eigene IP-Adresse hinter Router ermitteln Netzwerkprogrammierung 1
M Eigene IP-Adresse Netzwerkprogrammierung 37
R RMI Registry Netzwerkprogrammierung 1
C RMI Bereits bestehende Registry nutzen Netzwerkprogrammierung 2
T RMI Registry nicht mit beenden. Netzwerkprogrammierung 6
H RMI Connection refused bei RMI-Registry Netzwerkprogrammierung 10
K Getrennte Rechner für RMI-Server/RMI-Registry, bzw. Alternativen? Netzwerkprogrammierung 5
T RMI Registry nachsehen was drinnen ist Netzwerkprogrammierung 2
K Registry Netzwerkprogrammierung 4
R Registry RMI starten ? Netzwerkprogrammierung 7
F Problem mit RMI Registry Netzwerkprogrammierung 4
M RMI: Registry.bind oder Naming.bind? Netzwerkprogrammierung 2
E Mit Java Registry ändern? Netzwerkprogrammierung 7
P RMI ohne Security Netzwerkprogrammierung 5
J Applet Security - java.security.AccessControlException: access denied Netzwerkprogrammierung 3
DStrohma RMI Security Manager & Policy-File Netzwerkprogrammierung 8
G Java rmi Fehlermeldung java.security.AccessControlException Netzwerkprogrammierung 3
R java.security.AccessControlException wegen NAT? Netzwerkprogrammierung 5
M sockets (security) Netzwerkprogrammierung 2

Ähnliche Java Themen


Oben