0
我想在我的應用程序中使用conditional permissions,在卡拉夫運行。該代碼是從書的OSGi在行動的摘錄(見full policy example),並歸結爲:OSGi安全與Apache卡拉夫:沒有服務ConditionalPermissionAdmin找到
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
服務引用爲了它。
卡拉夫安全層有問題嗎?我如何激活它?
好猜:我在引擎蓋下使用菲利克斯。我添加了'mvn:org.apache.felix/org.apache.felix.framework.security'到我現有的功能,就像一個魅力! 當我啓動它時,我收到了一個ClassNotFound異常'PermissionAdmin沒有被org.apache.aries.jmx.core找到'。任何想法可能來自哪裏? –
我想知道aries核心包的刷新是否已經解決了這個問題,如果是這樣的話,請確保在早期階段(低級startlevel)配置的startup.properties中有permissionsadmin包。 –