2016-06-15 7 views
0

So lassen Sie beginnen ... nicht eine einfache Frage aus meiner Sicht zumindest ... Ich habe eine Rmi Server-Eigenschaft erstellen funktioniert gut.Rmi Server Client remote Verbindung mit dem Download-Code localhost

Inside zum Server Ich muss eine Datei erstellen, wenn es zum ersten Mal rus oder überschreiben, wenn es schon da ist. (1)

Ich habe erfolgreich einen rmi-Client erstellt, ich testen das Projekt funktioniert gut mit der Client-Klasse im selben Projekt.

Auf meiner RMI-Schnittstelle in einigen Methoden muss ich Client-Objekt als Parameter übergeben (2).

Hier beginnt das Problem. Ich muss meinen Rmi-Client mehrere Male ausführen, aber nicht mit Thread, ich muss ein anderes Projekt erstellen, dass jeder von ihnen (Client-Projekt), den gleichen Code hat und von dort laufen. Wenn ich den Client von Servern laufen läuft Projekt perfekt, aber wenn ich einen anderen distanzierten Client ausführen fehlschlägt es mir die gemeinsamen Fehler für Sicherheit Mangager geben

run: 
Exception in thread "main" java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) 
    at java.security.AccessController.checkPermission(AccessController.java:884) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051) 
    at java.net.Socket.connect(Socket.java:584) 
    at java.net.Socket.connect(Socket.java:538) 
    at java.net.Socket.<init>(Socket.java:434) 
    at java.net.Socket.<init>(Socket.java:211) 
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) 
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148) 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613) 
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) 
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) 
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:342) 
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) 
    at java.rmi.Naming.lookup(Naming.java:101) 
    at Client.<init>(Client.java:69) 
    at Client.main(Client.java:142) 
C:\Users\blue-icon\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 
BUILD FAILED (total time: 1 second) 

So gegoogelt i und gegoogelt und sah, dass ich den Sicherheitsmanager müssen in um die Erlaubnis zu einem Remote-Client zu geben, um die Server-Code .So i Security Manager Server zum Download hinzufügen, aber weil ich Streams für meine Dateien verwenden (1) es gibt mir diesen Fehler

Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" "Subscribe.txt" "read") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) 
    at java.security.AccessController.checkPermission(AccessController.java:884) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at java.lang.SecurityManager.checkRead(SecurityManager.java:888) 
    at java.io.File.exists(File.java:814) 
    at RMIServer03.checkFile(RMIServer03.java:132) 
    at RMIServer03.<init>(RMIServer03.java:46) 
    at RMIServer03.main(RMIServer03.java:56) 

(2) i cant kompilieren mein Server und Schnittstelle auf Server-Projekt ohne eine Instanz von Clients Klasse, weil ich es übergeben muss einen Parameter als Ich sagte irgendeine Hilfe?

Antwort

0

Sie falsch gelesen. Sie benötigen den Sicherheitsmanager auf dem Client, nicht den Server.