Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

RMI Fehler: access denied

39 views
Skip to first unread message

HeidiWeber

unread,
Jun 1, 2007, 12:20:46 PM6/1/07
to
Hallo,

ich habe folgendes Problem bei meinem RMI-Projekt:

Der Server und der Client sind in Eclipse als eigenständige Projekte
angelegt.
Solange sich die beiden Main-Klassen (vom Server und vom Client) - in
ihrem eigenen Projekt(-Ordner) -im selben Package(-Namen) befinden,
funktioniert mein RMI-Projekt.

Wenn ich aber ein Package umbenenne, kommt folgende Fehlermeldung:


Client exception: java.rmi.UnmarshalException: error unmarshalling
return; neste
d exception is:
java.lang.ClassNotFoundException: example.hello.RemoteLogin
(no security
manager: RMI class loader disabled)
java.rmi.UnmarshalException: error unmarshalling return; nested
exception is:
java.lang.ClassNotFoundException: example.hello.RemoteLogin
(no security
manager: RMI class loader disabled)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at example.hello1.Client.main(Client.java:21)
Caused by: java.lang.ClassNotFoundException: example.hello.RemoteLogin
(no secur
ity manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadProxyClass(Unknown Source)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(Unknown
Source)
at java.rmi.server.RMIClassLoader.loadProxyClass(Unknown
Source)
at sun.rmi.server.MarshalInputStream.resolveProxyClass(Unknown
Source)
at java.io.ObjectInputStream.readProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown
Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
... 2 more

Die Fehlermeldung bedeutet doch, dass kein securitymanager vorhanden
ist.

Somit habe ich im Ordner vom Client als auch beim Server die folgende
Datei (client.policy) - direkt auf oberster Ebene im jeweiligen
Projektordner - angelegt:

grant {
permission java.net.SocketPermission "192.168.0.2:1099", "connect,
accept, resolve";
permission java.security.AllPermission "", "";
};

Um die Datei den SecurityManager zu starten, habe ich dann noch
fogendes ganz am Anfang der Main-Methoden vom Server und vom Client
eingebaut:

System.setProperty("java.security.policy", "client.policy");
if (System.getSecurityManager() == null)
System.setSecurityManager(new RMISecurityManager());

Ich habe auch gelesen, dass man diese Datei per VM-Argument übergeben
kann. Dies habe ich aber nicht gemacht, da ich denke, dass dieser
Aufruf korrekt ist? Oder liege ich da falsch?

Auf jedenfall bekomme ich jetzt diese Fehelrmeldung:

Client exception: java.security.AccessControlException: access denied
(java.net.
SocketPermission 192.168.0.2:1099 connect,resolve)
java.security.AccessControlException: access denied
(java.net.SocketPermission 1
92.168.0.2: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 S
ource)
at
sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown S
ource)
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 example.hello1.Client.main(Client.java:26)


Aber ich erlaube doch in der Policy-Datei alles. Oder kann der diese
Datei nicht finden (wie kann man das prüfen)? Oder deutet diese
Fehlermeldung auf was anderes hin?

Vielen lieben Dank
Heidi

enzin...@googlemail.com

unread,
Jun 1, 2007, 2:41:12 PM6/1/07
to

>
> grant {
> permission java.net.SocketPermission "192.168.0.2:1099", "connect,
> accept, resolve";
> permission java.security.AllPermission "", "";
>
> };
>
>
> Client exception: java.security.AccessControlException: access denied
> (java.net.
> SocketPermission 192.168.0.2:1099 connect,resolve)
>
> Aber ich erlaube doch in der Policy-Datei alles. Oder kann der diese
> Datei nicht finden (wie kann man das prüfen)? Oder deutet diese
> Fehlermeldung auf was anderes hin?

Ich würde spotan mal sagen, dass der angegebene Port reserviert ist,
oder die Anfrage von deiner Firewall (Windows Firewall aktiv?)
geblockt wurde.

MfG,
Thomas


HeidiWeber

unread,
Jun 2, 2007, 6:13:56 AM6/2/07
to

> Ich würde spotan mal sagen, dass der angegebene Port reserviert ist,
> oder die Anfrage von deiner Firewall (Windows Firewall aktiv?)
> geblockt wurde.
>
> MfG,
> Thomas- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen

