Web Service 寻址:防火墙和中间节点

通过在本产品中使用 Web Service 寻址 (WS-Addressing) 支持,您可以创建端点引用,这些端点引用透过防火墙和中间节点分发。

使用 WS-Addressing 支持,您可以自动生成端点引用(它表示生成引用的节点上的端点)。 根据为端点配置的 URL 以及主导该端点所在服务器的任何有效代理配置,这些端点引用包含相应的地址信息。 从客户机发出的、以端点引用作为目标的消息将通过一个或多个相应的中间节点路由至端点,如下列拓扑方案中所述。

如果您使用 IBM 专属 API 来创建端点接口,那么系统的拓扑也会影响 WS-Addressing 编程模型生成的端点引用类型。 例如,如果使用 EndpointReferenceManager.createEndpointReference(QName serviceName, String endpointName) 方法在集群环境中创建端点引用,那么按照下面各部分中的相应拓扑,缺省情况下该端点引用将表示创建该端点所在的集群中工作负载管理的端点。 因此,此行为将会增强应用程序的性能。
注意: 如果请求的应用组件在事务中或 HTTP 会话中运行,亲和性约束可能适用于端点的工作负载管理。

[AIX Solaris HP-UX Linux Windows][IBM i]您还可以使用 IBM 专有 API 来创建端点引用,该端点引用表示不应该由工作负载管理的服务,例如,因为它会维护内存中的状态。 使用有状态会话 Bean 的服务就是依赖于特定服务器实例的路由亲缘关系的服务示例。 要创建对此类服务的端点引用,使用 EndpointReferenceManager.createEndpointReference(QName serviceName, String endpointName, java.rmi.Remote statefulSessionBean) 方法。

[AIX Solaris HP-UX Linux Windows][IBM i]如果对有状态会话 Bean 启用高可用性,并使用此方法创建端点引用,那么即使有状态会话 Bean 发生故障转移,端点引用仍有效,前提是请求源自版本为 6.1 或更高版本的 WebSphere® Application Server 客户机。 或者由 Proxy Server for IBM® WebSphere Application Server 在同一管理单元中路由,如以下拓扑方案中所述。

对于引用不访问位于特定服务器中的有状态信息的服务端点引用,以下所有拓扑方案都适用。

直接连接

将此拓扑用于非集群配置。

在此拓扑中,没有中间节点。 客户机直接与主导目标端点所在的服务器进行通信。 在此拓扑中,WS-Addressing API 根据为 Web Service 模块配置的 URL 自动生成适当的端点引用地址。 下图说明了此方案。
Web Service 客户机将消息直接发送到托管目标端点的 WebSphere Application Server 。
当使用 IBM 专有 API 创建的端点引用对工作负载管理的集群中部署的服务进行引用时,您也可以使用此拓扑。 但是,仅当以端点引用为目标的客户机是与端点存在于同一管理单元中的 WebSphere Application Server 客户机 (版本为 6.1 或更高版本) 时,以端点引用为目标的消息才是工作负载管理的消息,如下图所示。
WebSphere Application Server 客户机使用其工作负载管理和高可用性路由逻辑将消息路由到 WebSphere Application Server 集群上托管的目标端点。 客户机和服务器存在于同一管理单元中。

使用标准 JAX-WS API 创建的端点引用不是工作负载管理的端点引用。

IBM WebSphere Application Server的代理服务器

当端点引用引用以下服务时使用此拓扑:在工作负载管理的集群中部署的服务、(可选)访问位于特定服务器中的有状态信息的服务和(可选)在高可用配置中可故障转移的服务。

在这种拓扑结构中,WS-Addressing API 会根据 URL Proxy Server for IBM 的前缀自动生成适当的端点引用地址。 WebSphere Application Server 的代理服务器的前缀,自动生成适当的端点引用地址。 必须提供 HTTP 端点 URL 信息,即为每个应用程序的每次部署配置 HTTP URL 前缀。 客户机可存在于包含代理服务器和目标服务器的管理单元外部。 客户机与代理服务器通信,而代理服务器将客户机请求动态路由至集群中的相应服务器。
Web Service 客户机通过防火墙将消息发送到 Proxy Server for IBM WebSphere Application Server。 然后,代理服务器使用其工作负载管理和高可用性路由逻辑将消息路由至集群中的服务器上的端点。 代理服务器和目标服务器存在于同一管理单元中。
[AIX Solaris HP-UX Linux Windows][IBM i]如果端点引用所寻址的代理是存在于与端点相同的管理单元中的 6.1 或更高版本的 Proxy Server for IBM WebSphere Application Server,那么基于集群,以工作负载管理的端点引用为目标的消息是工作负载管理的。 对于使用 IBM 专有 API 创建的端点引用,还会表现出以下行为:
  • 如果此端点引用表示有状态会话 bean,以端点引用为对象的请求将亲缘关系保留到该服务器和该有状态会话 Bean 的实例。
  • 如果该端点引用表示有状态会话 Bean 的高可用性,那么即使对该有状态会话 Bean 故障转移到另一台服务器,该端点引用依然有效。
