2

Java プログラムを 2 つの異なるソケットに接続しようとすると問題が発生します。基本的に、RMI サーバー (ポート 1099 に接続) を初期化し、ポート 10002 で PrologBeans も初期化したいと考えています。初期化は両方で正常に機能しているように見えますが、prologBeans にアクセスしようとするとすぐに次のエラーが発生します。

Exception in thread "main" java.security.AccessControlException: access denied 

    (java.net.SocketPermission 127.0.0.1:10002 connect,resolve)
 at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
 at java.security.AccessController.checkPermission(AccessController.java:546)
 at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
 at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034)
 at java.net.Socket.connect(Socket.java:519)
 at java.net.Socket.connect(Socket.java:475)
 at java.net.Socket.<init>(Socket.java:372)
 at java.net.Socket.<init>(Socket.java:186)
 at se.sics.prologbeans.PrologSession.connectToServer(PrologSession.java:511)
 at se.sics.prologbeans.PrologSession.initSend(PrologSession.java:442)
 at se.sics.prologbeans.PrologSession.send(PrologSession.java:368)
 at se.sics.prologbeans.PrologSession.executeQuery(PrologSession.java:331)
 at api.ActionRetriever.logEvent(ActionRetriever.java:68)
 at contract.ContractManager.log_event(ContractManager.java:87)
 at gui.RMITrial.main(RMITrial.java:39)

ポリシー ファイルもあります (私の RMI コードがあるパッケージ内にあります。これはポリシー ファイルを配置する正しい場所ですか、それとも既定のパッケージに配置する必要がありますか?)。これは次のように設定されています。

grant {
permission java.security.AllPermission;};

SocketPermission エラーが発生する理由を誰かが知っているかどうか疑問に思っていましたか? アクセス許可の設定が間違っていますか?

どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

2

VM引数 -Djava.security.policy=path/to/policy/file... を含める必要があります。その後、ポリシーファイルを読み取る必要があり、すべて問題ありません:)

于 2010-02-24T20:33:12.343 に答える