Hallo Thomas,

der Client und der Server laufen auf dem selben Rechner - selbst wenn
eine Firewall aktiv wäre, sollte es funktionieren. Es ist aber 100%
keine Firewall aktiv (auch nicht die Windows-Firewall). Wenn die
beiden Packages-Namen gleich sind, funktioniert das ja auch. Und was
meinst du mit "angegebener Port reserviert"?

Braucht man da vielleicht noch einen Classloader? Oder passen die
Policy-Dateien nicht? Oder werden die Policy-Dateien gar nicht
beachtet?

Liebe Grüße
Heidi

enzin...@googlemail.com

unread,
Jun 2, 2007, 7:31:33 AM6/2/07
to
On 2 Jun., 12:13, HeidiWeber <heidi.we...@arcor.de> wrote:
> > Ich würde spotan mal sagen, dass der angegebene Port reserviert ist,
> > oder die Anfrage von deiner Firewall (Windows Firewall aktiv?)
> > geblockt wurde.
>
> > MfG,
> > Thomas- Zitierten Text ausblenden -
>
> > - Zitierten Text anzeigen
>
> Hallo Thomas,
>
> der Client und der Server laufen auf dem selben Rechner - selbst wenn
> eine Firewall aktiv wäre, sollte es funktionieren.

Jein, in der Regel schon.

> keine Firewall aktiv (auch nicht die Windows-Firewall). Wenn die
> beiden Packages-Namen gleich sind, funktioniert das ja auch. Und was
> meinst du mit "angegebener Port reserviert"?

Das der Port vielleicht schon von einer anderen Anwendung benutzt
wird.

> Braucht man da vielleicht noch einen Classloader? Oder passen die
> Policy-Dateien nicht? Oder werden die Policy-Dateien gar nicht
> beachtet?

Keinen eigenen. Java verlangt einen Sicherheitsmanager wenn du fremde
Codes laden möchtest. Die Verwendung eines Java Hanbuchs könnte dir
sehr viele Probleme beantworten.
Tip: "Java Handbuch" oder "Java ist auch nur eine Insel" beide
kostenlos

Aus "Java Handbuch":

010 System.setSecurityManager(new RMISecurityManager());

Die in Zeile 010 stehende Installation der Klasse RMISecurityManager
ist erforderlich, weil der Server den Code für die auf dem Client
erzeugte TimeStore-Implementierung dynamisch laden soll. Aus
Sicherheitsgründen ist das Laden von externem Bytecode aber nur dann
erlaubt, wenn ein SecurityManager installiert ist. Um diesen mit den
erforderlichen Rechten auszustatten, muß (ab dem JDK 1.2) die Policy-
Datei auf dem Server um folgenden Eintrag ergänzt werden:

grant {
permission java.net.SocketPermission "ph01:1099", "connect,resolve";
permission java.net.SocketPermission "ph02:80", "connect";
};

Der erste Eintrag ermöglicht die TCP-Kommunikation mit der RMI-
Registry auf Port 1099. Der zweite ermöglicht es dem Server, auf TCP-
Port 80 eine Verbindung zu dem Rechner mit dem Namen "ph02"
herzustellen. Dort wird später der Web-Server laufen, mit dem der
Client die Klassendatei mit der TimeStore-Implementierung zur
Verfügung stellt.

Am besten ist es, die entsprechenden Einträge in der
benutzerspezifischen Policy-Datei vorzunehmen. Sie liegt im Home-
Verzeichnis des aktuellen Benutzers und heißt .java.policy. Auf
Windows 95/98-Einzelplatzsystemen liegt sie im Windows-Verzeichnis
(meist c:\windows). Weitere Informationen zur Policy-Datei sind im
Kapitel über Sicherheit und Kryptographie in Abschnitt 47.3.4 zu
finden.

HeidiWeber

unread,
Jun 2, 2007, 8:21:50 AM6/2/07
to
Hallo Thomas,

das habe ich doch schon eingebaut.

Meine Policy-Datei erlaubt doch schon alles:

grant {
permission java.net.SocketPermission "192.168.0.2:1099", "connect,
accept, resolve";
permission java.security.AllPermission "", "";
};

