2009-08-25 23 views
0

我們正在嘗試使用SecurityManager和Resin 3.1.9,並遇到以下問題:CodeSource.getLocation()爲已編譯的JSP返回null。如何使用Resin中的SecurityManager策略文件授予JSP權限?

這意味着我們不能使用許可條款特定的代碼庫中我們的政策文件,例如:

grant codeBase "file:/path_to_resin/runtime/work/-" { 
OR grant codeBase "file:/path_to_resin/webapp/JSP-source/-" { 
    //...some jsp-specific permissions 
}; 

相反,我們必須使用一個通用的許可條款:

grant { 
    //..some jsp-specific permissions. Unfortunately, these will be applied 
    //to all code!!! 
}; 

是有沒有辦法讓JSP有一個合適的CodeSource?我們希望限制第三方庫的權限,但是對我們自己的JSP授予權限。如果我們無法在策略文件中指定JSP,我們可能無法做到這一點,或者您認爲如何?

編輯:我們按原樣部署JSP,所以不要重新編譯它們。這可能與這個問題有關。

回答

0

我通過樹脂郵件列表的答案,認爲我在這裏發佈過:

看來樹脂3具有與此一個錯誤,現在有an issue for it。基本上,我們嘗試應該工作,或至少它適用於樹脂2.於是順便說一下,這應該工作:

grant codeBase "file:/path_to_resin/runtime/work/-" { 
    //...some jsp-specific permissions 
}; 

樹脂的開發鉛這樣說道:「好了,安全管理器刪除性能,所以我們一般不鼓勵它。「我們可能不得不重新考慮一下使用SecurityManager是否合理。有關該主題的更多討論,請參閱我的其他問題Should I use Security Manager in Java web applications?