Menu Close

14.3. コンテナーレベルのロッキング

概要

コンテナーレベルのロッキングによって、より高速なフェイルオーバーのパフォーマンスを提供するためにバンドルをスレーブカーネルインスタンスに事前ロードできます。コンテナーレベルのロッキングは、シンプルなファイルおよび JDBC ロッキングメカニズムの両方でサポートされます。

コンテナーレベルのロッキングの設定

コンテナーレベルのロックを実装するには、マスター /スレーブ設定の各システムの etc/system.properties ファイルに以下を追加します。

例14.7 コンテナーレベルのロッキングの設定

karaf.lock=true
karaf.lock.level=50
karaf.lock.delay=10000

karaf.lock.level プロパティーは、Red Hat Fuse インスタンスに対し、ブートプロセスを上回り、OSGi コンテナーを起動する方法を指示します。同じ開始レベル以下が割り当てられたバンドルも、その Fuse インスタンスで開始されます。

バンドルの開始レベルは、BundleName .jar=level の形式で etc/startup.properties で指定されます。コアシステムバンドルのレベルは 50 未満ですが、ユーザーバンドルのレベルは 50 を超えます。

表14.1 Bundle 開始レベル

開始レベル動作

1

「コールド」スタンバイインスタンス。コアバンドルはコンテナーにロードされません。スレーブは、ロックが取得されるまで待ち、サーバーを開始します。

<50

「ホット」スタンバイインスタンス。コアバンドルはコンテナーにロードされます。スレーブは、ロックが取得されるまで待ち、ユーザーレベルバンドルを開始します。コンソールは、このレベルで各スレーブインスタンスに対してアクセス可能です。

>50

ユーザーバンドルが開始されるため、この設定は推奨されません。

ポート競合の回避

同じホストで「ホット」スペアを使用する場合は、バインドの競合を避けるために、JMX リモートポートを一意の値に設定する必要があります。fuse start スクリプト(または子インスタンスの karaf スクリプト)を編集して以下を含めることができます。

DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.authenticate=false"