你不需要寻找任何异国情调.处理此方案是Java安全体系结构的基本功能.
每个类都有一个“代码库”,即加载它的位置.因此,如果您将每个扩展包装在单独的JAR中(或在单独的目录中展开),您将能够定制授予该代码库的权限.
在你的情况下,它听起来更简单.如果我理解正确,所有扩展将具有相同的权限,这些权限小于父应用程序的权限.因此,他们都可以共享代码库.
以下是策略文件的示例:
grant codeBase "file:/path/to/app/lib/*" {
permission java.io.FilePermission "/path/to/app/-", "read";
permission java.io.FilePermission "/path/to/app/data/-", "read,write,delete";
};
grant codeBase "file:/path/to/app/ext/*" {
permission java.util.PropertyPermission "java.io.tmpdir", "read";
permission java.io.FilePermission "${java.io.tmpdir}/myapp/-", "read,write,delete";
};