管理对OSGI包的访问

时间:2011-06-07 06:29:31

标签: osgi

如何控制对捆绑包的访问。我有一组在 MANIFEST.MF 中通过导出公开包的包。暴露的包应该只在我的捆绑包中使用。不允许其他外部包使用“import package”来使用这些包。

我有什么方法可以施加这些限制吗?

2 个答案:

答案 0 :(得分:4)

您可以查看OSGi Security(2.Security Layer OSGi Core Spec)来管理对各种资源(包,包,服务等)的限制。

在您的情况下,您可以使用IMPORT / EXPORT操作为您的捆绑包设置PackagePermission。其他捆绑包没有任何权限来导入您的包。

答案 1 :(得分:3)

首先,是否有其他人进口您的包裹?除非您导出的实现没有人应该看到(在这种情况下您应该重新考虑您的分区),通常没有问题,有些软件包可能会导入或不导入。

如果您确定需要隐藏某些软件包,则没有简单的方法可以执行此操作。想到的一些事情是

  • 使用ResolverHook来限制软件包的可见性(仅适用于4.3),
  • embedded framework中运行您的捆绑包,只将您要共享的包从该框架公开给主机。

然而,这两种都是非常严厉的方法,除非你是例如,否则我会远离它们。构建自己的应用程序服务器。