我正在尝试在我的应用程序中使用条件权限,在 Karaf 中运行。代码摘自 OSGi in Action 一书(请参阅完整的策略示例),归结为:
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 安全层有问题吗?如何激活它?