[英]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.