現在のバンドルに含まれていない他のバンドルのプロパティにアクセスすることを含むユースケースを作成しています。これを実現するには、現在のAEMバンドル(AEM 6.2)のアクセス許可を変更する必要があります。私は、OSGiサービスのConditionalPermissionAdminが今後の道だと考えています。OSGI ConfigurationAdminがnullです。AEMでgetServiceReferenceを使用して取得しています。
アプローチリファレンス:http://moi.vonos.net/java/osgi-security/
私はConditionalPermissionAdminを取得する予定で以下のコードを、持っていますが、 この常にnullいくつかの未知の理由。
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());
}
}
私は、任意のビルドや実行時の問題が表示されません。束も良い形です。
hereが示唆されているように、この低レベルAPIは、最善のアプローチではありません。しかし、私は、宣言的サービスのアプローチの許可については不明です。
ヘッドアップ - >私はOSGiの概念と実装が初めてです。
参照:OSGiのに一般
1.どのAEMバージョンをお使いですか? 2.あなたのユースケースを詳しく教えてください。ユーザーベースのアクセス許可が機能しないのはなぜですか? –
@AhmedMusallam - 私はAEM 6.2です。私はユースケースで説明を更新しました。ユーザーベースのアクセス許可は、コンテンツに関連するものではなく動作します。 – phemanthkumar28
「他のバンドルのプロパティにアクセスする」とは何を意味していますか?あなたは何にアクセスしようとしていますか? OSGIの設定? –