2016-06-15 2 views
0

少なくとも私の視点では簡単な質問ではありません。 Rmi Serverプロパティを正しく作成しました。Rmiサーバクライアントのリモート接続でコードをダウンロードするlocalhost

サーバーの中に初めてrusの場合はファイルを作成する必要があります。すでに存在する場合は上書きしてください。 (1)

私は正常にrmiクライアントを作成しました。私はプロジェクトが同じプロジェクトのクライアントクラスでうまく動作するかテストします。

私のRmiインターフェイスでは、いくつかのメソッドで、私はクライアントオブジェクトをパラメータ(2)として渡す必要があります。

ここから問題が始まります。 Rmi Clientを複数回実行する必要がありますが、スレッドを使用しないで、それぞれのプロジェクト(クライアントプロジェクト)ごとに同じコードがあり、そこから実行する別のプロジェクトを作成する必要があります。私は、サーバープロジェクトからクライアントを実行すると、完璧な動作しますが、私は別のものを実行すると、それは私の一般的なエラーを与えて を失敗したクライアントを離れセキュリティMangagerため

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) 

ので、私はセキュリティマネージャが必要であることをGoogleで検索し、Googleで検索して見ましたリモートクライアントに権限を与えるためのコード。だから、私は、サーバーへのセキュリティマネージャを追加しますが、私は私のファイルのストリームを使用しているため、(1)それは私に、このエラーを与えるサーバーをダウンロードする

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)私は、コンパイルカント私のサーバーとクライアントプロジェクトのインスタンスを持たないサーバープロジェクトのインターフェイスクラス私はそれにパラメータを渡す必要があるので私は さんに助言しましたか?

答えて

0

あなたが間違っています。サーバーではなく、クライアントでセキュリティー・マネージャーが必要です。

関連する問題