示例:将 IBM HTTP 服务器配置为 Web Service 事务的中间节点
可使用 HTTP Server 中间节点跨过防火墙以及在 WebSphere® Application Server 域外部交换 Web Service 原子事务和 Web Service 业务活动协议消息。对于 IBM® HTTP Server,可通过修改 IBM HTTP Server 节点的 plugin-cfg.xml 文件实现此行为。
将请求路由至 WebSphere Application Server
可将 IBM HTTP Server 用作单个中间节点,或者将其与 Proxy Server for IBM WebSphere Application Server 组合。在这两种情况下,请更新 plugin-cfg.xml 文件以指示 HTTP Server 应将目标为 WebSphere Application Server 的请求(格式为 http://host:port/_IBMSYSAPP/*)路由至 WebSphere Application Server,而不是由 HTTP Server 自行处理这些请求。
要更新 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 文件的一部分,其中 IBM HTTP Server 将请求路由至 WebSphere Application Server 内 server1 和 server2 这两个服务器的其中一个。
plugin-cfg.xml 文件包含两个虚拟主机别名,名称为 name1.acme.com 和 name2.acme.com,它们是使用 VirtualHost 和 VirtualHostGroup 元素定义的。Route元素定义虚拟主机与 ServerCluster 元素之间的关联。生成请求后,IBM HTTP Server 会查找用于分派请求的最佳匹配路径。对虚拟主机 name1.acme.com 以及与 default_URIs URI 组中模式相匹配的 URI 的请求被发送至 server1_Cluster 服务器集群。此服务器集群仅包含一个服务器 server1,所以目标为虚拟主机 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"/>