Ich habe das auch schon so probiert (hat aber auch nichts gebracht):

grant {
permission java.security.AllPermission "", "";
};

Und den SecurityManager rufe ich so auf:
System.setSecurityManager(new RMISecurityManager());

Die beiden Bücher (und 10000 Tutorials bzw. Foreneinträge zu diesem
Thema) habe ich auch schon gelesen.

Die client.policy Datei liegt bei mir direkt im Projektordner. In
diesem Ordner beginnen auch die Ordner für das Package.

Projektordner
client.policy
OrdnerDE
OrdnerEXAMPLE
startserver.java


Übergebe die Policy-Datei an die VM folegendermasen:
-Djava.security.policy=java.policy

Ist der Aufruf (als VmArguments in Eclipse) so korrekt? Falls der
Start des Servers und des Clients so korrekt sein sollte, was könnte
sonst noch nicht passen?

Vielen Dank
cu
Heidi

enzin...@googlemail.com

unread,
Jun 2, 2007, 9:50:06 AM6/2/07
to

Wenn der Dateiname java.policy ist, ja ;-)
Kannst du mal die "wichtigeren" Codezeilen des Servers und Clients
posten, oder im Web hinterlegen?

Bernd Eckenfels

unread,
Jun 2, 2007, 12:21:08 PM6/2/07
to
HeidiWeber <heidi...@arcor.de> wrote:
> Die client.policy Datei
...

> Übergebe die Policy-Datei an die VM folegendermasen:
> -Djava.security.policy=java.policy

gib mal den vollen (und richtigen) pfad an.

Gruss
Bernd

HeidiWeber

unread,
Jun 2, 2007, 12:26:28 PM6/2/07
to

> Wenn der Dateiname java.policy ist, ja ;-)
> Kannst du mal die "wichtigeren" Codezeilen des Servers und Clients
> posten, oder im Web hinterlegen?

Hi Thomas,

ich habe mal mein Projekt hier als ZIP-File geuppt:

http://people.freenet.de/myjava/HeidiJava.zip

Es sind 2 JAR-Files - einmal der Server und einmal der Client.

Beide sind so lauffähig.

Sobald ich den Client so aufrufe (in Eclipse als VmArgument):
-Djava.security.policy=javapolicy1

Beim Server so:
-Djava.security.policy=javapolicy

Und dann den SecurityManager im Code aktiviere - ist jetzt ausgesternt
- kommt die Fehlermeldung:

Client exception: java.security.AccessControlException: 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)
at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:
264)
at
java.security.AccessController.checkPermission(AccessController.java:
427)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:
532)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034)
at java.net.Socket.connect(Socket.java:513)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:179)
at
sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:
22)
at
sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:
128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:569)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:
185)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:
171)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:306)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at example.hello.Client.main(Client.java:21)


Was mache ich da falsch? Binde ich das falsche Objekt an die Registry?
Ich weiß echt nicht mehr weiter...
Wäre super, wenn du (oder sonst jemand) mir helfen könntest:)


Vielen lieben Dank
cu
Heidi


Bernd Eckenfels

unread,
Jun 2, 2007, 12:43:20 PM6/2/07
to
HeidiWeber <heidi...@arcor.de> wrote:
> Braucht man da vielleicht noch einen Classloader? Oder passen die
> Policy-Dateien nicht? Oder werden die Policy-Dateien gar nicht
> beachtet?

Du kannst -Djava.security.debug="policy,jar,scl,access,failure" zusätzlich
probieren, aber wie gesagt ich tippe darauf dass dein Arbeitsverzeichnis der
VM ein anderes ist, als du erwartest.

Gruss
Bernd

HeidiWeber

unread,
Jun 2, 2007, 1:14:44 PM6/2/07
to
On 2 Jun., 18:21, Bernd Eckenfels <e...@lina.inka.de> wrote:

Ich habe folgende Möglichkeiten ausprobiert (am Server) - beim Client
natürlich den Client-Ordner angegeben:

-Djava.security.policy=C:/JavaKonsole/rmiVers15nurServer/java.policy
-Djava.security.policy=C:\JavaKonsole\rmiVers15nurServer\java.policy
-Djava.security.policy="C:/JavaKonsole/rmiVers15nurServer/java.policy"
-Djava.security.policy="C:\JavaKonsole\rmiVers15nurServer\java.policy"


