![]() | |
Sun Java System Message Queue 3.5 SP1 管理ガイド |
付録 B
プラグイン持続の設定この付録では、JDBC アクセスが可能なデータストアにアクセスするために、プラグイン持続を使用するブローカの設定方法について説明します。
概要Message Queue のブローカには、持続情報の書き込みおよび取得を管理する持続マネージャのコンポーネントが含まれています (「持続マネージャ」を参照)。デフォルトでは、持続マネージャは、組み込みのファイルベースのデータストアにアクセスするように設定されていますが、持続マネージャを再設定して、JDBC 互換ドライバを介したアクセスが可能な任意のデータストアに接続できます。
プラグイン持続を使用するようにブローカを設定するには、ブローカインスタンスの設定ファイルに、多数の JDBC 関連のプロパティを設定する必要があります。また、Message Queue の持続処理を実行するために、適切なデータベーススキーマを作成する必要があります。Message Queue には、JDBC ドライバおよびブローカの設定プロパティを使用して、プラグインデータベースの作成および管理を行うデータベース管理ユーティリティ (imqdbmgr) が用意されています。
この付録に示す手順は、例として Java 2 プラットフォーム Enterprise Edition (J2EE) SDK にバンドルされる PointBase DBMS を使用して説明しています。バージョン 1.4 は、java.sun.com からダウンロードして入手できます。例では、クライアント / サーババージョンの代わりに、PointBase の組み込みバージョンを使用します。手順の指示は、PointBase の例のパス名とプロパティ名を使用しています。これらは、「例 :」という言葉で識別されます。
Oracle と PointBase の設定例は、付録 A 「Message Queue データの場所」に示す例の格納場所にあります。さらに、PointBase 組み込みバージョン、PointBase サーババージョン、Oracle、および Cloudscape の例は、インスタンス設定ファイル内でコメントアウトされた値として提供されています。
JDBC アクセスが可能なデータストアへの接続JDBC アクセスが可能なデータストアに接続するには、次の手順を実行するだけです。
JDBC アクセスが可能なデータストアに接続するには
- ブローカの設定ファイルに、JDBC 関連のプロパティを設定します。
表 B-1 に示すプロパティを参照してください。
- 次のパスに、JDBC ドライバの jar ファイルのコピーまたはシンボリックリンクを配置します。
/usr/share/lib/imq/ext/ (Solaris の場合)
/opt/imq/lib/ext/ (Linux の場合)
IMQ_VARHOME¥lib¥ext (Windows の場合)
コピーの例 (Solaris) :
% cp j2eeSDK_install_directory/pointbase/lib/pointbase.jar /usr/share/lib/imq/ext
シンボリックリンクの例 (Solaris) :
% ln -s j2eeSDK_install_directory/lib/pointbase/pointbase.jar /usr/share/lib/imq/ext
- Message Queue の持続に必要なデータベーススキーマを作成します。
組み込みデータベース用の imqdbmgr create all コマンドまたは外部データベース用の imqdbmgr create tbl コマンドを使用します。「データベース管理ユーティリティ (imqdbmgr)」を参照してください。
例 :
- imqdbmgr がある場所にディレクトリを移動します。
cd /usr/bin (Solaris の場合)
cd /opt/imq/bin (Linux の場合)
cd IMQ_HOME/bin (Windows の場合)
- imqdbmgr コマンドを入力します。
imqdbmgr create all
注
組み込みデータベースが使用されている場合は、次のディレクトリの下に作成することをお勧めします。
.../instances/instanceName/dbstore/dabatabseName.
組み込みデータベースは、ユーザー名とパスワードで保護されていない場合、ファイルシステムのアクセス権によって保護される可能性があります。ブローカが確実にデータベースに対して読み取りと書き込みを実行できるように、ブローカを実行するユーザーは、imqdbmgr コマンドを使用して組み込みデータベースを作成したユーザーと同一でなければなりません (「データベース管理ユーティリティ (imqdbmgr)」を参照)。
JDBC 関連のブローカの設定プロパティブローカのインスタンス設定ファイルは、その設定ファイルが関連付けられているブローカインスタンスの名前 (instanceName) によって識別されたディレクトリに書き込まれます (付録 A 「Message Queue データの場所」を参照)。
ファイルが存在しない場合、ファイルを作成する Message Queue に対して、-name instanceName オプションを使用して、ブローカを起動する必要があります。
表 B-1 に、JDBC アクセスが可能なデータストアに接続する場合に、設定が必要な設定プロパティを示します。プラグイン持続を使用する各ブローカインスタンスのインスタンス設定ファイル (config.properties) に、これらのプロパティを設定します。
インスタンス設定プロパティを使用すると、Message Queue データベーススキーマを作成する SQL コードをカスタマイズできます。各データベーステーブルを作成するための SQL コードを指定する設定可能なプロパティがあります。これらのプロパティは、接続されたデータベースが使用するデータタイプを適切に指定するために必要となります。
正確な SQL 構文に関してはデータベースベンダー間で互換性がないため、必ず使用中のデータベースのベンダーが提供している相応するマニュアルを確認し、それに従って表 B-1 のプロパティを調整してください。たとえば、PointBaseデータベースの場合は、IMQMSG35 テーブルの MSG 列で許容される最大の長さを調整する必要が生じる場合があります (imq.persist.jdbc.table.IMQMSG35 プロパティを参照)。
表 B-1 には、PointBase DBMS の例で指定する値が含まれています。
表 B-1 JDBC 関連プロパティ
プロパティ名
説明
imq.persist.store
ファイルベースまたは JDBC ベースのデータストアを指定する
例 :
jdbc
imq.persist.jdbc.brokerid
(省略可能)複数のブローカインスタンスが、持続データストアとして、同じデータベースを使用する場合、データベーステーブル名を一意にするために、データベーステーブル名に追加されるブローカインスタンス識別子を指定する。通常、1 つのブローカインスタンスだけのデータを格納する組み込みデータベースでは不要。識別子には、英数字を使用し、データベースで許可されているテーブル名の最大数 12 を超えないようにする必要がある
例 : PointBase 組み込みバージョンの場合は不要
imq.persist.jdbc.driver
データベースに接続する JDBC ドライバの Java クラス名を指定する
例 :
com.pointbase.jdbc.jdbcUniversalDriver
imq.persist.jdbc.opendburl
既存データベースへのコネクションを開くためのデータベース URL を指定する
例 :
jdbc:pointbase:embedded:dbName;
database.home= .../instances/instanceName/dbstoreimq.persist.jdbc.createdburl
(省略可能)データベースを作成するコネクションを開くためのデータベース URL を指定する。imqdbmgr を使用して、データベースを作成する場合にだけ指定する
例 :
jdbc:pointbase:embedded:dbName;new,
database.home= .../instances/instanceName/dbstoreimq.persist.jdbc.closedburl
(省略可能)ブローカをシャットダウンする場合に、現在のデータベースコネクションをシャットダウンするためのデータベース URL を指定する
例 : PointBase の場合は不要
imq.persist.jdbc.user
(省略可能)必要に応じて、データベースコネクションを開くときに使用するユーザー名を指定する。セキュリティ上の理由から、代わりに、次のコマンド行オプションを使用して値を指定できる
imqbrokerd -dbuser
および imqdbmgr -uimq.persist.jdbc.needpassword
(省略可能)データベースでブローカのアクセスにパスワードを必要とするかどうかを指定する。値を true にすると、パスワードが必要になる。パスワードは、次のコマンド行オプションを使用して指定できる
imqbrokerd -dbpassword
imqdbmgr -pコマンド行オプション、またはパスファイル (「passfile の使用」を参照) のどちらかを使用してパスワードを指定しないと、ブローカによってパスワードの入力が要求される
imq.persist.jdbc.password
(省略可能)必要に応じて、データベースコネクションを開くときに使用するパスワードを指定する。このプロパティは passfile 内だけで指定可能 (「passfile の使用」を参照)。
さまざまな方法でパスワードを指定できる。もっとも安全な方法は、ブローカプロンプトでパスワードを入力することである。安全性は低くなるが、パスファイルを使用してパスファイルを読み取り保護することもできる。安全性はもっとも低くなるが、次のコマンド行オプションを使用してパスワードを指定することもできる
imqbrokerd -dbpassword
imqdbmgr -pimq.persist.jdbc.table.IMQSV35
バージョンテーブルを作成するための SQL コマンド
例 :
CREATE TABLE ${name} (STOREVERSION INTEGER NOT NULL, BROKERID VARCHAR(100))
imq.persist.jdbc.table.IMQCCREC3 5
設定変更レコードテーブルを作成するための SQL コマンド
例 :
CREATE TABLE ${name} (RECORDTIME BIGINT NOT NULL, RECORD BLOB(10k))
imq.persist.jdbc.table.IMQDEST35
送信先テーブルを作成するための SQL コマンド
例 :
CREATE TABLE ${name} (DID VARCHAR(100) NOT NULL, DEST BLOB(10k), primary key(DID))
imq.persist.jdbc.table.IMQINT35
配信対象テーブルを作成するための SQL コマンド
例 :
CREATE TABLE ${name} (CUID BIGINT NOT NULL, INTEREST BLOB(10k), primary key(CUID))
imq.persist.jdbc.table.IMQMSG35
メッセージテーブルを作成するための SQL コマンド
例 :
CREATE TABLE ${name} (MID VARCHAR(100) NOT NULL, DID VARCHAR(100), MSGSIZE BIGINT, MSG BLOB(1m), primary key(MID))
MSG 列のデフォルトの最大長は、1 M バイト (1m)。メッセージがこの長さより長くなると予想される場合は、それに応じて長さを設定する。テーブルが既に作成されている場合は、変更を加えるためにテーブルを作成し直す必要がある
imq.persist.jdbc.table.IMQPROPS3 5
プロパティテーブルを作成するための SQL コマンド
例 :
CREATE TABLE ${name} (PROPNAME VARCHAR(100) NOT NULL, PROPVALUE BLOB(10k), primary key(PROPNAME))
imq.persist.jdbc.table.IMQILIST3 5
配信対象の状態テーブルを作成するための SQL コマンド
例 :
CREATE TABLE ${name} (MID VARCHAR(100) NOT NULL, CUID BIGINT, DID VARCHAR(100), STATE INTEGER, primary key(MID, CUID))
imq.persist.jdbc.table.IMQTXN35
トランザクションテーブルを作成するための SQL コマンド
例 :
CREATE TABLE ${name} (TUID BIGINT NOT NULL, STATE INTEGER, TSTATEOBJ BLOB(10K), primary key(TUID))
imq.persist.jdbc.table.IMQTACK35
トランザクション通知テーブルを作成するための SQL コマンド
例 :
CREATE TABLE ${name} (TUID BIGINT NOT NULL, TXNACK BLOB(10k))
すべてのブローカ設定プロパティと同様に、値は -D コマンド行オプションを使用して設定できます。データベースで特定のデータベース固有プロパティを設定する必要がある場合、ブローカ (imqbrokerd) の起動時に、-D コマンド行オプションを使用するか、あるいは Database Manager ユーティリティ (imqdbmgr) を使用して設定することができます。
例 :
PointBase の組み込みデータベース例の場合、データベースコネクション URL (表 B-1 の例を参照) に、データベースの絶対パスを指定する代わりに、-D コマンド行オプションを使用して、PointBase システムディレクトリを定義することができます。
この場合、データベースを作成したり、開いたりするための URL は、それぞれ次のように指定できます。
および
データベース管理ユーティリティ (imqdbmgr)Message Queue には、持続に必要なスキーマをセットアップするためのデータベース管理ユーティリティ (imqdbmgr) が用意されています。データベーステーブルが破損した場合や別のデータベースをデータストアとして使用する場合に、このユーティリティを使用して、Message Queue のデータベーステーブルを削除することもできます。
この節では、imqdbmgr コマンドの基本構文、サブコマンドのリスト、imqdbmgr コマンドのオプションの概要について説明します。
imqdbmgr コマンドの構文
imqdbmgr コマンドの一般的な構文は、次のとおりです。
-v、または -h オプションを指定する場合、そのコマンド行で指定するサブコマンドは実行できません。たとえば、次のコマンドを入力すると、バージョン情報が表示されますが、create サブコマンドは実行されません。
imqdbmgr のサブコマンド
データベース管理ユーティリティ (imqdbmgr) には、次の表 B-2 に示すようなサブコマンドが含まれています。
imqdbmgr コマンドのオプションの概要
表 B-3 に imqdbmgr コマンドのオプションを一覧表示します。