我正在研究涉及訪問不屬於當前包的其他包的屬性的用例。爲了實現這一點,我必須修改當前AEM捆綁包(AEM 6.2)的權限。我看到OSGi服務的ConditionalPermissionAdmin是前進的方向。在使用AEM中的getServiceReference進行檢索時,OSGI ConfigurationAdmin爲空
方法參考:http://moi.vonos.net/java/osgi-security/
我有下面的代碼,即打算取回ConditionalPermissionAdmin但 一些未知的原因,這總是空。
public class Activator implements BundleActivator {
private static final Logger LOG = LoggerFactory.getLogger(Activator.class);
private ConditionalPermissionAdmin conditionalPermissionAdmin;
@Override
public final void start(final BundleContext bundleContext) {
try {
conditionalPermissionAdmin = getConditionalPermissionAdmin(bundleContext);
if (conditionalPermissionAdmin != null) {
LOG.info("{0} conditionalPermissionAdmin ", conditionalPermissionAdmin.getClass());
/* pseudocode */
}
LOG.info("{0} started", bundleContext.getBundle().getSymbolicName());
} catch (Exception ex) {
LOG.error(ex.getMessage());
}
}
private ConditionalPermissionAdmin getConditionalPermissionAdmin(BundleContext context) throws BundleException {
ServiceReference ref = context.getServiceReference(ConditionalPermissionAdmin.class.getName());
ConditionalPermissionAdmin permissionAdmin = null;
if (ref != null) {
permissionAdmin = (ConditionalPermissionAdmin) context.getService(ref);
}
return permissionAdmin;
}
@Override
public final void stop(final BundleContext bundleContext) {
LOG.info("{0} stopped", bundleContext.getBundle().getSymbolicName());
}
}
我看不出有任何編譯或運行時的問題。即使是捆綁狀態良好。
這種低級別的API是不是最好的方法的建議here。但我不確定聲明式服務方法的許可。
單挑 - >我是OSGi的新概念和實現。
參考文獻:
1.您的AEM版本是什麼?你能詳細說明你的用例嗎?以及爲什麼基於用戶的權限不起作用? –
@AhmedMusallam - 我在AEM 6.2上。我用這個用例更新了描述。基於用戶的權限不起作用,因爲這不是與內容相關的內容。 – phemanthkumar28
當你說「訪問其他包的屬性」是什麼意思?你想要訪問什麼? OSGI配置? –