OSGi は、Adobe Experience Manager(AEM)の技術スタックにおける基本要素です。AEM の複合バンドルおよびそれらの設定を制御するために使用します。
OSGi は標準化されたプリミティブを提供し、小さく再利用が可能で連携機能に優れたコンポーネントを組み合わせてアプリケーションを構築することを可能にします。これらのコンポーネントからアプリケーションを作成し、デプロイすることができます。**
これにより、 バンドルの管理が容易になり、バンドルを個別に停止、インストール、開始できます。相互依存関係は自動的に処理されます。各OSGiコンポーネント(OSGi仕様を参照)は、様々なバンドルの1つに含まれています。
これらのバンドルの設定は、次のいずれかの方法で管理できます。
sling:OsgiConfig
)の設定いずれの方法も使用できますが、主に実行モードに関連して、次のようなわずかな違いがあります。
Webコンソールは、OSGi設定用の標準インターフェイスです。様々なプロパティを編集するためのUIが提供されます。このUIでは、あらかじめ定義されたリストから可能な値を選択できます。
そのため、使い方が簡単です。
Web コンソールでおこなわれた設定は、現在のインスタンスにすぐに適用されます。現在の実行モードや、今後の実行モードの変更には関係ありません。
リポジトリ内のコンテンツノード(sling:osgiConfig)
sling:OsgiConfig
ノードの命名規則に従うので、設定を特定の実行モードに結び付けることができます。 同じリポジトリ内に複数の実行モードの設定を保存することもできます。使用するメソッドに関わらず、次のことが可能です。
特定の重要な設定について詳しくは、、OSGi 設定を参照してください。。
AEM の Web コンソールは、バンドルを設定するための標準化されたインターフェイスを提供します。「設定」タブは、OSGi バンドルの設定時に使用します。AEM システムパラメーターを設定するための基盤となるメカニズムです。
おこなった変更は、関連する OSGi 設定にすぐに適用されます。再起動の必要はありません。
Webコンソールで行われた変更は、構成ファイルとしてリポジトリに保存されます。 このファイルをコンテンツパッケージに含めておき、将来のインストールで再利用することができます。
Web コンソールでは、デフォルト設定に言及している説明はすべて、Sling のデフォルトに関連しています。
Adobe Experience Manager には独自のデフォルト値があり、設定されるデフォルト値は、コンソールに表示される値と異なる場合があります。
Web コンソールで設定を更新するには:
次のいずれかの方法で、Web コンソールの「設定」タブにアクセスします。
ツール/運営メニューのリンクから Web コンソールを開きます。コンソールにログインした後、次のドロップダウンメニューを使用できます。
OSGi >
ダイレクトURL;例:
http://localhost:4502/system/console/configMgr
リストが表示されます。
次のいずれかの方法で、設定するバンドルを選択します。
ダイアログが開きます。必要に応じて編集できます。例えば、Log LevelをINFO
に設定します。
更新内容は、設定ファイルとしてリポジトリ内に保存されます。後でこれらを見つけるには(例えば、別のインスタンスで使用するコンテンツパッケージに含める場合など)、永続的なID(PID
)をメモしておく必要があります。
「保存」をクリックします。
変更内容は、関連する OSGi 設定にすぐに適用され、再起動は不要です。
これで、関連する設定ファイル;を見つけることができます。例えば、別のインスタンスで使用するコンテンツパッケージに含める場合です。
Webコンソールを使用して行った構成の変更は、次の場所に構成ファイル(.config
)としてリポジトリに保持されます。
/apps
これらの設定ファイルをコンテンツパッケージに含めて、他のインスタンスで再利用することができます。
設定ファイルの形式は非常に特殊です。詳しくは、Sling Apacheのドキュメントを参照してください。
そのため、実際の変更は Web コンソールを使用しておこない、設定ファイルが作成、維持されるようにすることをお勧めします。
Web コンソールには、リポジトリのどの場所に変更が保存されたかは表示されませんが、次の手順で簡単に見つけることができます。
Web コンソールで最初の変更をおこなうことで、設定ファイルを作成します。
CRXDE Lite を開きます。
ツールメニューの「クエリー」を選択します。
タイプが SQL
のクエリーを送信して、更新した設定の PID を検索します。
例えば、Apache Felix OSGi Management Console の永続識別子(PID)は次のとおりです。
org.apache.felix.webconsole.internal.servlet.OsgiManager
よって、SQL クエリーは次のようになります。
select * from nt:base where jcr:path like '/apps/%' and contains(*, 'org.apache.felix.webconsole.internal.servlet.OsgiManager')
設定ファイルのノードが表示されます。
上の例では、次のようになります。
/apps/system/config/org.apache.felix.webconsole.internal.servlet.OsgiManager.config
このファイルを開くと、変更内容を確認できます。ただし、タイプミスを防ぐために、実際の変更はコンソールでおこなうことをお勧めします。
このノードを含むコンテンツパッケージをビルドしておくと、必要に応じて他のインスタンスで使用できます。
Web コンソールを使用するほかに、リポジトリで設定の詳細を定義することもできます。これにより、様々な実行モードを簡単に設定できます。
これらの設定は、システムが参照できるように、リポジトリにsling:OsgiConfig
ノードを作成することで行われます。 これらのノードはOSGi設定を反映し、それらのノードに対するユーザーインターフェイスを形成します。 設定データを更新するには、ノードのプロパティを更新します。
リポジトリ内の設定データを変更すると、Webコンソールを使用して変更が行われたかのように、該当する検証と整合性チェックを行った上で、変更が関連するOSGi設定に直ちに適用されます。 これは、/libs/
から/apps/
に設定をコピーする動作にも当てはまります。
同じ設定パラメーターが複数の場所に配置される場合があるので、システムでは次の処理がおこなわれます。
sling:OsgiConfig
のすべてのノードを検索特定のインスタンスのためだけにリポジトリベースの設定を定義する方法も参照してください。
新しい設定をリポジトリに追加するには、以下を知っておく必要があります。
サービスの永続的なID (PID)。
WebコンソールのConfigurationsフィールドを参照します。 名前は、バンドル名の後ろに括弧で囲まれて表示されます(ページ下部の設定情報に表示されます)。
例えば、AEM WCM Version Managerを設定するノードcom.day.cq.wcm.core.impl.VersionManagerImpl.
を作成します。
特定の実行モードが必要かどうか。フォルダーの作成:
config
— すべての実行モードconfig.author
— 作成者環境用config.publish
— 公開環境用config.<run-mode>
— 適宜構成またはファクトリ構成が必要かどうか。
設定する個々のパラメータ再作成する必要がある既存のパラメーター定義を含めます。
Webコンソールの個々のパラメーターフィールドを参照します。 名前は、各パラメーターで括弧で囲まれて表示されます。
例えば、プロパティを作成します。
versionmanager.createVersionOnActivation
」をクリックして、「アクティベーションでバージョンを 作成」を設定します。
/libs
には既に設定が存在しますか?インスタンス内のすべての設定をリストするには、CRXDE Liteのクエリツールを使用して次のSQLクエリを送信します。
select * from sling:OsgiConfig
その場合は、この設定を /apps/<yourProject>/
にコピーし、新しい場所でカスタマイズすることができます。
新しい設定をリポジトリに実際に追加するには:
CRXDE Lite を使用して次の場所に移動します。
/apps/<yourProject>
まだ存在しない場合は、config
フォルダー(sling:Folder
)を作成します。
config
- すべての実行モードに該当config.<run-mode>
— 特定の実行モードに固有このフォルダーの下に、次の設定でノードを作成します。
型:sling:OsgiConfig
名前:永続的なID(PID);
例えば、AEM WCM Version Managerの場合はcom.day.cq.wcm.core.impl.VersionManagerImpl
ファクトリ構成を作成する際、名前に-<identifier>
を追加します。
例:org.apache.sling.commons.log.LogManager.factory.config-<identifier>
ここで<identifier>
はフリーテキストに置き換えられ、インスタンスを識別するために(必須)入力します(この情報を省略することはできません)。例:
org.apache.sling.commons.log.LogManager.factory.config-MINE
設定するパラメーターごとに、このノードでプロパティを作成します。
Create Version on Activation
の場合はversionmanager.createVersionOnActivation
プロパティを作成する必要があるのは、設定対象のパラメーターのみです。その他は、AEM で設定されているデフォルト値を引き続き使用します。
すべての変更を保存します。
変更は、サービスを再起動することによってノードが更新されるとすぐに適用されます(Web コンソールでおこなった変更と同様)。
/libs
パス内のものは一切変更しないでください。
起動時に設定を読み込むには、設定のフルパスを正しく指定する必要があります。
次の優先順位を使用します。
/apps/*/config...
.の下のリポジトリノード。タイプsling:OsgiConfig
またはプロパティファイルを持ちます。
/libs/*/config...
の下にタイプsling:OsgiConfig
のリポジトリノードがあります。 (標準定義)
<*cq-installation-dir*>/crx-quickstart/launchpad/config/...
の.config
ファイル。 ローカルファイルシステム上。
つまり、/libs
の汎用構成は、/apps
のプロジェクト固有の構成でマスクできます。
システム実行中に設定変更をおこなうと、変更後の設定で再読み込みが開始されます。
その後、次の優先順位が適用されます。
/apps
で設定を変更すると、すぐに有効になります。/libs
の設定を変更すると、/apps
の設定でマスクされない限り、即座に有効になります。実行モードに固有の設定に関しては、複数の実行モードを組み合わせることができます。例えば、設定フォルダーを次のスタイルで作成できます。
/apps/*/config.<runmode1>.<runmode2>/
このようなフォルダー内の設定は、起動時に定義されている実行モードにすべての実行モードが一致した場合に適用されます。
例えば、インスタンスが実行モードauthor,dev,emea
で開始された場合、/apps/*/config.emea
、/apps/*/config.author.dev/
、/apps/*/config.author.emea.dev/
の設定ノードは適用されますが、/apps/*/config.author.asean/
と/config/author.dev.emea.noldap/
の設定ノードは適用されません。
同じ PID に複数の設定が該当する場合は、一致する実行モードの数が最も大きい設定が適用されます。
例えば、インスタンスが実行モードauthor,dev,emea
で開始され、/apps/*/config.author/
と/apps/*/config.emea.author/
の両方が
com.day.cq.wcm.core.impl.VersionManagerImpl
の場合、/apps/*/config.emea.author/
の設定が適用されます。
このルールの精度は PID レベルです。/apps/*/config.author/
で同じPIDに対する一部のプロパティを定義したり、同じPIDに対するより具体的なプロパティを/apps/*/config.emea.author/
で定義することはできません。
一致する実行モードの数が最も多い設定は、PID全体に対して有効です。
以下のリストは、リポジトリで使用できる(標準インストールの)設定の一部を示しています。
作成者 — AEM WCMフィルタ:
libs/wcm/core/config.author/com.day.cq.wcm.core.WCMRequestFilter
発行 — AEM WCMフィルタ:
libs/wcm/core/config.publish/com.day.cq.wcm.core.WCMRequestFilter
発行 — AEM WCMページ統計:
libs/wcm/core/config.publish/com.day.cq.wcm.core.stats.PageViewStatistics
これらの設定は/libs
にあるので、直接編集する必要はありませんが、カスタマイズの前にアプリケーション領域(/apps
)にコピーしてください。
インスタンスに含まれるすべての設定ノードをリストするには、CRXDE Lite のクエリ機能を使用して、次の SQL クエリを送信します。
select * from sling:OsgiConfig
Webコンソールを使用して設定を変更した場合、(通常は)次の場所にリポジトリに書き込まれます。
/apps/{somewhere}
デフォルトでは{somewhere}
はsystem/config
なので、設定は
/apps/system/config
ただし、最初にリポジトリの別の場所から来た設定を編集する場合は、次のようにします。例:
/libs/foo/config/someconfig
その後、更新された設定が元の場所に書き込まれます。例:
/apps/foo/config/someconfig
admin
によって変更された設定は、次の下の*.config
ファイルに保存されます。
/crx-quickstart/launchpad/config
これは OSGi 設定管理者の非公開データ領域であり、システムへの入力方法にかかわらず、admin
によって指定された設定の詳細がすべて保持されます。
これは実装の詳細であり、このディレクトリをユーザーが直接編集してはいけません。
しかし、バックアップや複数インストールのためにコピーを取れるように、これらの設定ファイルの場所を知っておくと便利です。
Apache Felix OSGi Management Console
../crx/org/apache/felix/webconsole/internal/servlet/OsgiManager.config
CRX Slingクライアントリポジトリ
../com/day/crx/sling/client/impl/CRXSlingClientRepository/<pid-nr>.config
次の場所にあるフォルダーやファイルは、決して編集しないでください。
/crx-quickstart/launchpad/config