我想知道OSGI究竟如何检查自己的权限,如PackagePermission。我已经读过他们使用自制的ProtectionDomain,但事实并非如此(对于我正在研究的新版本)。如果您只是参考Equinox就可以了。 是否每个bundle的实现检查都会为PackagePermission导出其资源?
public void export(BundleContext ctx) {
SecurityManager manager = System.getSecurityManager();
if(manager != null) {
manager.checkPermission(new PackagePermission(ctx, "export"));
}
}
因为我认为检查这种自制权限并不容易。
答案 0 :(得分:0)
您当然可以查看Equinox或Apache Felix Security的源代码以了解如何完成此操作:-)对于包权限,框架可能会使用Bundle.hasPermission来避免抛出的异常。