例: Web サービス・トランザクションの仲介ノードとして IBM HTTP サーバーを構成する
HTTP サーバー仲介ノードを使用すれば、 Web Services アトミック・トランザクションおよび Web Services ビジネス・アクティビティー・プロトコル・メッセージの交換を、 ファイアウォールを越えて、また WebSphere® Application Server ドメイン外部で行うことができます。 IBM® HTTP サーバーの場合、 IBM HTTP サーバー・ノードの plugin-cfg.xml ファイルを変更することによって、 この動作を実現します。
WebSphere Application Server への要求のルーティング
IBM HTTP Server は、 単一の仲介ノードとして使用することも、 IBM WebSphere Application Server の Proxy Server と結合することもできます。 いずれの場合も、HTTP サーバーが、WebSphere Application Server をターゲットとする要求 (http://host:port/_IBMSYSAPP/* の形式のもの) を、 その HTTP サーバー自体で処理するのではなく、 WebSphere WebSphere Server への経路指定を行うよう指示して、 plugin-cfg.xml ファイルを更新してください。
plugin-cfg.xml ファイルを更新するには、 以下の例に示すように、_IBMSYSAPP という名前を持つ URI エレメントを追加します。 この URI を、plugin-cfg.xml ファイル内のすべての UriGroup エレメントに追加してください。
<UriGroup Name="default_host_server1_99T73NKNode01_Cluster_URIs">
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/snoop/*" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/hello" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/hitcount" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsp" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsv" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsw" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/j_security_check" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/ibm_security_logout" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/servlet/*" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/SamplesGallery/*" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/WSsamples/*" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/PlantsByWebSphere/*" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/PlantsByWebSphere/docs/*" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/_IBMSYSAPP/*" />
</UriGroup>
仮想ホスト・マッピングの構成
IBM HTTP を唯一の仲介ノードとして使用している場合 (つまり、 Proxy Server for IBM WebSphere Application Server を使用していない場合)、 HTTP ノードが要求の経路の指定先とした各 WebSphere Application Server を表すように、仮想ホストを構成してください。 VirtualHostGroup、VirtualHost、 および Route エレメントを追加して、 plugin-cfg.xml ファイルを更新します。
以下の例では、plugin-cfg.xml ファイルの一部を紹介しています。 このファイルは、WebSphere Application Server において、 IBM HTTP Server が、 server1 と server2 という 2 つのサーバーのうちの 1 つに、要求を経路指定するための構成に使用されます。
plugin-cfg.xml ファイルには、name1.acme.com と name2.acme.com という名前の、2 つの仮想ホストの別名が含まれています。 これらは、VirtualHost および VirtualHostGroup エレメントを使用して、定義されています。 Route エレメントは、 仮想ホストと ServerCluster エレメント間の関連を定義します。 要求が行われると、IBM HTTP Server は、要求のディスパッチに最適の経路を探します。 default_URIs URI グループのパターンと 一致する URI で、仮想ホスト name1.acme.com に対して 行われる要求は、server1_Cluster サーバー・クラスターに送信されます。 このサーバー・クラスターには、server1 という 1 つのサーバーしか含まれていないため、 仮想ホスト name1.acme.com をターゲットとする要求は、server1 に送信されます。 同様に、仮想ホスト name2.acme.com をターゲットとする要求は、server2 に送信されます。
<UriGroup Name="default_URIs">
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/snoop/*" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/hello" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/hitcount" />
...
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/PlantsByWebSphere/*" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/PlantsByWebSphere/docs/*" />
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/_IBMSYSAPP/*" />
</UriGroup>
<ServerCluster CloneSeparatorChange="false" LoadBalance="Round Robin" Name="server1_Cluster" PostBufferSize="0"
PostSizeLimit="-1" RemoveSpecialHeaders="true" RetryInterval="60">
<Server ConnectTimeout="0" ExtendedHandshake="false" MaxConnections="-1" Name="server1" ServerIOTimeout="0" WaitForContinue="false">
...
</Server>
<PrimaryServers> <Server Name="server1"/> </PrimaryServers>
</ServerCluster>
<ServerCluster CloneSeparatorChange="false" LoadBalance="Round Robin" Name="server2_Cluster" PostBufferSize="0" PostSizeLimit="-1"
RemoveSpecialHeaders="true" RetryInterval="60">
<Server ConnectTimeout="0" ExtendedHandshake="false" MaxConnections="-1" Name="server2" ServerIOTimeout="0" WaitForContinue="false">
...
</Server>
<PrimaryServers> <Server Name="server2"/> </PrimaryServers>
</ServerCluster>
<VirtualHostGroup Name="vhost_server1"> <VirtualHost Name="name1.acme.com:9081"/> </VirtualHostGroup>
<VirtualHostGroup Name="vhost_server2"> <VirtualHost Name="name2.acme.com:9081"/> </VirtualHostGroup>
<Route ServerCluster="server1_Cluster" UriGroup="default_URIs" VirtualHostGroup=" vhost_server1 "/>
<Route ServerCluster="server2_Cluster" UriGroup="default_URIs" VirtualHostGroup=" vhost_server2"/>