ブローカの持続データストアには、物理的送信先、永続サブスクリプション、メッセージ、トランザクション、および通知に関する情報が格納されます。Message Queue ブローカはデフォルトで、ファイルベースの持続ストアを使用するように設定されますが、JDBC 互換ドライバからアクセス可能な任意のデータストアに接続するようにブローカを設定し直すことができます。 ブローカ設定プロパティー imq.persist.store (表 14–4 を参照) は 2 つの持続形式のどちらを使用するかを指定します。
この節では、持続ストアを使用するようにブローカを設定する方法を説明します。次のトピックが含まれます。
ファイルベースのデータストアは、ブローカインスタンスの作成時に自動的に作成されます。このストアは、ブローカのインスタンスディレクトリに配置されます。正確 な場所については、付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照してください。
デフォルトでは、Message Queue はファイルベースのストアについて、ディスクへの非同期の書き込み操作を実行します。オペレーティングシステムは、このような操作をバッファリングし、パフォーマンスを高めることができます。ただし、不測のシステム障害が書き込み操作の間に発生した場合、メッセージは失われる可能性があります。信頼性を高めるために (パフォーマンスの低下と引き換えに)、データを同時に書き込むように、ブローカプロパティー imq.persist.file.sync を設定できます。このプロパティーの詳細な説明については、「ファイルベースの持続」および 表 14–5 を参照してください。
ブローカインスタンスを起動すると、imqbrokerd コマンドの -reset オプションを使用してファイルシステムストアを消去できます。このオプションおよびサブオプションの詳細は、「ブローカユーティリティー」を参照してください。
JDBC ベースの持続を使用するようにブローカを設定するには、ブローカインスタンス設定ファイルで JDBC 関連のプロパティーを設定し、適切なデータベーススキーマを作成します。Message Queue のデータベースマネージャーユーティリティー (imqdbmgr) は、JDBC ドライバとブローカ設定プロパティーを使用してデータベースを作成し、管理します。さらに、破損したテーブルをデータベースから削除する場合や別のデータベースをデータストアとして使用する場合に、データベースマネージャーを使用することもできます。詳細については、「データベースマネージャーユーティリティー」を参照してください。
Oracle および PointBase データベース製品の設定例を参照できます。これらのファイルの場所は、プラットフォームによって異なり、付録 A 「プラットフォームごとの Message QueueTM データの場所」 の関連する表内の「アプリケーションと設定の例」に記載されています。さらに、PointBase の組み込みバージョン、PointBase サーバーバージョン、および Oracle の例は、インスタンス設定ファイル config.properties 内でコメントアウトされた値として提供されています。
ブローカの設定ファイルに、JDBC 関連のプロパティーを設定します。
関連プロパティーについては、「JDBC ベースの持続」で説明し、表 14–6 に示しています。特に、ブローカの imq.persist.store プロパティーを jdbc に設定する必要があります (「持続のプロパティー」を参照)。
次の場所の JDBC ドライバの .jarファイルにコピーまたはシンボリックリンクを配置します。
Solaris の場合:
/usr/share/lib/imq/ext/ |
Linux の場合:
/opt/sun/mq/share/lib/ |
Windows の場合:
IMQ_VARHOME\\lib\\ext |
たとえば、Solaris システムで PointBase を使用している場合、次のコマンドでドライバの .jar ファイルを適切な場所にコピーします。
% cp j2eeSDKInstallDirectory/pointbase/lib/pointbase.jar /usr/share/lib/imq/ext |
次のコマンドはシンボリックリンクを作成します。
% ln -s j2eeSDKID/lib/pointbase/pointbase.jar /usr/share/lib/imq/ext |
Message Queue の持続に必要なデータベーススキーマを作成します。
組み込みデータベース用の imqdbmgr create all コマンドまたは外部データベース用の imqdbmgr create tbl コマンドを使用します。「データベースマネージャーユーティリティー」を参照してください。
imqdbmgr がある場所にディレクトリを変更します。
Solaris の場合:
cd /usr/bin |
Linux の場合:
cd /opt/sun/mq/bin |
Windows の場合:
cd IMQ_HOME\\bin |
imqdbmgr コマンドを入力します。
imqdbmgr create all
組み込みデータベースを使用している場合、次のディレクトリ内に作成するのが最適です。
… /instances/ instanceName/dbstore/ databaseName
組み込みデータベースは、ユーザー名とパスワードで保護されていない場合、ファイルシステムのアクセス権によって保護される可能性があります。ブローカが確実にデータベースに対して読み取りと書き込みを実行できるようにするため、ブローカを実行するユーザーは、imqdbmgr コマンドを使用して組み込みデータベースを作成したユーザーと同一でなければなりません。
持続ストアにはほかの情報とともに、一時的に保存されるメッセージファイルを保存できます。これらのメッセージには専有情報が保持されている場合があるため、認可されていないアクセスからデータストアを保護することをお勧めします。この節では、ファイルベースまたは JDBC ベースのデータストアでデータを保護する方法を説明します。
ファイルベースの持続を使用するブローカは、プラットフォームにより場所が異なる単層型ファイルのデータストアに持続データを書き込みます (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。
…/instances/ instanceName/fs350/
instanceName には、ブローカインスタンスを識別する名前が入ります。
instanceName/fs350/ ディレクトリは、ブローカインスタンスがはじめて開始されたときに作成されます。このディレクトリを保護するための手順は、ブローカを実行しているオペレーティングシステムプラットフォームによって異なります。
Solaris および Linux の場合、ディレクトリのアクセス権は、ブローカインスタンスを開始したユーザーのファイルモード作成マスク (umask) によって決定されます。したがって、ブローカインスタンスの開始および持続ファイルの読み取りを行うためのアクセス権は、マスクを適切に設定することによって制限できることになります。あるいは、スーパーユーザーである管理者は、instances ディレクトリのアクセス権を 700 に設定することによって、持続データを保護できます。
Windows の場合、ディレクトリのアクセス権は、Windows オペレーティングシステムが提供するメカニズムを使って設定できます。この操作では、通常そのディレクトリの「プロパティー」ダイアログを開きます。
JDBC ベースの持続を使用するブローカは、JDBC 互換データベースに持続データを書き込みます。Oracle などのデータベースサーバーによって管理されるデータベースについては、Message Queue のデータベーステーブル (IMQ で始まる名前が付けられたテーブル) にアクセスするためのユーザー名とパスワードを作成することをお勧めします。データベースで個々のテーブルの保護ができない場合、Message Queue ブローカだけが使用する専用のデータベースを作成します。ユーザー名とパスワードのアクセス権を作成する方法については、データベースベンダーによって提供されているマニュアルを参照してください。
データベース接続を開くためにブローカが求めるユーザー名とパスワードは、ブローカ設定プロパティーとして与えることができます。ただし、imqbrokerd コマンドの -dbuser および -dbpassword オプションを使用して、ブローカの起動時にコマンド行オプションとして入力するほうがより安全です (「ブローカユーティリティー」を参照)。
データベースの JDBC ドライバを使用してブローカが直接アクセスする組み込みデータベースの場合、「ファイルベースのストアの保護」で説明したように、通常は持続データが格納されるディレクトリにファイルアクセス権を設定することでセキュリティーが確保されます。ただし、データベースをブローカとデータベースマネージャーユーティリティーの両方から読み取り可能および書き込み可能にするためには、いずれも同じユーザーにより実行される必要があります。