14.2. JDBC ロックシステムの使用
概要 リンクのコピーリンクがクリップボードにコピーされました!
JDBC ロックメカニズムは、Red Hat Fuse インスタンスが別々のマシンに存在するフェールオーバーデプロイメントを対象としています。
このシナリオでは、プライマリーインスタンスはデータベースでホストされるロッキングテーブルのロックを保持します。プライマリーインスタンスでロックが失われた場合、待機しているセカンダリープロセスがロックテーブルにアクセスできるようになり、そのコンテナーを完全に起動します。
JDBC ドライバーのクラスパスへの追加 リンクのコピーリンクがクリップボードにコピーされました!
JDBC ロッキングシステムでは、JDBC ドライバーは、プライマリー/セカンダリーセットアップの各インスタンスのクラスパス上にある必要があります。次のように、JDBC ドライバーをクラスパスに追加します。
-
JDBC ドライバー JAR ファイルを各 Red Hat Fuse インスタンスの
ESBInstallDir/lib/ext
ディレクトリーにコピーします。 CLASSPATH
変数に JDBC ドライバー JAR が含まれるようにbin/karaf
起動スクリプトを変更します。たとえば、JDBC JAR ファイル
JDBCJarFile.jar
の場合、以下のように起動スクリプトを変更できます (*NIX オペレーティングシステムの場合)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記MySQL ドライバー JAR または PostgreSQL ドライバー JAR を追加する場合、
karaf-
接頭辞を付けてドライバー JAR の名前を変更する必要があります。変更しない場合には、Apache Karaf がハングし、ログに Apache Karaf がドライバーを見つけられないと表示されます。
JDBC ロックシステムの設定 リンクのコピーリンクがクリップボードにコピーされました!
JDBC ロックシステムを設定するには、以下のようにプライマリー/セカンダリーデプロイメント内の各インスタンスの etc/system.properties
ファイルを更新します。
例14.2 JDBC ロックファイルの設定
この例では、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.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 ロックファイル設定
MySQL での JDBC ロックの設定 リンクのコピーリンクがクリップボードにコピーされました!
JDBC ロックシナリオでデータベースとして MySQL を使用している場合、etc/system.properties
ファイルの karaf.lock.class
プロパティーは org.apache.karaf.main.lock.MySQLJDBCLock
を指している必要があります。たとえば、system.properties
ファイルを次のように設定できます。
例14.5 MySQL の JDBC ロックファイル設定
PostgreSQL での JDBC ロックの設定 リンクのコピーリンクがクリップボードにコピーされました!
JDBC ロックシナリオでデータベースとして PostgreSQL を使用している場合、etc/system.properties
ファイルの karaf.lock.class
プロパティーは org.apache.karaf.main.lock.PostgreSQLJDBCLock
を指している必要があります。たとえば、system.properties
ファイルを次のように設定できます。
例14.6 PostgreSQL の JDBC ロックファイル設定
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
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