2014-03-02 54 views
0

我想知道OSGI究竟能够像PackagePermission一样检查自己的权限。我读过他们使用自制的ProtectionDomain,但事实并非如此(对于我正在看的新版本)。如果你只是提到Equinox就没关系。 执行检查是否会为每个bundle导出一个PackagePermission的资源?osgi安全模型如何工作?

public void export(BundleContext ctx) { 
     SecurityManager manager = System.getSecurityManager(); 
     if(manager != null) { 
      manager.checkPermission(new PackagePermission(ctx, "export")); 
     } 
} 

因为我认为这是不安静容易检查这种自制的权限。

回答

0

您当然可以查看Equinox或Apache Felix Security的源代码以查看它是如何完成的:-)对于程序包权限,框架可能使用Bundle.hasPermission来避免抛出的异常。

+0

我已经看过它,但错过了[Bundle.hasPermission](http://www.osgi.org/javadoc/r4v43/core/org/osgi/framework/Bundle.html#hasPermission%28java.lang。 Object%29)方法。感谢:D – SirWindfield

+0

我找不到任何特别的东西。使用的SecurityManager看起来很安静... – SirWindfield