2014-11-24 40 views
0

我在java中是新的RMI的話題,我瓦納創建客戶端服務器應用程序了使用RMI,RMI java.security.Policy中的訪問被拒絕

我跟着本教程在這個環節發現:RMI Tutorial using eclipse

但我現在用的NetBeans,這裏是服務器代碼:

import java.rmi.*; 
import java.rmi.registry.LocateRegistry; 
import java.rmi.registry.Registry; 
import java.rmi.server.*; 

public class AdditionServer { 
     public static void main (String[] argv) { 
      try { 
       if (System.getSecurityManager() == null) 
          { 
           System.setSecurityManager(new SecurityManager()); 
          } 
          String policy="file:/home/user/NetBeansProjects/RMIServerSide/security.policy"; 

          System.setProperty("java.security.policy",policy); 

       Addition Hello = new Addition(); 

            System.out.println("test\n"); 
          Registry reg=LocateRegistry.createRegistry(1099); 

       reg.rebind("rmi://localhost/ABC", Hello); 

       System.out.println("Addition Server is ready."); 
       }catch (Exception e) { 
        System.out.println("Addition Server failed: " + e); 
       } 
      } 
} 

這裏security.policy:

grant codeBase "/home/user/NetBeansProjects/RMIServerSide/build/classes/" { 
    permission java.security.AllPermission; 
}; 

然後我在終端中運行rmiregistry &。 然後我運行服務器和這裏的輸出是什麼確切:

Addition Server failed: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.security.policy" "write") 

是不是我錯過了,像虛擬機或東西???一個配置.....

回答

-1

我有同樣的問題。我有固定的步驟如下:

  1. 我創建了一個政策文件,我用下面的內容將其命名爲security.policy

grant { 
    // Allow everything for now 
    permission java.security.AllPermission; 
}; 

2-添加下面的代碼行就在將遠程對象綁定到rmiregistry之前。

System.setProperty("java.security.policy","file:./security.policy");

+0

除非您還設置了安全管理器,否則這將不會產生影響,您必須在設置策略之後並在綁定之前設置該安全管理器,因此顯然您沒有這樣做。無論如何,用安全管理器設置AllPermission是毫無意義的。 – EJP 2015-03-02 01:53:51

0

您需要設置政策文件之前你安裝SecurityManager.

+0

謝謝...我改變了代碼爲u說,但新的異常引發:java.security.Policy中:錯誤添加條目: \t java.net.MalformedURLException:沒有協議:/首頁/用戶/ NetBeansProjects/RMIServerSide/ – luka 2014-11-24 01:38:38

+0

您必須刪除'file:'部分。否則它指的是策略文件中的某些內容,比如代碼庫條目,它應該是一個URL。 – EJP 2014-11-24 02:19:29