14.2. JDBC ロックシステムの使用


概要

JDBC ロックメカニズムは、Red Hat Fuse インスタンスが別々のマシンに存在するフェールオーバーデプロイメントを対象としています。

このシナリオでは、プライマリーインスタンスはデータベースでホストされるロッキングテーブルのロックを保持します。マスターでロックが失われた場合、待機しているスレーブプロセスがロックテーブルにアクセスできるようになり、そのコンテナーを完全に起動します。

JDBC ドライバーのクラスパスへの追加

JDBC ロッキングシステムでは、JDBC ドライバーは、マスター/スレーブセットアップの各インスタンスのクラスパス上にある必要があります。次のように、JDBC ドライバーをクラスパスに追加します。

  1. JDBC ドライバー JAR ファイルを各 Red Hat Fuse インスタンスの ESBInstallDir/lib/ext ディレクトリーにコピーします。
  2. CLASSPATH 変数に JDBC ドライバー JAR が含まれるように bin/karaf 起動スクリプトを変更します。

    たとえば、JDBC JAR ファイル JDBCJarFile.jar の場合、以下のように起動スクリプトを変更できます (*NIX オペレーティングシステムの場合)。

        ...
        # Add the jars in the lib dir
        for file in "$KARAF_HOME"/lib/karaf*.jar
        do
            if [ -z "$CLASSPATH" ]; then
                CLASSPATH="$file"
            else
                CLASSPATH="$CLASSPATH:$file"
            fi
        done
        CLASSPATH="$CLASSPATH:$KARAF_HOME/lib/JDBCJarFile.jar"
    注記

    MySQL ドライバー JAR または PostgreSQL ドライバー JAR を追加する場合、karaf- 接頭辞を付けてドライバー JAR の名前を変更する必要があります。変更しない場合には、Apache Karaf がハングし、ログに Apache Karaf がドライバーを見つけられないと表示されます。

JDBC ロックシステムの設定

JDBC ロックシステムを設定するには、以下のようにプライマリー/セカンダリーデプロイメント内の各インスタンスの etc/system.properties ファイルを更新します。

例14.2 JDBC ロックファイルの設定

karaf.lock=true
karaf.lock.class=org.apache.karaf.main.lock.DefaultJDBCLock
karaf.lock.level=50
karaf.lock.delay=10000
karaf.lock.jdbc.url=jdbc:derby://dbserver:1527/sample
karaf.lock.jdbc.driver=org.apache.derby.jdbc.ClientDriver
karaf.lock.jdbc.user=user
karaf.lock.jdbc.password=password
karaf.lock.jdbc.table=KARAF_LOCK
karaf.lock.jdbc.clustername=karaf
karaf.lock.jdbc.timeout=30

この例では、sample という名前のデータベースが存在しない場合は作成されます。ロックテーブルを取得する最初の Red Hat Fuse インスタンスはプライマリーインスタンスです。データベースへの接続が失われた場合、マスターインスタンスは正常なシャットダウンを試行し、データベースサービスが復元する際にスレーブインスタンスをマスターにすることができます。以前のマスターは手動で再起動する必要があります。

Oracle での JDBC ロックの設定

JDBC ロックシナリオでデータベースとして Oracle を使用している場合、etc/system.properties ファイルの karaf.lock.class プロパティーは org.apache.karaf.main.lock.OracleJDBCLock を指している必要があります。

それ以外の場合は、以下に示すように、設定に system.properties ファイルを通常どおりに設定します。

例14.3 Oracle 用の JDBC ロックファイル設定

karaf.lock=true
karaf.lock.class=org.apache.karaf.main.lock.OracleJDBCLock
karaf.lock.jdbc.url=jdbc:oracle:thin:@hostname:1521:XE
karaf.lock.jdbc.driver=oracle.jdbc.OracleDriver
karaf.lock.jdbc.user=user
karaf.lock.jdbc.password=password
karaf.lock.jdbc.table=KARAF_LOCK
karaf.lock.jdbc.clustername=karaf
karaf.lock.jdbc.timeout=30
注記

karaf.lock.jdbc.url には、アクティブな Oracle システム ID (SID) が必要です。つまり、この特定のロックを使用する前に、データベースインスタンスを手動で作成する必要があります。

Derby での JDBC ロックの設定

JDBC ロックシナリオでデータベースとして Derby を使用している場合、etc/system.properties ファイルの karaf.lock.class プロパティーは org.apache.karaf.main.lock.DerbyJDBCLock を指している必要があります。たとえば、system.properties ファイルを次のように設定できます。

例14.4 Derby の JDBC ロックファイル設定

karaf.lock=true
karaf.lock.class=org.apache.karaf.main.lock.DerbyJDBCLock
karaf.lock.jdbc.url=jdbc:derby://127.0.0.1:1527/dbname
karaf.lock.jdbc.driver=org.apache.derby.jdbc.ClientDriver
karaf.lock.jdbc.user=user
karaf.lock.jdbc.password=password
karaf.lock.jdbc.table=KARAF_LOCK
karaf.lock.jdbc.clustername=karaf
karaf.lock.jdbc.timeout=30

MySQL での JDBC ロックの設定

JDBC ロックシナリオでデータベースとして MySQL を使用している場合、etc/system.properties ファイルの karaf.lock.class プロパティーは org.apache.karaf.main.lock.MySQLJDBCLock を指している必要があります。たとえば、system.properties ファイルを次のように設定できます。

例14.5 MySQL の JDBC ロックファイル設定

karaf.lock=true
karaf.lock.class=org.apache.karaf.main.lock.MySQLJDBCLock
karaf.lock.jdbc.url=jdbc:mysql://127.0.0.1:3306/dbname
karaf.lock.jdbc.driver=com.mysql.jdbc.Driver
karaf.lock.jdbc.user=user
karaf.lock.jdbc.password=password
karaf.lock.jdbc.table=KARAF_LOCK
karaf.lock.jdbc.clustername=karaf
karaf.lock.jdbc.timeout=30

PostgreSQL での JDBC ロックの設定

JDBC ロックシナリオでデータベースとして PostgreSQL を使用している場合、etc/system.properties ファイルの karaf.lock.class プロパティーは org.apache.karaf.main.lock.PostgreSQLJDBCLock を指している必要があります。たとえば、system.properties ファイルを次のように設定できます。

例14.6 PostgreSQL の JDBC ロックファイル設定

karaf.lock=true
karaf.lock.class=org.apache.karaf.main.lock.PostgreSQLJDBCLock
karaf.lock.jdbc.url=jdbc:postgresql://127.0.0.1:5432/dbname
karaf.lock.jdbc.driver=org.postgresql.Driver
karaf.lock.jdbc.user=user
karaf.lock.jdbc.password=password
karaf.lock.jdbc.table=KARAF_LOCK
karaf.lock.jdbc.clustername=karaf
karaf.lock.jdbc.timeout=0

JDBC ロッククラス

Apache Karaf では現在、次の JDBC ロッククラスが提供されています。

org.apache.karaf.main.lock.DefaultJDBCLock
org.apache.karaf.main.lock.DerbyJDBCLock
org.apache.karaf.main.lock.MySQLJDBCLock
org.apache.karaf.main.lock.OracleJDBCLock
org.apache.karaf.main.lock.PostgreSQLJDBCLock
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.