java.security.AccessControlException:访问被拒绝异常

时间:2010-04-27 09:08:48

标签: java rmi

我正在尝试为RMI做一个简单的程序。但是,我在运行该行时遇到以下异常    Naming.rebind( “interfacename都”,Remoteserverobject);

  

java.security.AccessControlException:   拒绝访问   (java.net.SocketPermission   127.0.0.1:1099连接,解决)

我的代码如下:

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!!!!");
        }
    }

如何克服这个问题。提前致谢

3 个答案:

答案 0 :(得分:1)

除非(i)您知道需要安全管理器,并且(ii)您已编写了适当的.policy文件,否则请勿使用安全管理器。如果您认为这两个都适用,请使用-Djava.security.debug = access运行您的问题,无法查看实际出现的问题。很可能您没有授予自己所需的权限,或者您没有正确指定策略文件位置。

答案 1 :(得分:0)

确保按照here

的说明设置了RMISecurityManager

答案 2 :(得分:-1)

我想这可行

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试图用新的安全管理器覆盖。你为这个新的安全管理器指定了任何属性。所以错误。解决方案是使用默认管理器创建一个全新的安全管理器,遵循这些instructions