我们正在尝试将ResManager与Resin 3.1.9一起使用,并遇到以下问题:CodeSource.getLocation()为已编译的JSP返回null。
这意味着我们不能在策略文件的grant子句中使用特定的代码库,例如:
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 :(得分:0)
我通过Resin邮件列表得到了答案,并认为我也在这里发布了:
Resin 3似乎有一个错误,现在有an issue for it。基本上我们尝试的方式应该工作,或者至少它适用于Resin 2.所以,这应该工作:
grant codeBase "file:/path_to_resin/runtime/work/-" {
//...some jsp-specific permissions
};
Resin的开发负责人说:“好吧,安全经理会杀死性能,所以我们通常不鼓励它。”我们可能不得不重新考虑是否合理使用SecurityManager。有关该主题的更多讨论,请参阅我的其他问题 Should I use Security Manager in Java web applications? 。