Java RMI - 套接字权限问题

时间:2010-02-24 20:01:11

标签: java permissions rmi policy

我在尝试将我的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错误?我的权限设置有误吗?

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

您需要将VM参数-Djava.security.policy = path /包含到/ policy / file ... 然后你的政策文件应该被阅读,一切都会好的:)