2010-04-10 33 views
9

我正在研究一個人工智能項目,這是一個邏輯遊戲,並且目標是兩個用戶連接到網絡上的服務器,充當管理員,然後開始逐個玩。在哪裏放置Java小程序策略文件?

爲了創建連接,我有一個服務器代碼,它只是監聽localhost:8000並在客戶端到達時爲其分配團隊值。連接後,客戶可以在管理員的控制下進行移動。

的問題是,當我試圖把我的代碼中失敗,出現以下錯誤的瀏覽器中運行:

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8000 connect,resolve) 

即使我已經創建了自己的政策,第一僅授予套接字訪問權限我的項目文件夾(file:///home/xxx/projects/-)的代碼庫,它沒有工作後,我授予所有權限從所有代碼庫。我嘗試將我的策略文件都放在主目錄和我的小程序代碼所在的目錄中。

感謝任何提示,謝謝。

+0

當我嘗試從控制檯運行啓動服務器,如下所示後,我的客戶端代碼,我能夠做出認可駐留在我的主目錄我自己的政策文件: 的appletviewer -J-Djava。security.policy = mypolicy.policy file:///home/xxx/NetBeansProjects/project/src/index.html 但是,當我嘗試從IDE運行時,它失敗:s – makdere 2010-04-10 09:52:53

+0

簽署applet jar(s)可能會有點容易管理。保存你不得不在每個你想運行的盒子上安裝一個策略文件。 – objects 2010-04-10 09:59:28

回答

11

默認情況下,我認爲它會尋找在你家名爲.java.policy中的文件目錄

您可以檢查文件/lib/security/java.security以查看它的外觀。 檢查名爲policy.url.n的密鑰

+1

檢查/lib/security/java.security後,將我自己創建的策略文件重命名爲.java.policy,以找出java查找策略文件的位置,它工作正常。感謝every1的提示。 – makdere 2010-04-11 11:06:31

+0

如果您的問題解決了,請點擊幫助您的評論旁邊的勾號(左側)。 – objects 2010-04-11 23:32:03

+0

感謝隊友,很高興幫助你 – objects 2010-04-16 01:02:35

0

將策略文件放在JRE所在的位置。

例如,我的政策文件位於C:\ Program Files文件\的Java \ jre1.6.0_01 \ lib \ security中

0

我強烈建議尊重同源策略。在最好的時候,安全影響不一定是明顯的。此外,具有標準權限的小程序具有更好的可用性,應該更易於維護。

0

如果您授予特定的JAR(代碼庫)權限,如果從線程的方法調用的開始整個執行堆棧是在代碼庫/保護域這僅適用。

如果您的方法是alibrary,並且您確定您安全地訪問了操作,則可以使用Priveledged Block,這基本上確保在訪問計算中不考慮調用您的塊的堆棧部分。

特權座,如下所述:

http://docs.oracle.com/javase/6/docs/technotes/guides/security/doprivileged.html

問候 貝恩德

2

您可以使用此命令行選項

-Djava.security.policy=policyfilepath 
設定的安全策略文件的位置

java命令。

或者你甚至可以使用System.setProperty()程序設置這個propery。

+0

這是如何適用於小程序的?此外,我懷疑JVM已經啓動後設置系統屬性是有效的。 – davmac 2014-12-09 22:40:25

相關問題