Hat leider auch nichts gebracht

HeidiWeber

unread,
Jun 2, 2007, 1:17:14 PM6/2/07
to
On 2 Jun., 18:43, Bernd Eckenfels <e...@lina.inka.de> wrote:


Wenn ich das bei mir als VMargument mit übergebe, kommt folgende
Fehlermeldung - der Server startet aber:

scl: getPermissions ProtectionDomain (file:/C:/JavaKonsole/
rmiVers15SessionPattern/ <no signer certificates>)
sun.misc.Launcher$AppClassLoader@11b86e7
<no principals>
java.security.Permissions@1a46e30 (
(java.io.FilePermission \C:\JavaKonsole\rmiVers15SessionPattern\-
read)
(java.lang.RuntimePermission exitVM)
)


scl:
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.security.SecurityPermission
getProperty.policy.expandProperties)
access: access allowed (java.security.SecurityPermission
getProperty.policy.ignoreIdentityScope)
access: access allowed (java.security.SecurityPermission
getProperty.policy.allowSystemProperty)
access: access allowed (java.util.PropertyPermission
sun.security.policy.utf8 read)
access: access allowed (java.util.PropertyPermission
sun.security.policy.numcaches read)
access: access allowed (java.util.PropertyPermission
java.security.policy read)
access: access allowed (java.io.FilePermission C:\JavaKonsole
\rmiVers15nurServer\javapolicy read)
access: access allowed (java.io.FilePermission C:\JavaKonsole
\rmiVers15nurServer\javapolicy read)
access: access allowed (java.util.PropertyPermission
java.protocol.handler.pkgs read)
access: access allowed (java.lang.RuntimePermission
accessClassInPackage.sun.net.www.protocol.c)
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\lib\ext\dnsns.jar read)
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\lib\ext\dnsns.jar read)
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\lib\ext\dnsns.jar read)
access: access allowed (java.io.FilePermission C:\JavaKonsole
\rmiVers15SessionPattern\sun\net\www\protocol\c\Handler.class read)
policy: caught exception: java.net.MalformedURLException: unknown
protocol: c
access: access allowed (java.security.SecurityPermission
getProperty.policy.url.1)
access: access allowed (java.util.PropertyPermission java.home read)
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\lib\security\java.policy read)
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\lib\security\java.policy read)
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\lib\security\java.policy read)
policy: reading file:/C:/Programme/Java/jdk1.6.0_01/jre/lib/security/
java.policy
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\lib\security\java.policy read)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.util.PropertyPermission java.ext.dirs
read)
java.lang.IllegalArgumentException: null KeyStore name
at sun.security.util.PolicyUtil.getKeyStore(PolicyUtil.java:65)
at sun.security.provider.PolicyFile.init(PolicyFile.java:630)
at sun.security.provider.PolicyFile.access$400(PolicyFile.java:263)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:582)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:
514)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:
500)
at sun.security.provider.PolicyFile.init(PolicyFile.java:459)
at sun.security.provider.PolicyFile.<init>(PolicyFile.java:305)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
39)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:
27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at java.security.Policy.getPolicyNoCheck(Policy.java:171)
at java.security.Policy.getPolicy(Policy.java:138)
at sun.security.jca.Providers$1.run(Providers.java:109)
at sun.security.jca.Providers$1.run(Providers.java:107)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.jca.Providers.getProviderList(Providers.java:107)
at java.security.SecureRandom.getPrngAlgorithm(SecureRandom.java:520)
at java.security.SecureRandom.getDefaultPRNG(SecureRandom.java:165)
at java.security.SecureRandom.<init>(SecureRandom.java:133)
at java.rmi.server.UID.<init>(UID.java:95)
at java.rmi.server.ObjID.<clinit>(ObjID.java:71)
at sun.rmi.transport.LiveRef.<init>(LiveRef.java:56)
at sun.rmi.server.UnicastServerRef.<init>(UnicastServerRef.java:122)
at
java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:
235)
at
java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:
133)
at
java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:
119)
at example.hello.RemoteLoginImpl.<init>(RemoteLoginImpl.java:22)
at example.hello.Server.<init>(Server.java:23)
at example.hello.ServerStarten.main(ServerStarten.java:10)
policy: Adding policy entry:
policy: signedBy null
policy: codeBase file:/C:/Programme/Java/jdk1.6.0_01/jre/lib/ext/*
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\lib\ext\* read)
policy: (java.security.AllPermission <all permissions> <all
actions>)
policy:
policy: Adding policy entry:
policy: signedBy null
policy: codeBase file:/C:/WINDOWS/Sun/Java/lib/ext/*
access: access allowed (java.io.FilePermission C:\WINDOWS\Sun\Java\lib
\ext\* read)
policy: (java.security.AllPermission <all permissions> <all
actions>)
policy:
policy: Adding policy entry:
policy: signedBy null
policy: codeBase null
policy: (java.lang.RuntimePermission stopThread)
policy: (java.net.SocketPermission localhost:1024- listen,resolve)
policy: (java.util.PropertyPermission java.version read)
policy: (java.util.PropertyPermission java.vendor read)
policy: (java.util.PropertyPermission java.vendor.url read)
policy: (java.util.PropertyPermission java.class.version read)
policy: (java.util.PropertyPermission os.name read)
policy: (java.util.PropertyPermission os.version read)
policy: (java.util.PropertyPermission os.arch read)
policy: (java.util.PropertyPermission file.separator read)
policy: (java.util.PropertyPermission path.separator read)
policy: (java.util.PropertyPermission line.separator read)
policy: (java.util.PropertyPermission java.specification.version
read)
policy: (java.util.PropertyPermission java.specification.vendor
read)
policy: (java.util.PropertyPermission java.specification.name read)
policy: (java.util.PropertyPermission java.vm.specification.version
read)
policy: (java.util.PropertyPermission java.vm.specification.vendor
read)
policy: (java.util.PropertyPermission java.vm.specification.name
read)
policy: (java.util.PropertyPermission java.vm.version read)
policy: (java.util.PropertyPermission java.vm.vendor read)
policy: (java.util.PropertyPermission java.vm.name read)
policy:
access: access allowed (java.security.SecurityPermission
getProperty.policy.url.2)
access: access allowed (java.util.PropertyPermission user.home read)
access: access allowed (java.io.FilePermission D:\InstallationsProgis
\Installierte_Progis\.java.policy read)
access: access allowed (java.io.FilePermission D:\InstallationsProgis
\Installierte_Progis\.java.policy read)
policy: reading file:/D:/InstallationsProgis/
Installierte_Progis/.java.policy
access: access allowed (java.io.FilePermission D:\InstallationsProgis
\Installierte_Progis\.java.policy read)
policy: error parsing file:/D:/InstallationsProgis/
Installierte_Progis/.java.policy
policy: java.io.FileNotFoundException: D:\InstallationsProgis
\Installierte_Progis\.java.policy (Das System kann die angegebene
Datei nicht finden)
java.io.FileNotFoundException: D:\InstallationsProgis
\Installierte_Progis\.java.policy (Das System kann die angegebene
Datei nicht finden)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at sun.security.util.PolicyUtil.getInputStream(PolicyUtil.java:43)
at sun.security.provider.PolicyFile.init(PolicyFile.java:621)
at sun.security.provider.PolicyFile.access$400(PolicyFile.java:263)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:582)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:
514)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:
500)
at sun.security.provider.PolicyFile.init(PolicyFile.java:459)
at sun.security.provider.PolicyFile.<init>(PolicyFile.java:305)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
39)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:
27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at java.security.Policy.getPolicyNoCheck(Policy.java:171)
at java.security.Policy.getPolicy(Policy.java:138)
at sun.security.jca.Providers$1.run(Providers.java:109)
at sun.security.jca.Providers$1.run(Providers.java:107)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.jca.Providers.getProviderList(Providers.java:107)
at java.security.SecureRandom.getPrngAlgorithm(SecureRandom.java:520)
at java.security.SecureRandom.getDefaultPRNG(SecureRandom.java:165)
at java.security.SecureRandom.<init>(SecureRandom.java:133)
at java.rmi.server.UID.<init>(UID.java:95)
at java.rmi.server.ObjID.<clinit>(ObjID.java:71)
at sun.rmi.transport.LiveRef.<init>(LiveRef.java:56)
at sun.rmi.server.UnicastServerRef.<init>(UnicastServerRef.java:122)
at
java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:
235)
at
java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:
133)
at
java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:
119)
at example.hello.RemoteLoginImpl.<init>(RemoteLoginImpl.java:22)
at example.hello.Server.<init>(Server.java:23)
at example.hello.ServerStarten.main(ServerStarten.java:10)
access: access allowed (java.security.SecurityPermission
getProperty.policy.url.3)
access: access allowed (java.util.PropertyPermission
java.security.auth.policy read)
access: access allowed (java.security.SecurityPermission
getProperty.auth.policy.url.1)
access: access allowed (java.lang.RuntimePermission
accessClassInPackage.sun.security.provider)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.util.PropertyPermission java.security.egd
read)
access: access allowed (java.security.SecurityPermission
getProperty.securerandom.source)
access: access allowed (java.security.SecurityPermission
putProviderProperty.SUN)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.util.PropertyPermission * read,write)
access: access allowed (java.util.PropertyPermission os.arch read)
access: access allowed (java.util.PropertyPermission
java.net.preferIPv6Addresses read)
access: access allowed (java.lang.RuntimePermission loadLibrary.net)
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\bin\net.dll read)
access: access allowed (java.util.PropertyPermission
java.net.preferIPv4Stack read)
access: access allowed (java.util.PropertyPermission impl.prefix read)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.util.PropertyPermission
sun.net.spi.nameservice.provider.1 read)
access: access allowed (java.net.SocketPermission soroschp resolve)
access: access allowed (java.io.FilePermission C:\Dokumente und
Einstellungen\sorosch\Lokale Einstellungen\Temp read)
access: access allowed (java.io.FilePermission C:\Dokumente und
Einstellungen\sorosch\Lokale Einstellungen\Temp read)
access: access allowed (java.io.FilePermission C:\Dokumente und
Einstellungen\sorosch\Lokale Einstellungen\Temp read)
access: access allowed (java.io.FilePermission C:\Dokumente und
Einstellungen\sorosch\Lokale Einstellungen\Temp read)
access: access allowed (java.io.FilePermission C:\DOKUME~1\sorosch
\LOKALE~1\Temp read)
access: access allowed (java.util.PropertyPermission
java.rmi.server.randomIDs read)
access: access allowed (java.util.PropertyPermission
java.rmi.server.hostname read)
access: access allowed (java.util.PropertyPermission
sun.rmi.transport.logLevel read)
access: access allowed (java.util.logging.LoggingPermission control)
access: access allowed (java.util.PropertyPermission
sun.rmi.transport.tcp.logLevel read)
access: access allowed (java.util.logging.LoggingPermission control)
access: access allowed (java.util.PropertyPermission
sun.rmi.transport.tcp.maxConnectionThreads read)
access: access allowed (java.util.PropertyPermission
sun.rmi.transport.tcp.threadKeepAliveTime read)
access: access allowed (java.util.PropertyPermission
sun.rmi.transport.proxy.logLevel read)
access: access allowed (java.util.logging.LoggingPermission control)
access: access allowed (java.util.PropertyPermission
sun.rmi.transport.proxy.connectTimeout read)
access: access allowed (java.util.PropertyPermission
sun.rmi.transport.proxy.eagerHttpFallback read)
access: access allowed (java.util.PropertyPermission http.proxyHost
read)
access: access allowed (java.util.PropertyPermission proxyHost read)
access: access allowed (java.util.PropertyPermission
java.rmi.server.disableHttp read)
access: access allowed (java.util.PropertyPermission
sun.rmi.transport.tcp.readTimeout read)
access: access allowed (java.util.PropertyPermission
java.rmi.server.hostname read)
access: access allowed (java.util.PropertyPermission
sun.misc.ProxyGenerator.saveGeneratedFiles read)
access: access allowed (java.util.PropertyPermission
sun.rmi.dgc.server.gcInterval read)
access: access allowed (java.lang.RuntimePermission loadLibrary.net)
access: access allowed (java.io.FilePermission C:\Programme\Java
\jdk1.6.0_01\jre\bin\net.dll read)
policy: getPermissions:
PD CodeSource: (file:/C:/JavaKonsole/rmiVers15SessionPattern/ <no
signer certificates>)
PD ClassLoader: sun.misc.Launcher$AppClassLoader@11b86e7
PD Principals: <no principals>
access: access allowed (java.io.FilePermission C:\JavaKonsole
\rmiVers15SessionPattern read)
policy: evaluate codesources:
Policy CodeSource: (file:/C:/Programme/Java/jdk1.6.0_01/jre/lib/ext/*
<no signer certificates>)
Active CodeSource: (file:/C:/JavaKonsole/rmiVers15SessionPattern/ <no
signer certificates>)
policy: evaluation (codesource) failed
policy: evaluate codesources:
Policy CodeSource: (file:/C:/WINDOWS/Sun/Java/lib/ext/* <no signer
certificates>)
Active CodeSource: (file:/C:/JavaKonsole/rmiVers15SessionPattern/ <no
signer certificates>)
policy: evaluation (codesource) failed
policy: evaluate codesources:
Policy CodeSource: (null <no signer certificates>)
Active CodeSource: (file:/C:/JavaKonsole/rmiVers15SessionPattern/ <no
signer certificates>)
policy: evaluate principals:
Policy Principals: []
Active Principals: []
policy: granting (java.lang.RuntimePermission stopThread)
policy: granting (java.net.SocketPermission localhost:1024-
listen,resolve)
policy: granting (java.util.PropertyPermission java.version read)
policy: granting (java.util.PropertyPermission java.vendor read)
policy: granting (java.util.PropertyPermission java.vendor.url read)
policy: granting (java.util.PropertyPermission java.class.version
read)
policy: granting (java.util.PropertyPermission os.name read)
policy: granting (java.util.PropertyPermission os.version read)
policy: granting (java.util.PropertyPermission os.arch read)
policy: granting (java.util.PropertyPermission file.separator read)
policy: granting (java.util.PropertyPermission path.separator read)
policy: granting (java.util.PropertyPermission line.separator read)
policy: granting (java.util.PropertyPermission
java.specification.version read)
policy: granting (java.util.PropertyPermission
java.specification.vendor read)
policy: granting (java.util.PropertyPermission
java.specification.name read)
policy: granting (java.util.PropertyPermission
java.vm.specification.version read)
policy: granting (java.util.PropertyPermission
java.vm.specification.vendor read)
policy: granting (java.util.PropertyPermission
java.vm.specification.name read)
policy: granting (java.util.PropertyPermission java.vm.version read)
policy: granting (java.util.PropertyPermission java.vm.vendor read)
policy: granting (java.util.PropertyPermission java.vm.name read)
policy: evaluation (codesource/principals) passed
access: access allowed (java.net.SocketPermission localhost:1024-
listen,resolve)
access: access allowed (java.lang.RuntimePermission modifyThreadGroup)
access: access allowed (java.lang.RuntimePermission modifyThreadGroup)
access: access allowed (java.lang.RuntimePermission getClassLoader)
access: access allowed (java.lang.RuntimePermission modifyThreadGroup)
access: access allowed (java.lang.RuntimePermission modifyThread)
access: access allowed (java.lang.RuntimePermission
setContextClassLoader)
access: access allowed (java.lang.RuntimePermission modifyThread)
access: access allowed (java.util.PropertyPermission
sun.rmi.dgc.logLevel read)
access: access allowed (java.util.logging.LoggingPermission control)
access: access allowed (java.util.PropertyPermission
java.rmi.dgc.leaseValue read)
access: access allowed (java.util.PropertyPermission
sun.rmi.dgc.checkInterval read)
access: access allowed (java.util.logging.LoggingPermission control)
access: access allowed (java.util.PropertyPermission
sun.rmi.runtime.schedulerThreads read)
access: access allowed (java.lang.RuntimePermission
sun.rmi.runtime.RuntimeUtil.getInstance)
access: access allowed (java.lang.RuntimePermission
setContextClassLoader)
access: access allowed (java.util.PropertyPermission
java.rmi.server.hostname read)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.lang.RuntimePermission
setContextClassLoader)
access: access allowed (java.lang.RuntimePermission getClassLoader)
access: access allowed (java.lang.RuntimePermission modifyThreadGroup)
access: access allowed (java.lang.RuntimePermission modifyThread)
access: access allowed (java.lang.RuntimePermission
setContextClassLoader)
access: access allowed (java.lang.RuntimePermission modifyThread)
access: access allowed (java.lang.RuntimePermission modifyThreadGroup)
access: access allowed (java.lang.RuntimePermission modifyThreadGroup)
access: access allowed (java.lang.RuntimePermission modifyThread)
access: access allowed (java.lang.RuntimePermission modifyThread)
access: access allowed (java.lang.RuntimePermission modifyThread)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.util.PropertyPermission
java.rmi.server.hostname read)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.net.SocketPermission localhost:1099
listen,resolve)
access: access allowed (java.lang.RuntimePermission getClassLoader)
access: access allowed (java.lang.RuntimePermission modifyThreadGroup)
access: access allowed (java.lang.RuntimePermission modifyThread)
access: access allowed (java.lang.RuntimePermission
setContextClassLoader)
access: access allowed (java.lang.RuntimePermission modifyThread)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
access: access allowed (java.lang.reflect.ReflectPermission
suppressAccessChecks)
Server ready

Bernd Eckenfels

unread,
Jun 2, 2007, 2:27:30 PM6/2/07
to
HeidiWeber <heidi...@arcor.de> wrote:
> policy: caught exception: java.net.MalformedURLException: unknown
> protocol: c

Das deutet zumidnest mal drauf hin dass du "file:c:\..." schreiben musst als
Pfad für die Policy Datei.

> policy: Adding policy entry:
...

und heir erscheint dein policy file nicht, wird also nicht gefunden.

Gruss
Bernd

HeidiWeber

unread,
Jun 2, 2007, 5:40:17 PM6/2/07
to
Vielen Dank euch allen

Ich kann es gar nicht glauben - aber so wies aussieht,
funktionierts :)

Ich werde mich am Montag wg. der genauen Lösung nochmals melden.

Wünsche euch allen eine schöne Nacht mit den Smashing Pumpkins

Bis Montag

cu
Heidi

HeidiWeber

unread,
Jun 7, 2007, 5:24:05 AM6/7/07
to
Hallo,

ich möchte noch kurz erklären an was das gelegen hat (bzw. das was ich
denke):

Der folgende VM-Parameter hat viel geholfen:
-Djava.security.debug="policy,jar,scl,access,failure"

Er konnte die Policy-Datei nicht finden, da ich die einmal als VM-
Argument übergeben habe (der richtige Pfad). Dann hatte ich im Code
noch:
System.setProperty("java.security.policy", "clients.policy");

Aber die Policy-Datei heisst: client.policy

Erschlagt mich bitte nicht. Ich habe das "s" echt nicht gesehen....

Da ich den Server und den CLient in unterschiedlichen Projekten, mit
unterschiedlichen Packages, habe, kam dann die Meldung:

Client exception: java.rmi.UnmarshalException: error unmarshalling
return; nested exception is:
java.lang.ClassNotFoundException:

example.hello.interfaces.RemoteLogin


java.rmi.UnmarshalException: error unmarshalling return; nested
exception is:
java.lang.ClassNotFoundException:

example.hello.interfaces.RemoteLogin
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at example.hello.Client.main(Client.java:25)
Caused by: java.lang.ClassNotFoundException:
example.hello.interfaces.RemoteLogin
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:
711)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:
655)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:
592)
at java.rmi.server.RMIClassLoader
$2.loadProxyClass(RMIClassLoader.java:628)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:
294)
at
sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:
238)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:
1531)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:
1493)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)

Ich habe dann herausgefunden, dass die Packages, indem sich die
Interfaces befinden, den gleichen Package-Namen haben müssen. --> Kann
mir vielleicht noch jemand erklären, warum das so ist
(Classloader??) ?

Aber jetzt läufts endlich...
VIelen Dank noch an euch allen für die Hilfe

Einen schönen (Feier-)Tag, falls ihr heute frei habt.
Liebe Grüße
Heidi

0 new messages