Sun Java System Message Queue 3.7 UR1 管理ガイド

HTTP サポートの有効化

次に、HTTP サポートを有効化するのに必要な手順を説明します。

ProcedureHTTP サポートを有効にする

  1. HTTP トンネルサーブレットを配備します。HTTP トンネルサーブレットは次の場所に配備できます。

    • Sun Java SystemTM Web Server

      • Sun Java System Application Server

  2. ブローカの httpjms 接続サービスを設定し、ブローカを起動します。

  3. HTTP 接続を設定します。

手順 1: 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 に配備する」を参照してください。

HTTP トンネルサーブレットを Sun Java System Web Server に配備する

ここでは、Message Queue Web Server への配備手順について説明します。Web ブラウザを使用してサーブレットの URL にアクセスすると、HTTP トンネルサーブレットが問題なく配備されたことが確認できます。ステータス情報も表示されます。

ProcedureHTTP トンネルサーブレットを .war ファイルとして配備する

  1. ブラウザベースの管理 GUI で、「Virtual Server Class」タブを選択してから、「Manage Classes」を選択します。

  2. 適切な仮想サーバークラス名 (defaultClass など) を選択して、「Manage」ボタンをクリックします。

  3. 「Manage Virtual Servers」を選択します。

  4. 適切な仮想サーバー名を選択し、「Manage」ボタンをクリックします。

  5. 「Web Applications」タブを選択します。

  6. 「Deploy Web Application」をクリックします。

  7. 「WAR File On」フィールドおよび「WAR File Path」フィールドで、imqhttp.war ファイルを指す適切な値を選択します。このファイルはオペレーティングシステムによって異なるディレクトリに格納されています (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。

  8. 「Application URI」フィールドにパスを入力します。

    「Application URI」フィールドの値は、トンネルサーブレット URL の /contextRoot 部分です。

    http://hostName :portNumber / contextRoot/tunnel

    たとえば、contextRootimq に設定した場合、「Application URI」フィールドは次のようになります。

    /imq

  9. サーブレットを配備するインストールディレクトリのパス (通常は、Message Queue Web Server インストールルートの内の場所) を入力します。

  10. 「OK」をクリックします。

  11. Web サーバーインスタンスを再起動します。

    サーブレットは次のアドレスで利用可能となります。


    http://hostName:portNumber/
    contextRoot/tunnel

    クライアントはこの URL を使用することで、HTTP 接続を使ってメッセージサービスに接続できます。

サーバーのアクセスログを無効にする

必ずしもサーバーのアクセスログを無効にする必要はありませんが、無効にしたほうがより良いパフォーマンスを得ることができます。

Procedureサーバーのアクセスログを無効にする

  1. 「Status」タブを選択します。

  2. 「Log Preferences Page」を選択します。

    Log クライアントアクセス制御を使用して、ロギングを無効にします。

HTTP トンネルサーブレットを Message Queue Application Server に配備する

この節では、HTTP トンネルサーブレットを Message Queue Application Server に .war ファイルとして配備し、Message Queue ブローカからの接続を受け付けるようにトンネルサーブレットを設定する方法について説明します。

2 段階の手順が必要です。

配備ツールを使用する

ProcedureHTTP トンネルサーブレットを Application Server 環境に配備する

  1. Web ベースの管理 GUI で、次を選択します。

    「App Server」>「Instances」>「server1」>「Applications」>「Web Applications」

  2. 「Deploy」ボタンをクリックします。

  3. 「File Path:」テキストフィールドに、HTTP トンネルサーブレットの .war ファイル (imqhttp.war) の場所を入力し、「OK」をクリックします。

    imqhttp.war ファイルの場所は、オペレーティングシステムによって異なります (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。

  4. 「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 接続を使ってメッセージサービスに接続できます。

server.policy ファイルを変更する

Application Server は、セキュリティーポリシーが変更されていないかぎり、強制的にデフォルトのセキュリティーポリシーセットを適用し、HTTP トンネルサーブレットが Message Queue ブローカからの接続を受け入れるのを阻止します。

各アプリケーションサーバーインスタンスには、セキュリティーポリシーまたはルールを含むファイルがあります。たとえば、Solaris 上の server1 インスタンスのこのファイルは次の場所にあります。

/var/opt/SUNWappserver8/domains/domain1/server1/config/
server.policy

トンネルサーブレットに Message Queue ブローカからの接続を受け入れさせるように設定するには、このファイルにエントリを追加する必要があります。

Procedureアプリケーションサーバーの server.policy ファイルを変更する

  1. server.policy ファイルを開きます。

  2. 次のエントリを追加します。


    grant codeBase
    "file:/var/opt/SUNWappserver8/domains/domain1/server1/
                    applications/j2ee-modules/imqhttp_1/-”
    {
            permission java.net.SocketPermission "*",
                    “connect,accept,resolve";
    };

手順 2: httpjms 接続サービスを設定する

デフォルトでは、HTTP サポートはブローカに対してアクティブになっていないため、httpjms 接続サービスをアクティブにするようブローカを再設定する必要があります。再設定したあとは、「ブローカの起動」で説明されているようにブローカを起動できます。

Procedurehttpjms 接続サービスをアクティブにする

  1. ブローカのインスタンス設定ファイルを開きます。

    インスタンス設定ファイルは、その設定ファイルが関連付けられているブローカインスタンスの名前 (instanceName) によって識別されるディレクトリに格納されています (see 付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。

    /instances/ instanceName /props/config.properties

  2. httpjms の値を imq.service.activelist プロパティーに追加します。


    imq.service.activelist=jms,admin,httpjms

    ブローカは、起動時に、Web サーバーまたはアプリケーションサーバーとそのホストマシン上で実行している HTTP トンネルサーブレットを探します。リモートトンネルサーブレットにアクセスするには、接続サービスの servletHost および servletPort プロパティーを設定し直します。

    pullPeriod プロパティーを設定し直して、パフォーマンスを向上させることもできます。「手順 2: httpjms 接続サービスを設定する」では、httpjms 接続サービスの設定プロパティーについて説明します。

    プロパティー 

    説明 

    imq.httpjms.http.servletHost

    必要に応じてこの値を変更し、HTTP トンネルサーブレットを実行するホストの名前 (ホスト名または IP アドレス) を指定します。リモートホストか、またはローカルホストの特定のホスト名のどちらかになります。デフォルト値: localhost

    imq.httpjms.http. servletPort

    この値を変更して、ブローカが HTTP トンネルサーブレットにアクセスするために使用するポート番号を指定します。Web サーバー上でデフォルトのポート番号が変更されている場合は、それに合わせてこのプロパティーを変更します。デフォルト値: 7675

    imq.httpjms.http. pullPeriod

    メッセージをブローカから取り出すために各クライアントランタイムが出す HTTP 要求の間隔を秒単位で指定します。このプロパティーはブローカで設定され、クライアントランタイムに伝達される点に注意してください。値がゼロまたは負の場合、クライアントは常に HTTP 要求の 1 つを保留にして、可能なかぎり迅速なメッセージの取り出しに備えます。クライアント数が多いと、この動作によって Web サーバーまたはアプリケーションサーバーのリソースが消耗し、サーバーの応答が遅くなる場合があります。そのような場合には、pullPeriod プロパティーを正の秒数に設定する必要があります。これにより、後続の取り出し要求が出される前の、クライアントの HTTP トランスポートドライバの待機時間が設定されます。値を正の数に設定すると、クライアントにより監視される応答時間を犠牲にして、Web サーバーまたはアプリケーションサーバーのリソースが維持されます。デフォルト値: -1

    imq.httpjms.http. connectionTimeout

    クライアントランタイムが例外をスローする前に HTTP トンネルサーブレットからの応答を待機する時間を秒単位で指定します。このプロパティーはブローカで設定され、クライアントランタイムに伝達される点に注意してください。このプロパティーは、ブローカが HTTP トンネルサーブレットと通信したあと、接続を解放するまでの時間も指定します。ブローカとトンネルサーブレットは、HTTP サーブレットへアクセス中のクライアントが異常終了したかどうかを確認する手段を持っていないため、この場合はタイムアウトが必須となります。デフォルト値: 60

手順 3: HTTP 接続を設定する

クライアントアプリケーションは、設定済みの接続ファクトリ管理対象オブジェクトを適切に使用して、ブローカへの 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』を参照してください。

接続ファクトリ属性の設定は、次のいずれかの方法で行います。

1 つのサーブレットを使用して複数のブローカにアクセスする

複数のブローカを実行している場合、複数の Web サーバーまたはアプリケーションサーバーとサーブレットインスタンスを設定する必要はありません。現在実行中のブローカ間で、1 つの Web サーバーまたはアプリケーションサーバーと HTTP トンネルサーブレットのインスタンスを共有できます。複数のブローカインスタンスが 1 つのトンネルサーブレットを共有している場合は、次に示すとおり、imqAddressList 接続ファクトリ属性を設定する必要があります。

http://hostName:portNumber

/contextRoot/tunnel?ServerName=
bkrHostName:instanceName

bkrHostName はブローカインスタンスのホスト名で、instanceName はクライアントにアクセスさせる特定のブローカインスタンスの名前です。

bkrHostNameinstanceName に正しい文字列を入力したことを確認するには、ブラウザからサーブレット 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 トンネルサーブレットにアクセスする場合、次の設定を行います。

クライアントアプリケーションを起動するコマンドに -D オプションを使用して、これらのプロパティーを設定できます。