使用标准 JAX-WS API 创建的端点引用不具有服务器亲缘关系或高可用性。

[z/OS]如果端点引用所寻址的代理是 IBM WebSphere Application ServerV 6.1 或更高版本的代理服务器,并且该代理存在于与该端点相同的管理单元中,那么基于集群,以工作负载管理的端点引用为目标的消息是工作负载管理的。

HTTP 服务器,如 IBM HTTP Server

当端点引用引用以下服务使用此拓扑:在工作负载管理的集群中部署的服务以及不访问位于特定服务器中的任何有状态信息的服务。

在此拓扑中,IBM WS-Addressing API 根据为目标 Web Service 模块配置的 HTTP 服务器的 URL 前缀自动生成适当的端点引用地址。 必须提供 HTTP 端点 URL 信息,即为每个应用程序的每次部署配置 HTTP URL 前缀。 客户机与 HTTP 服务器通信,而 HTTP 服务器根据 HTTP 服务器配置将客户机请求路由至特定服务器。
网络服务客户端通过防火墙与非军事区内的 HTTP 服务器通信。 HTTP 服务器的配置决定了信息在 WebSphere Application Server 中的发送位置。

[AIX Solaris HP-UX Linux Windows][IBM i]请勿在此拓扑中部署代表有状态会话 Bean 的端点引用,因为 HTTP 服务器不会保留与该有状态会话 Bean 的亲和性,并会将其请求分散到可用的服务器上。

[AIX Solaris HP-UX Linux Windows][IBM i]要保持有状态会话 bean 亲和性以及通过使用 IBM 专有 API 创建的端点引用的高可用性,请在 IBM 服务器之外使用 代理服务器。 WebSphere Application ServerHTTP 的代理服务器,如下拓扑所示。

HTTP 服务器与代理服务器的 IBM WebSphere Application Server

当端点引用引用以下服务时使用此拓扑:在工作负载管理的集群中部署的服务、(可选)访问位于特定服务器中的有状态信息的服务和(可选)在高可用配置中可故障转移的服务。 拓扑结构与 IBM 的代理服务器类似,但支持使用任何 服务器作为外部反向代理。 WebSphere Application Server 拓扑,但支持使用任何 HTTP 服务器作为外部反向代理。

在此拓扑中,WS-Addressing API 根据为目标 Web Service 模块配置的 HTTP 服务器的 URL 前缀自动生成适当的端点引用地址。 必须提供 HTTP 端点 URL 信息,即为每个应用程序的每次部署配置 HTTP URL 前缀。

客户端与 HTTP 服务器通信,通过将插件的请求路由到代理服务器,配置代理服务器将客户端请求转发到代理服务器 IBM。 WebSphere Application Server. 然后,该代理将请求动态传递至相应的服务器。
网络服务客户端通过防火墙与非军事区内的 HTTP 服务器通信。 HTTP 服务器将所有请求转发至 Proxy Server for IBM WebSphere Application
Server,后者动态地将那些请求路由至 WebSphere Application Server 集群中的正确服务器。 代理服务器和目标服务器存在于同一管理单元中。
[AIX Solaris HP-UX Linux Windows][IBM i]如果端点引用所寻址的代理是 Proxy Server for IBM WebSphere Application Server(版本为 6.1 或更高版本) ,并且存在于与端点相同的管理单元中,那么基于集群,以工作负载管理的端点引用为目标的消息是工作负载管理的消息。 对于使用 IBM 专有 API 创建的端点引用,还会表现出以下行为:
  • 如果此端点引用表示有状态会话 bean,以端点引用为对象的请求将亲缘关系保留到该服务器和该有状态会话 Bean 的实例。
  • 如果该端点引用表示有状态会话 Bean 的高可用性,那么即使对该有状态会话 Bean 故障转移到另一台服务器,该端点引用依然有效。
使用标准 JAX-WS API 创建的端点引用不具有服务器亲缘关系或高可用性。

[z/OS]如果端点引用所寻址的代理是 Proxy Server for IBM WebSphere Application ServerV 6.1 或更高版本,并且与端点存在于同一管理单元中,那么基于集群,以工作负载管理的端点引用为目标的消息是工作负载管理的消息。