0

我正在运行一个执行 Socket 连接的 Applet 我得到了异常 java.security.AccessControlException: access denied (java.net.SocketPermission xxx.xxx.xxx.xxx:80 connect,resolve) 我用谷歌搜索发现这是因为 Java 的安全管理器所以我添加了

grant{    
    java.net.SocketPermission xxx.xxx.xxx.xxx:80 "connect";
    java.net.SocketPermission xxx.xxx.xxx.xxx:80 "resolve";
}

在 C:\Program Files\Java\jre6\lib\security 的 java.policy 中使用 policytool.exe 成功工作

但我希望以编程方式完成,所以我做了以下

AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws Exception {                                                                         
       socketchannel1 = SocketChannel.open();
       socketchannel1.connect( new InetSocketAddress( xxx.xxx.xxx.xxx, 80 ) );
return null;} });}

在这里我告诉securityManager不要触摸运行中的代码这也成功但是现在我想知道是否有任何其他方法可以专门添加SocketPermission进行连接,使用Policy.setpolicy或类似setpermission或修改高于自身。提前致谢

4

0 回答 0