[英]How to resolve Exception::java.security.AccessControlException: access denied in HttpServlet
[英]java.security.AccessControlException: access denied Exception
我正在尝试为RMI做一个简单的程序。 但是,我在运行Naming.rebind(“ interfacename”,Remoteserverobject);行时遇到以下异常。
java.security.AccessControlException:访问被拒绝(java.net.SocketPermission 127.0.0.1:1099 connect,resolve)
我的代码如下:
public static void main(String[] args) throws Exception {
if(System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}
Remoteserver objremoteserver=new Remoteserver();
objremoteserver.setmsg("Hello! How are you?");
System.out.println(objremoteserver.getmsg());
try
{
Naming.rebind("Remotemethod", objremoteserver);
System.out.println("Server Started");
}
catch(RemoteException re)
{
System.out.println(re.getLocalizedMessage());
}
finally
{
System.out.println("Unknown Exception Occured!!!!");
}
}
如何克服这个问题。 提前致谢
除非(i)您知道自己需要一个,并且(ii)您已经编写了适当的.policy文件,否则请不要使用安全管理器。 如果您认为这两种方法都适用,请使用-Djava.security.debug = access运行您的问题,否则将无法查看实际出了什么问题。 您很可能没有授予自己所需的权限,或者未正确指定策略文件的位置。
确保已按照此处的说明设置RMISecurityManager
我想这可行
public static void main(String[] args) throws Exception {
Remoteserver objremoteserver=new Remoteserver();
objremoteserver.setmsg("Hello! How are you?");
System.out.println(objremoteserver.getmsg());
try
{
Naming.rebind("Remotemethod", objremoteserver);
System.out.println("Server Started");
}
catch(RemoteException re)
{
System.out.println(re.getLocalizedMessage());
}
finally
{
System.out.println("Unknown Exception Occured!!!!");
}
}
每个JRE都有一个默认的安全管理器,U r试图用新的安全管理器覆盖。 您可以为此新的安全管理器指定任何属性。因此会出现错误。解决方案是使用默认管理器,并按照以下说明创建一个全新的安全管理器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.