我正在尝试使用conditional permissions在我的应用程序中,在 Karaf 中运行。该代码摘自《OSGi in Action》一书(请参阅 full policy example ),可归结为:
ConditionalPermissionAdmin permAdmin = getConditionalPermissionAdmin(context);
ConditionalPermissionUpdate update = permAdmin.newConditionalPermissionUpdate();
List infos = update.getConditionalPermissionInfos();
infos.clear();
infos.add(permAdmin.newConditionalPermissionInfo(
"All permissions",
new ConditionInfo[]{
new ConditionInfo(
BundleLocationCondition.class.getName(),
new String[]{FrameworkUtil.getBundle(this.getClass()).getLocation()})
},
new PermissionInfo[]{
new PermissionInfo(AllPermission.class.getName(), "*", "*")
},
ConditionalPermissionInfo.ALLOW));
update.commit();
但是,Karaf 似乎没有注册 ConditionalPermissionAdmin 服务,因为我在查找时得到 null
ServiceReference。
Karaf安全层有问题吗?如何激活它?
最佳答案
Karaf 没有任何问题,因为您很可能正在使用开箱即用的 Karaf,您很可能也在使用 Felix 框架。对于 Felix,您需要部署额外的 org/apache/felix/org.apache.felix.security/1.4.0/org.apache.felix.framework.security-1.4.0.jar=1。 (很可能还需要更新的版本;-)) Equinox 已经启用了此功能。 查看更多my blog
关于java - Apache Karaf 的 OSGi 安全性 : no service ConditionalPermissionAdmin found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19490982/