# Problem mit RMI-Client



## Chrisi3210 (2. Aug 2009)

Hallo! 

Bei starten des RMI-Client bekomme ich folgende Fehlermeldung:

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkConnect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source)
	at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source)
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
	at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
	at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
	at sun.rmi.server.UnicastRef.newCall(Unknown Source)
	at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
	at java.rmi.Naming.lookup(Unknown Source)
Der Server Funktioniert.

Wieso funktioniert der Client nicht? Wo ist das Problem?


----------



## sparrow (2. Aug 2009)

Da gibt es ein Sicheriheitsproblem.
Handelt es sich um ein Applet oder um eine WebStart-Applikation?
Die laufen in einer Sandbox und müssen um eine Netzadresse außer ihrem Ursprung zu erreichen, signiert werden.


----------



## Chrisi3210 (2. Aug 2009)

Das ist eine normale RMI-Anwendung, die via genady in Eclipse gestartet wurde.


----------



## sparrow (2. Aug 2009)

Dann zeig mal deine policy-Datei und wie du den RMISecurityManager aufrufst.


----------



## Chrisi3210 (2. Aug 2009)

Ich habe keine policydatei! 

Ich rufe den mit 


```
System.setSecurityManager(new RMISecurityManager());
```

auf.


----------



## sparrow (2. Aug 2009)

Handbuch der Java-Programmierung ( www.javabuch.de - Das Handbuch der Java-Programmierung ), 46.2.4.


----------



## Chrisi3210 (2. Aug 2009)

@Sparrow:
Das Kapitel hat nichts mit meinem Problem zu tun! Das ist keine Socketprogrammierung!


----------



## sparrow (2. Aug 2009)

Hmmm... hat der Guido etwa seine Kapitel neu nummeriert?

Bei mir sieht es so aus:

46 RMI
46.2 Aufbau eines einfachen Uhrzeit-Services
46.2.4 Registrieren der Objekte


----------



## Chrisi3210 (2. Aug 2009)

sparrow hat gesagt.:


> Hmmm... hat der Guido etwa seine Kapitel neu nummeriert?


Scheint so?

Die RMI steht in der 47!
;-)


----------



## Chrisi3210 (3. Aug 2009)

Meine Policy sieht so aus:


```
// Standard extensions get all permissions by default
grant codeBase "file:${{java.ext.dirs}}/*" {
	permission java.security.AllPermission;
};
// default permissions granted to all domains

grant { 
// Allows any thread to stop itself using the java.lang.Thread.stop()
// method that takes no argument.
// Note that this permission is granted by default only to remain
// backwards compatible.
// It is strongly recommended that you either remove this permission
// from this policy file or further restrict it to code sources
// that you specify, because Thread.stop() is potentially unsafe.
// See "http://java.sun.com/notes" for more information.
permission java.lang.RuntimePermission "stopThread";
// allows anyone to listen on un-privileged ports
permission java.net.SocketPermission "localhost:1024-", "listen";
// "standard" properies that can be read by anyone
permission java.util.PropertyPermission "java.version", "read";
 permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "path.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
};
```

Ist der Standarteintrag.

Muss ich die so ändern wie im Guido ...... beschrieben?


----------



## Chrisi3210 (6. Aug 2009)

Welche Bezeichnung muss die policy haben und in welchem verzeichnis muss die stehen?


----------



## wizzard16 (17. Aug 2010)

gibt es hierzu schon eine Lösung? habe genau das selbe Problem =(


----------

