Sun Java SystemTM Message Queue データは、オペレーティングシステムのプラットフォームによって異なる場所に格納されます。以降の表に、次のプラットフォームでの各種の Message Queue データの場所を示します。
表の中の instanceName は、データが関連付けられているブローカインスタンスの名前を示します。
表 A–1 は、Solaris オペレーティングシステム上での Message Queue データの場所を示しています。Solaris でスタンドアロンバージョンの Sun Java System Application Server とともに Message Queue を使用している場合は、「Windows」 で説明するディレクトリ構造と同様になります。
表 A–1 Solaris プラットフォームでの Message Queue データの場所
データのカテゴリ |
場所 |
---|---|
/var/imq/instances/instanceName /props/config.properties |
|
/usr/share/lib/imq/props/broker/ |
|
/var/imq/instances/instanceName /fs350 または JDBC のアクセス可能なデータストア |
|
/var/imq/instances/instanceName /log/ |
|
任意のローカルディレクトリ、または LDAP サーバー |
|
/var/imq/instances/instanceName /etc/passwd または LDAP サーバー |
|
/var/imq/instances/instanceName /etc/accesscontrol.properties |
|
/var/imq/instances/instanceName /etc/ |
|
/etc/imq/passfile.sample |
|
セキュリティー: ブローカのキーストアファイルの場所 |
/etc/imq/ |
/usr/share/javadoc/imq/index.html |
|
/usr/demo/imq/ |
|
Java アーカイブ (.jar)、Web アーカイブ (.war)、およびリソースアダプタアーカイブ (.rar) の各ファイル |
/usr/share/lib/ |
表 A–2 は、Linux オペレーティングシステム上での Message Queue データの場所を示しています。
表 A–2 Linux プラットフォームでの Message Queue データの場所
データのカテゴリ |
場所 |
---|---|
/var/opt/sun/mq/instances/instanceName /props/config.properties |
|
/opt/sun/mq/private/share/lib/props/ |
|
/var/opt/sun/mq/instances/instanceName /fs350/ または JDBC のアクセス可能なデータストア |
|
/var/opt/sun/mq/instances/instanceName /log/ |
|
任意のローカルディレクトリ、または LDAP サーバー |
|
/var/opt/sun/mq/instances/instanceName /etc/passwd または LDAP サーバー |
|
/var/opt/sun/mq/instances/instanceName /etc/accesscontrol.properties |
|
/var/opt/sun/mq/instances/instanceName /etc/ |
|
/etc/opt/sun/mq/passfile.sample |
|
セキュリティー: ブローカのキーストアファイルの場所 |
/etc/opt/sun/mq/ |
/opt/sun/mq/javadoc/index.html |
|
/opt/sun/mq/examples/ |
|
Java アーカイブ (.jar)、Web アーカイブ (.war)、およびリソースアダプタアーカイブ (.rar) の各ファイル |
/opt/sun/mq/share/lib/ |
共有ライブラリ (.so) ファイル |
/opt/sun/mq/lib/ |
表 A–3 は、Windows オペレーティングシステム上での Message Queue データの場所を示しています。Solaris プラットフォームでも、Message Queue がスタンドアロンバージョンの Message Queue Application Server にバンドルされている場合は、この表が適用されます。スタンドアロンバージョンの Application Server は、Solaris と Sun Java Enterprise System にはバンドルされません。表 A–3 のパス名では、Windows の円記号 (\) を Solaris のスラッシュ (/) に変更してください。 IMQ_HOME および IMQ_VARHOME ディレクトリ変数の定義については、「ディレクトリ変数の表記規則」を参照してください。
表 A–3 Windows プラットフォームでの Message Queue データの場所
データのカテゴリ |
場所 |
---|---|
IMQ_VARHOME\instances\instanceName \props\config.properties |
|
IMQ_HOME\lib\props\broker\ |
|
IMQ_VARHOME\instances\instanceName \fs350\ または JDBC のアクセス可能なデータストア |
|
IMQ_VARHOME\instances\instanceName \log\ |
|
任意のローカルディレクトリ、または LDAP サーバー |
|
IMQ_VARHOME\instances\instanceName \etc\passwd または LDAP サーバー |
|
IMQ_VARHOME\instances\instanceName \etc\accesscontrol.properties |
|
IMQ_HOME\etc\ |
|
IMQ_HOME\etc\passfile.sample |
|
セキュリティー: ブローカのキーストアファイルの場所 |
IMQ_HOME\etc\ |
IMQ_HOME\javadoc\index.html |
|
IMQ_HOME\demo\ |
|
Java アーカイブ (.jar)、Web アーカイブ (.war)、およびリソースアダプタアーカイブ (.rar) の各ファイル |
IMQ_HOME\lib\ |
Sun Java SystemTM Message Queue では多くのインタフェースが使用されるので、管理者はタスクを自動化できます。この付録では、安定度によってインタフェースを分類します。インタフェースの安定度が高くなるほど、製品の今後のバージョンで変更される可能性が低くなります。
この付録に掲載されないインタフェースは非公開であり、お客様は使用できません。
付録 B 「Message QueueTM インタフェースの安定度」では、安定度分類方式について説明します。
表 B–1 インタフェースの安定度の分類方式
分類 |
説明 |
---|---|
非公開 |
ユーザーは直接使用しません。リリースによって変更される、あるいは削除される可能性があります。 |
発展中 |
ユーザーが使用します。メジャーリリース (3.0 や 4.0 など)、またはマイナーリリース (3.1 や 3.2 など) で、互換性のない変更が生じる可能性があります。変更は慎重に、かつ徐々に行われます。すべての変更について、互換性が保てるように十分な努力が払われますが、保証はされていません。 |
安定 |
ユーザーが使用します。互換性のない変更は、メジャーリリース (3.0 や 4.0 など) でしか生じません。 |
標準 |
ユーザーが使用します。これらのインタフェースは、形式標準によって定義され、標準組織によって制御されます。これらのインタフェースでは、互換性のない変更はめったにありません。 |
不安定 |
ユーザーが使用します。メジャーリリース (3.0 や 4.0 など)、またはマイナーリリース (3.1 や 3.2 など) で、互換性のない変更が生じる可能性があります。これらのインタフェースは、今後のリリースで、互換性のない方法でかなりの削除や変更が行われる可能性があることに注意してください。不安定なインタフェースでは、明示的な依存関係を作成しないでください。 |
付録 B 「Message QueueTM インタフェースの安定度」は、インタフェースとその分類の一覧です。
表 B–2 Message Queue インタフェースの安定度
インタフェース |
分類 |
---|---|
コマンド行インタフェース | |
imqbrokerd コマンド行インタフェース |
発展中 |
imqadmin コマンド行インタフェース |
不安定 |
imqcmd コマンド行インタフェース |
発展中 |
imqdbmgr コマンド行インタフェース |
不安定 |
imqkeytool コマンド行インタフェース |
発展中 |
imqobjmgr コマンド行インタフェース |
発展中 |
imqusermgr コマンド行インタフェース |
不安定 |
imqbrokerd、imqadmin、imqcmd、imqdbmgr、imqkeytool、imqobjmgr、imqusermgr からの出力 |
不安定 |
コマンド | |
imqobjmgr コマンドファイル |
発展中 |
imqbrokerd コマンド |
安定 |
imqadmin コマンド |
不安定 |
imqcmd コマンド |
安定 |
imqdbmgr コマンド |
不安定 |
imqkeytool コマンド |
安定 |
imqobjmgr コマンド |
安定 |
imqusermgr コマンド |
不安定 |
API | |
JMS API (javax.jms) |
標準 |
JAXM API (javax.xml) |
標準 |
C-API |
発展中 |
C-API 環境変数 |
不安定 |
メッセージベースの監視 API |
発展中 |
管理対象オブジェクト API (com.sun.messaging) |
発展中 |
.jar および .war ファイル |
|
imq.jar の格納場所および名前 |
安定 |
jms.jar の格納場所および名前 |
発展中 |
imqbroker.jar の格納場所および名前 |
非公開 |
imqutil.jar の格納場所および名前 |
非公開 |
imqadmin.jar の格納場所および名前 |
非公開 |
imqservlet.jar の格納場所および名前 |
発展中 |
imqhttp.war の格納場所および名前 |
発展中 |
imqhttps.war の格納場所および名前 |
発展中 |
imqjmsra.rar の格納場所および名前 |
発展中 |
imqxm.jar の格納場所および名前 |
発展中 |
jaxm-api.jar の格納場所および名前 |
発展中 |
saaj-api.jar の格納場所および名前 |
発展中 |
saaj-impl.jar の格納場所および名前 |
発展中 |
activation.jar の格納場所および名前 |
発展中 |
mail.jar の格納場所および名前 |
発展中 |
dom4j.jar の格納場所および名前 |
非公開 |
fscontext.jar の格納場所および名前 |
不安定 |
ファイル | |
ブローカログファイルの格納場所および内容形式 |
不安定 |
パスワードファイル |
不安定 |
accesscontrol.properties ファイル |
不安定 |
システム送信先 | |
mq.sys.dmq 送信先 |
安定 |
mq.metrics.* 送信先 |
発展中 |
設定プロパティー | |
Message Queue JMS リソースアダプタの設定プロパティー |
発展中 |
Message Queue JMS リソースアダプタの JavaBean と ActivationSpec の設定プロパティー |
発展中 |
メッセージのプロパティーと形式 | |
デッドメッセージキューのメッセージプロパティー、JMSXDeliveryCount |
標準 |
デッドメッセージキューのメッセージプロパティー、JMS_SUN_* |
発展中 |
Message Queue クライアントメッセージプロパティー : JMS_SUN_* |
発展中 |
メトリックスまたは監視メッセージの JMS メッセージ形式 |
発展中 |
その他 | |
Message Queue JMS リソースアダプタパッケージ、com.sun.messaging.jms.ra |
発展中 |
持続メッセージの保存の JDBC スキーマ |
発展中 |
Message QueueTM の Enterprise Edition では、Java クライアントが、TCP 接続を直接使用するのではなく、HTTP またはセキュリティー保護された HTTP (HTTPS) 転送を使用してブローカと通信するようにサポートされています。C クライアントでは、HTTP/HTTPS がサポートされません。
この付録では、このようなサポートを有効にするために使用されるアーキテクチャーについて説明し、クライアントが Message Queue メッセージングに HTTP ベースの接続を使用するために必要となる設定の手順を示します。この付録は、次の節から構成されています。
Message Queue メッセージングは、HTTP/HTTPS 接続で実行できます。HTTP/HTTPS 接続は、通常ファイアウォールの通過が許可されるため、ファイアウォールによってブローカからクライアントアプリケーションを分離できます。
図 C–1 に、HTTP/HTTPS サポートの提供に関連する主なコンポーネントを示します。
クライアント側では、HTTP または HTTPS トランスポートドライバが、Message Queue メッセージを HTTP 要求にカプセル化し、これらの要求が正しい手順で Web サーバーまたはアプリケーションサーバーに送信されるようにします。
クライアントは、必要に応じて、HTTP プロキシサーバーを使用してブローカと通信できます。プロキシのアドレスは、クライアントの起動時に、コマンド行オプションを使用して指定します。詳細は、「HTTP プロキシを使用する」を参照してください。
HTTP または HTTPS トンネルサーブレット (どちらも Message Queue にバンドルされている) が、Web サーバーまたはアプリケーションサーバーに読み込まれます。サーブレットは、ペイロードメッセージをクライアント HTTP 要求から取り出してから、ブローカに転送します。また HTTP/HTTPS トンネルサーブレットは、クライアントが作成した HTTP 要求に応じて、ブローカのメッセージをクライアントに返送します。1 つの HTTP/HTTPS トンネルサーブレットで複数のブローカにアクセスできます。
ブローカ側では、httpjms または httpsjms 接続サービスが、対応するトンネルサーブレットから送られてくるメッセージを開いて逆多重化します。
Web サーバーまたはアプリケーションサーバーに障害が生じ再起動された場合は、すべての接続が復元されるため、クライアントへの影響はありません。ブローカに障害が生じ再起動された場合は、例外がスローされ、クライアントはそれぞれの接続を再確立する必要があります。発生するのはまれですが、Web サーバーまたはアプリケーションサーバーとブローカの両方に障害が生じ、ブローカが再起動しなかった場合、Web サーバーまたはアプリケーションサーバーはクライアント接続を復元し、引き続きブローカ接続を待機しますが、クライアントには通知しません。この状況を避けるために、常に、ブローカを再起動してください。
図 C–1 からわかるとおり、HTTP と HTTPS サポートのアーキテクチャーは非常によく似ています。主な相違点は、HTTPS (httpsjms 接続サービス) の場合、トンネルサーブレットにクライアントアプリケーションとブローカの両方への安全な接続があることです。
ブローカへの安全な接続は、SSL に対応したトンネルサーブレット、つまり Message Queue の HTTPS トンネルサーブレットを通して提供されます。このトンネルサーブレットが、接続の要求時にブローカに自己署名付き証明書を渡します。ブローカは証明書を使用して、HTTPS トンネルサーブレットへの暗号化された接続を設定します。この接続が確立されると、クライアントアプリケーションと Web サーバーまたはアプリケーションサーバーは、クライアントアプリケーションとトンネルサーブレット間の安全な接続のネゴシエーションを行うことができます。
次に、HTTP サポートを有効化するのに必要な手順を説明します。
HTTP トンネルサーブレットを配備します。HTTP トンネルサーブレットは次の場所に配備できます。
ブローカの httpjms 接続サービスを設定し、ブローカを起動します。
HTTP 接続を設定します。
HTTP トンネルサーブレットは、Sun Java System Web Server または Sun Java System Application Server に、Web アーカイブ (.war) ファイルとして配備できます。
HTTP トンネルサーブレットを .war ファイルとして配備するときは、Web サーバーまたはアプリケーションサーバーで提供される配備メカニズムを使用します。HTTP トンネルサーブレットの .war ファイル (imqhttp.war ) は、.jar、 .war、および .rar ファイルを含むディレクトリに配備します。これはオペレーティングシステムによって異なります (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。
.war ファイルには、Web サーバーまたはアプリケーションサーバーがサーブレットを読み込んで実行するときに必要となる基本的な設定情報が示された配備記述子が含まれています。Web サーバーまたはアプリケーションサーバーによっては、サーブレットの URL のコンテキストルート部分を指定しなければならない場合もあります。
Web アーカイブファイルとして配備する
Sun Java System Web Server への配備については、「HTTP トンネルサーブレットを Sun Java System Web Server に配備する」を参照してください。
Sun Java System Application Server への配備については、「HTTP トンネルサーブレットを Message Queue Application Server に配備する」を参照してください。
ここでは、Message Queue Web Server への配備手順について説明します。Web ブラウザを使用してサーブレットの URL にアクセスすると、HTTP トンネルサーブレットが問題なく配備されたことが確認できます。ステータス情報も表示されます。
ブラウザベースの管理 GUI で、「Virtual Server Class」タブを選択してから、「Manage Classes」を選択します。
適切な仮想サーバークラス名 (defaultClass など) を選択して、「Manage」ボタンをクリックします。
「Manage Virtual Servers」を選択します。
適切な仮想サーバー名を選択し、「Manage」ボタンをクリックします。
「Web Applications」タブを選択します。
「Deploy Web Application」をクリックします。
「WAR File On」フィールドおよび「WAR File Path」フィールドで、imqhttp.war ファイルを指す適切な値を選択します。このファイルはオペレーティングシステムによって異なるディレクトリに格納されています (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。
「Application URI」フィールドにパスを入力します。
「Application URI」フィールドの値は、トンネルサーブレット URL の /contextRoot 部分です。
http://hostName :portNumber / contextRoot/tunnel
たとえば、contextRoot を imq に設定した場合、「Application URI」フィールドは次のようになります。
/imq
サーブレットを配備するインストールディレクトリのパス (通常は、Message Queue Web Server インストールルートの内の場所) を入力します。
「OK」をクリックします。
Web サーバーインスタンスを再起動します。
サーブレットは次のアドレスで利用可能となります。
http://hostName:portNumber/ contextRoot/tunnel |
クライアントはこの URL を使用することで、HTTP 接続を使ってメッセージサービスに接続できます。
必ずしもサーバーのアクセスログを無効にする必要はありませんが、無効にしたほうがより良いパフォーマンスを得ることができます。
この節では、HTTP トンネルサーブレットを Message Queue Application Server に .war ファイルとして配備し、Message Queue ブローカからの接続を受け付けるようにトンネルサーブレットを設定する方法について説明します。
2 段階の手順が必要です。
Application Server の配備ツールを使用して HTTP トンネルサーブレットを配備します。
アプリケーションサーバーインスタンスの server.policy ファイルを変更します。
Web ベースの管理 GUI で、次を選択します。
「App Server」>「Instances」>「server1」>「Applications」>「Web Applications」
「Deploy」ボタンをクリックします。
「File Path:」テキストフィールドに、HTTP トンネルサーブレットの .war ファイル (imqhttp.war) の場所を入力し、「OK」をクリックします。
imqhttp.war ファイルの場所は、オペレーティングシステムによって異なります (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。
「Context Root」テキストフィールドの値を設定し、「OK」をクリックします。
「Context Root 」フィールドの値は、トンネルサーブレット URL の /contextRoot 部分です。
http:// hostName :portNumber / contextRoot/tunnel
たとえば、「Context Root」フィールドは /imq に設定できます。
表示される確認画面で、トンネルサーブレットが正常に配備され、デフォルトで有効になっており、この場合は次の場所に格納されていることが確認されます。
/var/opt/SUNWappserver8/domains/domain1/server1/applications/ j2ee-modules/imqhttp_1 |
サーブレットは次の URL で利用可能となります。
http://hostName:portNumber/ contextRoot/tunnel |
クライアントはこの URL を使用することで、HTTP 接続を使ってメッセージサービスに接続できます。
Application Server は、セキュリティーポリシーが変更されていないかぎり、強制的にデフォルトのセキュリティーポリシーセットを適用し、HTTP トンネルサーブレットが Message Queue ブローカからの接続を受け入れるのを阻止します。
各アプリケーションサーバーインスタンスには、セキュリティーポリシーまたはルールを含むファイルがあります。たとえば、Solaris 上の server1 インスタンスのこのファイルは次の場所にあります。
/var/opt/SUNWappserver8/domains/domain1/server1/config/ server.policy
トンネルサーブレットに Message Queue ブローカからの接続を受け入れさせるように設定するには、このファイルにエントリを追加する必要があります。
server.policy ファイルを開きます。
次のエントリを追加します。
grant codeBase "file:/var/opt/SUNWappserver8/domains/domain1/server1/ applications/j2ee-modules/imqhttp_1/-” { permission java.net.SocketPermission "*", “connect,accept,resolve"; }; |
デフォルトでは、HTTP サポートはブローカに対してアクティブになっていないため、httpjms 接続サービスをアクティブにするようブローカを再設定する必要があります。再設定したあとは、「ブローカの起動」で説明されているようにブローカを起動できます。
ブローカのインスタンス設定ファイルを開きます。
インスタンス設定ファイルは、その設定ファイルが関連付けられているブローカインスタンスの名前 (instanceName) によって識別されるディレクトリに格納されています (see 付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。
…/instances/ instanceName /props/config.properties
httpjms の値を imq.service.activelist プロパティーに追加します。
imq.service.activelist=jms,admin,httpjms |
ブローカは、起動時に、Web サーバーまたはアプリケーションサーバーとそのホストマシン上で実行している HTTP トンネルサーブレットを探します。リモートトンネルサーブレットにアクセスするには、接続サービスの servletHost および servletPort プロパティーを設定し直します。
pullPeriod プロパティーを設定し直して、パフォーマンスを向上させることもできます。「手順 2: httpjms 接続サービスを設定する」では、httpjms 接続サービスの設定プロパティーについて説明します。
クライアントアプリケーションは、設定済みの接続ファクトリ管理対象オブジェクトを適切に使用して、ブローカへの HTTP 接続を確立する必要があります。この節では、HTTP 接続設定について説明します。
HTTP サポートを有効にするには、接続ファクトリの imqAddressList 属性を HTTP トンネルサーブレット URL に設定する必要があります。HTTP トンネルサーブレット URL の一般的な構文は次のとおりです。
http://hostName:portNumber /contextRoot/tunnel
hostName:portNumber は、HTTP トンネルサーブレットをホストする Web サーバーまたはアプリケーションサーバーの名前とポートです。contextRoot は、Web サーバーまたはアプリケーションサーバーにトンネルサーブレットを配備したときに設定したパスです。
接続ファクトリ属性の全般と imqAddressList 属性の詳細については、『Message Queue Developer's Guide for Java Clients』を参照してください。
接続ファクトリ属性の設定は、次のいずれかの方法で行います。
接続ファクトリ管理対象オブジェクトを作成する imqobjmgr コマンドで --o オプションを使用するか (「接続ファクトリの追加」を参照)、管理コンソール (imqadmin) を使用して接続ファクトリ管理対象オブジェクトを作成するときに属性を設定します。
クライアントを起動するコマンドで -D オプションを使用します (『Message Queue Developer's Guide for Java Clients』を参照)。
クライアントのプログラムで接続ファクトリを作成してから、API 呼び出しを使用して接続ファクトリの属性を設定します (『Message Queue Developer's Guide for Java Clients』を参照)。
複数のブローカを実行している場合、複数の Web サーバーまたはアプリケーションサーバーとサーブレットインスタンスを設定する必要はありません。現在実行中のブローカ間で、1 つの Web サーバーまたはアプリケーションサーバーと HTTP トンネルサーブレットのインスタンスを共有できます。複数のブローカインスタンスが 1 つのトンネルサーブレットを共有している場合は、次に示すとおり、imqAddressList 接続ファクトリ属性を設定する必要があります。
http://hostName:portNumber /contextRoot/tunnel?ServerName= bkrHostName:instanceName
bkrHostName はブローカインスタンスのホスト名で、instanceName はクライアントにアクセスさせる特定のブローカインスタンスの名前です。
bkrHostName と instanceName に正しい文字列を入力したことを確認するには、ブラウザからサーブレット URL にアクセスして、HTTP トンネルサーブレットの状態レポートを生成します。レポートでは、サーブレットがアクセスしているすべてのブローカが次のように一覧表示されます。
HTTP tunnel servlet ready. Servlet Start Time : Thu May 30 01:08:18 PDT 2005 Accepting TCP connections from brokers on port : 7675 Total available brokers = 2 Broker List : jpgserv:broker2 cochin:broker1 |
HTTP プロキシを使用して HTTP トンネルサーブレットにアクセスする場合、次の設定を行います。
http.proxyHost システムプロパティーをプロキシサーバーのホスト名に設定します。
http.proxyPort システムプロパティーをプロキシサーバーのポート番号に設定します。
クライアントアプリケーションを起動するコマンドに -D オプションを使用して、これらのプロパティーを設定できます。
以降の節では、HTTPS サポートを有効化する手順について説明します。この手順は、「HTTP サポートの有効化」の手順とほとんど同じですが、さらに SSL 証明書の生成とアクセスに必要となる手順も追加されています。
HTTPS トンネルサーブレットの自己署名付き証明書を生成します。
HTTP トンネルサーブレットの .war ファイルの配備記述子を次のように変更します。
HTTP トンネルサーブレットを配備します。HTTP トンネルサーブレットは次の場所に配備できます。
ブローカの httpsjms 接続サービスを設定し、ブローカを起動します。
HTTPS 接続を設定します。
それぞれの手順については、順次、詳しく説明します。
Message Queue の SSL サポートは、クライアントが既知の信頼されたサーバーと通信することを前提に、ネットワーク上のデータを保護することを目的としています。したがって、自己署名付きのサーバー証明書だけを使用して SSL が実装されます。httpsjms 接続サービスのアーキテクチャーでは、HTTPS トンネルサーブレットが、ブローカに対してもアプリケーションクライアントに対してもサーバーの役割をします。
keytool ユーティリティーを実行し、トンネルサーブレットの自己署名付き証明書を生成します。コマンドプロンプトで次のとおり入力します。
JRE_HOME/bin/keytool -servlet keyStoreLocation
ユーティリティーによって必要な情報が要求されます。UNIX システムでは、キーストアを作成するアクセス権を取得するためにスーパーユーザー (root) として keytool を実行する必要があります。
keytool は、まず、キーストアに対するパスワードの入力を要求します。次に一部の組織情報の入力、続いて確認を要求します。確認が取れると、鍵ペアを生成している間、このコマンドは停止します。その後、特定の鍵ペアをロックするためのパスワード (キーパスワード) の入力を要求してくるので、Return キーを押します。これで、キーパスワードに、キーストアと同じパスワードが設定されます。
指定したパスワードは覚えておいてください。あとでトンネルサーブレットがキーストアを開くことができるように、そのパスワードを入力する必要があります。
JDK keytool ユーティリティーは、自己署名付き証明書を生成し、keyStoreLocation 引数 で指定された Message Queue のキーストアファイル内に証明書を配置します。
HTTPS トンネルサーブレットは、キーストアを参照する必要があります。必ず、keyStoreLocation にある生成されたキーストアを、HTTPS トンネルサーブレットがアクセスできる場所に移動またはコピーしてください (「手順 3: HTTPS トンネルサーブレットを配備する」を参照)。
HTTP トンネルサーブレットの .war ファイルには、Web サーバーまたはアプリケーションサーバーがサーブレットを読み込んで実行するときに必要となる基本的な設定情報が示された配備記述子が含まれています。
imqhttps.war ファイルの配備記述子は、トンネルサーブレットが必要とするキーストアファイルが配置された場所を認識できません。そのため、imqhttps.war ファイルを配備する前に、トンネルサーブレットの配備記述子 (XML ファイル) を編集し、キーストアの場所とパスワードを指定する必要があります。
.war ファイルを一時ディレクトリにコピーします。
cp /usr/share/lib/imq/imqhttps.war /tmp (Solaris)
cp /opt/sun/mq/share/lib/imqhttps.war /tmp (Linux)
cp IMQ_HOME/lib/imqhttps.war /tmp (Windows)
一時ディレクトリを現在のディレクトリにします。
$ cd /tmp
.war ファイルの内容を抽出します。
$ jar xvf imqhttps.war
.war ファイルの配備記述子を一覧表示します。
$ ls -l WEB-INF/web.xml
web.xml ファイルを編集して、keystoreLocation と keystorePassword という引数に正しい値を設定します。必要に応じて serverPort と serverHost の引数も設定します。
.war ファイルの内容を設定し直します。
$ jar uvf imqhttps.war WEB-INF/web.xml
これで修正済みの imqhttps.war ファイルを使用して、HTTPS トンネルサーブレットを配備できるようになりました。キーストアパスワードの漏洩が心配な場合は、ファイルシステムアクセス権を使用して、imqhttps.war ファイルへのアクセスを制限できます。
HTTP トンネルサーブレットは、Sun Java System Web Server または Sun Java System Application Server に、Web アーカイブ (WAR) ファイルとして配備できます。
HTTPS トンネルサーブレットを .war ファイルとして配備するときは、Web サーバーまたはアプリケーションサーバーで提供される配備メカニズムを使用します。HTTPS トンネルサーブレットの .war ファイル (imqhttps.war ) は、オペレーティングシステムによって異なるディレクトリに格納されています (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。
Web サーバーで暗号化がアクティブであり、クライアントとブローカの間で終端間の安全な通信が有効であることを確認してください。
Sun Java System Web Server への配備については、「HTTPS トンネルサーブレットを Sun Java System Web Server に配備する」を参照してください。
Sun Java System Application Server への配備については、「HTTPS トンネルサーブレットを Message Queue Application Server に配備する」を参照してください。
この節では、HTTPS トンネルサーブレットを Message Queue Web Server に .war ファイルとして配備する方法について説明します。Web ブラウザを使用してサーブレットの URL にアクセスすると、HTTPS トンネルサーブレットが問題なく配備されたことが確認できます。ステータス情報も表示されます。
HTTPS トンネルサーブレットを配備する前に、JSSE .jar ファイルが Web サーバーのクラスパスに含まれていることを確認します。これを確実にするもっとも簡単な方法は、jsse.jar、jnet.jar、および jcert.jar を WebServer_TOPDIR/bin/https/jre/lib/ext にコピーすることです。
ブラウザベースの管理 GUI で、「Virtual Server Class」タブを選択します。「Manage Classes」をクリックします。
適切な仮想サーバークラス名 (defaultClass など) を選択して、「Manage」ボタンをクリックします。
「Manage Virtual Servers」を選択します。
適切な仮想サーバー名を選択し、「Manage」ボタンをクリックします。
「Web Applications」タブを選択します。
「Deploy Web Application」をクリックします。
「WAR File On」フィールドおよび「WAR File Path」フィールドで、修正済みの imqhttps.war ファイルを指す適切な値を選択します (「手順 2: HTTP トンネルサーブレットの .war ファイルの記述子ファイルを変更する」を参照)。)
「Application URI」フィールドにパスを入力します。
「Application URI」フィールドの値は、トンネルサーブレット URL の /contextRoot 部分です。
https://hostName :portNumber / contextRoot/tunnel
たとえば、contextRoot を imq に設定した場合、「Application URI」フィールドは次のようになります。
/imq
サーブレットを配備するインストールディレクトリのパス (通常は、Message Queue Web Server インストールルートの内の場所) を入力します。
「OK」をクリックします。
Web サーバーインスタンスを再起動します。
サーブレットは次の URL で利用可能となります。
https://hostName:portNumber/imq/tunnel |
クライアントはこの URL を使用することで、安全な HTTPS 接続を使ってメッセージサービスに接続できます。
必ずしもサーバーのアクセスログを無効にする必要はありませんが、無効にしたほうがより良いパフォーマンスを得ることができます。
この節では、HTTPS トンネルサーブレットを Message Queue Application Server に .war ファイルとして配備する方法について説明します。
2 段階の手順が必要です。
Application Server の配備ツールを使用して HTTPS トンネルサーブレットを配備します。
アプリケーションサーバーインスタンスの server.policy ファイルを変更します。
HTTPS トンネルサーブレットを Application Server 環境に配備する手順を次に示します。
Web ベースの管理 GUI で、次を選択します。
「App Server」>「Instances」>「server1」>「Applications」>「Web Applications」
「Deploy」ボタンをクリックします。
「File Path:」テキストフィールドに、HTTPS トンネルサーブレットの .war ファイル (imqhttps.war) の場所を入力し、「OK」をクリックします。
imqhttps.war ファイルの場所は、オペレーティングシステムによって異なります (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。
「Context Root」テキストフィールドの値を設定し、「OK」をクリックします。
「Context Root 」フィールドの値は、トンネルサーブレット URL の /contextRoot 部分です。
https://hostName :portNumber / contextRoot/tunnel
たとえば、「Context Root」フィールドは次のように設定できます。
/imq
次の画面で、トンネルサーブレットが正常に配備され、デフォルトで有効になっており、この場合は次の場所に格納されていることが表示されます。
/var/opt/SUNWappserver8/domains/domain1/server1/applications/ j2ee-modules/imqhttps_1 |
サーブレットは次の URL で利用可能となります。
https://hostName:portNumber/ contextRoot/tunnel |
クライアントはこの URL を使用することで、HTTPS 接続を使ってメッセージサービスに接続できます。
Application Server は、セキュリティーポリシーが変更されていないかぎり、強制的にデフォルトのセキュリティーポリシーセットを適用し、HTTPS トンネルサーブレットが Message Queue ブローカからの接続を受け入れるのを阻止します。
各アプリケーションサーバーインスタンスには、セキュリティーポリシーまたはルールを含むファイルがあります。たとえば、Solaris 上の server1 インスタンスのこのファイルは次の場所にあります。
/var/opt/SUNWappserver8/domains/domain1/server1/config/ server.policy
トンネルサーブレットに Message Queue ブローカからの接続を受け入れさせるには、このファイルにエントリを追加する必要があります。
server.policy ファイルを開きます。
次のエントリを追加します。
grant codeBase "file:/var/opt/SUNWappserver8/domains/domain1/server1/ applications/j2ee-modules/imqhttps_1/-” { permission java.net.SocketPermission "*", “connect,accept,resolve"; }; |
デフォルトでは、HTTPS サポートはブローカに対してアクティブになっていないため、httpsjms 接続サービスをアクティブにするようブローカを再設定する必要があります。再設定したあとは、「ブローカの起動」で説明されているようにブローカを起動できます。
ブローカのインスタンス設定ファイルを開きます。
インスタンス設定ファイルは、その設定ファイルが関連付けられているブローカインスタンスの名前 (instanceName) によって識別されるディレクトリに格納されています (see 付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。
…/instances/ instanceName /props/config.properties
httpsjms の値を imq.service.activelist プロパティーに追加します。
imq.service.activelist=jms,admin,httpsjms |
ブローカは、起動時に Web サーバーとそのホストマシン上で実行している HTTPS トンネルサーブレットを探します。リモートトンネルサーブレットにアクセスするには、接続サービスの servletHost および servletPort プロパティーを設定し直します。
pullPeriod プロパティーを設定し直して、パフォーマンスを向上させることもできます。「手順 4: httpsjms 接続サービスを設定する」では、httpsjms 接続サービスの設定プロパティーについて説明します。
クライアントアプリケーションは、適切に設定された接続ファクトリ管理対象オブジェクトを使用して、ブローカへの HTTPS 接続を確立する必要があります。
ただし、クライアントは Java Secure Socket Extension (JSSE) で提供される SSL ライブラリへもアクセスし、ルート証明書を持つ必要もあります。SSL ライブラリは、JDK 1.4 に付属しています。それ以前の JDK バージョンを使用している場合は、「JSSE を設定する」を参照してください。それ以外の場合は 「ルート証明書をインポートする」に進んでください。
これらの点を解決したあとで、HTTPS 接続の設定に進むことができます。
JSSE .jar ファイルを JRE_HOME/lib/ext ディレクトリにコピーします。
jsse.jar、jnet.jar、jcert.jar |
JSSE セキュリティープロバイダを静的に追加します。
security.provider.n=com.sun.net.ssl.internal.ssl.Provider |
これを JRE_HOME/lib/security/java.security ファイルに追加します。n は、セキュリティープロバイダパッケージに対して次に利用可能な優先順位です。
JDK 1.4 を使用していない場合は、-D オプションをクライアントアプリケーションを起動するコマンドに使用して、次の JSSE プロパティーを設定します。
java.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol |
Web サーバーの証明書に署名した認証局 (CA) のルート証明書が、デフォルトで信頼されるデータベースにない場合、または Web サーバーまたはアプリケーションサーバーの専用の証明書を使用している場合、信頼されるデータベースに証明書を追加する必要があります。これに該当する場合は、次の手順に従ってください。それ以外の場合 は、「接続ファクトリを設定する」に進んでください。
証明書が certFile に保存され、trustStoreFile がキーストアであると仮定して、次のコマンドを実行します。
JRE_HOME/bin/keytool -import -trustcacerts -alias aliasForCertificate -file certFile -keystore trustStoreFile
次の質問に YES と答えます。Trust this certificate?
クライアントアプリケーションを起動するコマンドに -D オプションを使用して、次の JSSE プロパティーを指定する必要もあります。
javax.net.ssl.trustStore=trustStoreFile javax.net.ssl.trustStorePassword=trustStorePasswd
HTTPS サポートを有効にするには、接続ファクトリの imqAddressList 属性を HTTPS トンネルサーブレット URL に設定する必要があります。HTTPS トンネルサーブレット URL の一般的な構文は次のとおりです。
https://hostName:portNumber /contextRoot/tunnel
hostName:portNumber は、HTTPS トンネルサーブレットをホストする Web サーバーの名前とポートです。contextRoot は、Web サーバーにトンネルサーブレットを配備したときに設定したパスです。
接続ファクトリ属性の全般と imqAddressList 属性の詳細については、『Message Queue Developer's Guide for Java Clients』を参照してください。
接続ファクトリ属性の設定は、次のいずれかの方法で行います。
接続ファクトリ管理対象オブジェクトを作成する imqobjmgr コマンドで --o オプションを使用するか (「接続ファクトリの追加」を参照)、管理コンソール (imqadmin) を使用して接続ファクトリ管理対象オブジェクトを作成するときに属性を設定します。
クライアントアプリケーションを起動するコマンドで -D オプションを使用します (『Message Queue Developer's Guide for Java Clients』を参照)。
クライアントアプリケーションのプログラムで接続ファクトリを作成してから、API 呼び出しを使用して接続ファクトリの属性を設定します (『Message Queue Developer's Guide for Java Clients』を参照)。
複数のブローカを実行している場合、複数の Web サーバーとサーブレットインスタンスを設定する必要はありません。現在実行中のブローカ間で、1 つの Web サーバーと HTTPS トンネルサーブレットのインスタンスを共有できます。複数のブローカインスタンスが 1 つのトンネルサーブレットを共有している場合は、次に示すとおり、imqAddressList 接続ファクトリ属性を設定する必要があります。
https://hostName:portNumber /contextRoot/tunnel?ServerName= bkrHostName:instanceName
bkrHostName はブローカインスタンスのホスト名で、instanceName はクライアントにアクセスさせる特定のブローカインスタンスの名前です。
bkrHostName と instanceName に正しい文字列を入力したことを確認するには、ブラウザからサーブレット URL にアクセスして、HTTPS トンネルサーブレットの状態レポートを生成します。レポートでは、サーブレットがアクセスしているすべてのブローカが次のように一覧表示されます。
HTTPS tunnel servlet ready. Servlet Start Time : Thu May 30 01:08:18 PDT 2002 Accepting secured connections from brokers on port : 7674 Total available brokers = 2 Broker List : jpgserv:broker2 cochin:broker1 |
HTTP プロキシを使用して HTTPS トンネルサーブレットにアクセスする場合、次の設定を行います。
http.proxyHost システムプロパティーをプロキシサーバーのホスト名に設定します。
http.proxyPort システムプロパティーをプロキシサーバーのポート番号に設定します。
クライアントアプリケーションを起動するコマンドに -D オプションを使用して、これらのプロパティーを設定できます。
この節では、HTTP や HTTPS 接続で発生する可能性がある問題、およびその問題の解決方法について説明します。
Web サーバーで障害が生じても再起動すれば、すべての接続が復元され、クライアントへの影響はありません。ただし、ブローカに障害が生じ再起動された場合は、例外がスローされ、クライアントはそれぞれの接続を再確立する必要があります。
Web サーバーとブローカの両方に障害が生じ、ブローカが再起動されない場合、Web サーバーはクライアント接続を復元し、ブローカ接続を待機しますが、クライアントには通知しません。この状況を避けるため、ブローカの再起動を必ず確認してください。
HTTPS クライアントがトンネルサーブレットでブローカに接続できない場合は、次のように操作します。
サーブレットとブローカを起動します。
ブラウザを使用し、HTTPS トンネルサーブレット URL でサーブレットに手動でアクセスします。
次の管理コマンドを使用し、接続の一時停止と再開を行います。
imqcmd pause svc -n httpsjms -u admin imqcmd resume svc -n httpsjms -u admin |
サービスが再開する場合、HTTPS クライアントはトンネルサーブレットでブローカに接続できます。
この付録では、よく使用するいくつかの Message QueueTM コマンドユーティリティー (imqcmd) のコマンドを示します。コマンド行から利用可能なコマンドオプションおよび属性の包括的なリストについては、「コマンドユーティリティー」を参照してください。
imqcmd subcommand argument [ options] imqcmd -h|H imqcmd -v
-H または -h は、包括的なヘルプを提供します。-v サブコマンドは、バージョン情報を提供します。
imqcmd を使用するときは、コマンドユーティリティーによってパスワードを要求されます。要求されないようにしてセキュリティーを高めるには、-passfile pathToPassfile オプションを使用して、管理者のユーザー名とパスワードが含まれるパスワードファイルを指定できます。
例: imqcmd query bkr -u adminUserName -passfile pathToPassfile -b myServer:7676
imqcmd query bkr imqcmd pause bkr imqcmd restart bkr imqcmd resume bkr imqcmd shutdown bkr -b myBroker:7676 imqcmd update bkr -o "imq.system.max_count=1000" imqcmd reload cls
「ブローカ設定プロパティー (-o オプション) 」に、よく使用するブローカ設定プロパティーの一覧を示します。ブローカ設定プロパティーとその説明の完全なリストについては、第 14 章「ブローカのプロパティーのリファレンス」を参照してください。
表 D–1 ブローカ設定プロパティー (-o オプション)
プロパティー |
メモ |
---|---|
imq.autocreate.queue | |
imq.autocreate.queue.maxNumActiveConsumers |
無制限の場合は -1 を指定します |
imq.autocreate.queue.maxNumBackupConsumers |
無制限の場合は -1 を指定します |
imq.autocreate.topic | |
imq.cluster.url | |
imq.destination.DMQ.truncateBody | |
imq.destination.logDeadMessages | |
imq.log.file.rolloverbytes |
無制限の場合は -1 を指定します |
imq.log.file.rolloversecs |
無制限の場合は -1 を指定します |
imq.log.level |
NONEERRORWARNINGINFO |
imq.message.max_size |
無制限の場合は -1 を指定します |
imq.portmapper.port | |
imq.system.max_count |
無制限の場合は -1 を指定します |
imq.system.max_size |
無制限の場合は -1 を指定します |
imqcmd list svc imqcmd query svc imqcmd update svc -n jms -o "minThreads=200" -o "maxThreads=400" -o "port=8995" imqcmd pause svc -n jms imqcmd resume svc -n jms imqcmd list cxn -svn jms imqcmd query cxn -n 1234567890
imqcmd list dur -d MyTopic imqcmd destroy dur -n myDurSub -c "clientID-111.222.333.444" imqcmd purge dur -n myDurSub -c "clientID-111.222.333.444"
imqcmd list txn imqcmd commit txn -n 1234567890 imqcmd query txn -n 1234567890 imqcmd rollback txn -n 1234567890
imqcmd create dst -n MyQueue -t q -o "maxNumMsgs=1000" -o "maxNumProducers=5" imqcmd update dst -n MyTopic -t t -o "limitBehavior=FLOW_CONTROL| REMOVE_OLDEST|REJECT_NEWEST|REMOVE_LOW_PRIORITY" imqcmd compact dst -n MyQueue -t q imqcmd purge dst -n MyQueue -t q imqcmd pause dst -n MyQueue -t q -pst PRODUCERS|CONSUMERS|ALL imqcmd resume dst -n MyQueue -t q imqcmd destroy dst -n MyQueue -t q imqcmd query dst -n MyQueue -t q imqcmd list dst -tmp
「送信先設定プロパティー (-o オプション) 」に、よく使用する送信先設定プロパティーの一覧を示します。送信先設定プロパティーとその説明の完全なリストについては、第 15 章「物理的送信先のプロパティーのリファレンス」を参照してください。
表 D–2 送信先設定プロパティー (-o オプション)
プロパティー |
メモ |
---|---|
consumerFlowLimit |
無制限の場合は -1 を指定します |
isLocalOnly (作成のみ) | |
limitBehavior |
FLOW_CONTROLREMOVE_OLDESTREJECT_NEWESTREMOVE_LOW_PRIORITY |
localDeliveryPreferred (キューのみ) | |
maxNumActiveConsumers (キューのみ) |
無制限の場合は -1 を指定します |
maxNumBackupConsumers (キューのみ) |
無制限の場合は -1 を指定します |
maxBytesPerMsg |
無制限の場合は -1 を指定します |
maxNumMsgs |
無制限の場合は -1 を指定します |
maxNumProducers |
無制限の場合は -1 を指定します |
maxTotalMsgBytes |
無制限の場合は -1 を指定します |
useDMQ |
imqcmd metrics bkr -m cxn|rts|ttl -int 5 -msp 20 imqcmd metrics svc -m cxn|rts|ttl imqcmd metrics dst -m con|dsk|rts|ttl