我有一个由几个OSGi包组成的应用程序。我想强制执行其中一些仅在提供有效令牌(例如许可证密钥)时才提供其他捆绑包访问其服务。
这就是我想限制对这些捆绑包的访问的原因:
我已经阅读了一些关于ServicePermission
类和OSGi框架相关的内容,但在我看来,这些让网站管理员控制访问策略,而不是捆绑包制造商,这就是我想要的
答案 0 :(得分:1)
您的用例似乎相当复杂,所以我不确定这是否完全回答了您的问题。但是,您可以查看Service Hooks,这是OSGi第4版4.2版中添加的新功能。
使用Find Hook,应该可以“查看并减少getServiceReference
和getServiceReferences
方法的结果。此挂钩可以从结果中删除服务引用对象,也可以有效地从呼叫者隐藏服务。“ (来自Peter Kriens撰写的article)
使用此功能,您可以为客户端捆绑包实施自己的机制,以“授权”自己访问特定服务(或相反地“检查”客户端捆绑包以确定是否应授予对特定服务的访问权限。)