Java Apache Karaf的OSGi安全性:未找到服务条件许可管理员
我正在尝试在我的应用程序中使用,以Kraf运行。该代码摘自《OSGi在行动》(见)一书,概括为:Java Apache Karaf的OSGi安全性:未找到服务条件许可管理员,java,security,osgi,apache-karaf,Java,Security,Osgi,Apache Karaf,我正在尝试在我的应用程序中使用,以Kraf运行。该代码摘自《OSGi在行动》(见)一书,概括为: ConditionalPermissionAdmin permAdmin = getConditionalPermissionAdmin(context); ConditionalPermissionUpdate update = permAdmin.newConditionalPermissionUpdate(); List infos = update.getConditionalPermiss
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已经启用了这个功能。
更多信息请参见猜测:我在引擎盖下使用Felix。我在现有功能中添加了
mvn:org.apache.felix/org.apache.felix.framework.security
,效果非常好!但当我启动它时,org.apache.aries.jmx.core发现了一个ClassNotFound异常PermissionAdmin。你知道这是从哪里来的吗?我想知道aries核心包的更新是否已经解决了这个问题,如果已经解决了,请确保在早期阶段(低级别)在startup.properties中配置了permissionsadmin包。