我正在尝试在我的应用程序中使用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();
然而,没有ConditionalPermissionAdmin服务似乎由Karaf注册,因为我在查找时获得了null
ServiceReference。
Karaf安全层有问题吗?我该如何激活它?
答案 0 :(得分:1)
Karaf没有任何问题,因为你很可能正在使用Karaf,你很可能也在使用Felix Framework。对于Felix,您需要部署额外的org / apache / felix / org.apache.felix.security / 1.4.0 / org.apache.felix.framework.security-1.4.0.jar = 1。 (很可能还需要更新的版本;-)) Equinox已经启用了此功能。 请点击my blog
了解更多信息