12.2. 配置一个 Consumer


12.2.1. HTTP 消费者端点的机制

HTTP 消费者端点可以指定多个 HTTP 连接属性,包括端点是否自动接受重定向响应,端点是否可以使用块,端点是否请求 keep-alive,以及端点如何与代理交互。除了 HTTP 连接属性外,HTTP 使用者端点还可以指定它如何进行保护。

可以使用两种机制配置消费者端点:

12.2.2. 使用配置

Namespace

用于配置 HTTP 消费者端点的元素在命名空间 http://cxf.apache.org/transports/http/configuration 中定义。它通常被引用使用前缀 http-conf。要使用 HTTP 配置元素,您必须将 例 12.4 “HTTP Consumer 配置命名空间” 中显示的行添加到端点配置文件的 beans 元素中。另外,您必须将配置元素的命名空间添加到 xsi:schemaLocation 属性中。

例 12.4. HTTP Consumer 配置命名空间

<beans ...
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
       ...
       xsi:schemaLocation="...
                           http://cxf.apache.org/transports/http/configuration
                              http://cxf.apache.org/schemas/configuration/http-conf.xsd
                          ...">

Undertow 运行时或 Netty 运行时

您可以使用 http-conf 命名空间中的元素来配置 Undertow 运行时或 Netty 运行时。

conduit 元素

您可以使用 http-conf:conduit 元素及其子项配置 HTTP 使用者端点。http-conf:conduit 元素采用单个属性,名称,用于指定与端点对应的 WSDL 端口 元素。name 属性的值采用 portQName'.http-conduit' 形式。例 12.5 “http-conf:conduit Element” 显示 http-conf:conduit 元素,用于为由 WSDL 片段 < port binding="widgetSOAPBinding" name="widgetSOAPPort > 指定的端点添加配置(当端点目标命名空间为 http://widgets.widgetvendor.net 时)。

例 12.5. http-conf:conduit Element

...
  <http-conf:conduit name="{http://widgets/widgetvendor.net}widgetSOAPPort.http-conduit">
    ...
  </http-conf:conduit>
...

http-conf:conduit 元素具有指定配置信息的子元素。它们在 表 12.1 “用于配置 HTTP 消费者端点的元素” 中进行了描述。

表 12.1. 用于配置 HTTP 消费者端点的元素
元素描述

http-conf:client

指定 HTTP 连接属性,如超时、保留请求、内容类型等。请参阅 “client 元素”一节

http-conf:authorization

指定用于配置端点使用的基本验证方法的参数。首选的方法是提供 http-conf:basicAuthSupplier 对象。

http-conf:proxyAuthorization

指定用于针对传出 HTTP 代理服务器配置基本身份验证的参数。

http-conf:tlsClientParameters

指定用来配置 SSL/TLS 的参数。

http-conf:basicAuthSupplier

指定提供端点使用的基本身份验证信息的 bean 引用或类名称,可以是抢占,或响应 401 HTTP 质询。

http-conf:trustDecider

指定在传输任何信息前,检查 HTTP (S) URLConnection 对象的 bean 引用或类名称,以建立与 HTTPS 服务提供商的连接。

client 元素

http-conf:client 元素用于配置消费者端点的 HTTP 连接的非安全属性。其属性(如 表 12.2 “HTTP Consumer 配置属性” 所述)指定连接的属性。

表 12.2. HTTP Consumer 配置属性
属性描述

connectionTimeout

指定消费者在超时前尝试建立连接的时间(以毫秒为单位)。默认值为 30000

0 指定消费者将无限期地发送请求。

receiveTimeout

指定消费者在超时前等待响应的时间(以毫秒为单位)。默认值为 30000

0 指定消费者将无限期等待。

AutoRedirect

指定消费者是否自动遵循服务器发出的重定向。默认值为 false

MaxRetransmits

指定消费者重新传输请求以满足重定向的次数。默认值为 -1, 它指定允许无限重新传输。

allowChunking

指定消费者是否使用块发送请求。默认值为 true,指定消费者在发送请求时使用块。

如果以下之一为 true,则无法使用块:

  • http-conf:basicAuth 供应商 被配置为以抢占方式提供凭证。
  • AutoRedirect 设置为 true

在这两种情况下,都会忽略 AllowChunking 的值,并禁止块。

accept

指定消费者为处理准备的介质类型。该值用作 HTTP Accept 属性的值。该属性值使用多用途互联网邮件扩展(MIME)类型来指定。

AcceptLanguage

指定消费者选择接收响应的语言(例如,美国英语)。该值用作 HTTP AcceptLanguage 属性的值。

语言标签由 Standards (ISO)的国际组织规范,通常通过组合语言代码(由 ISO-639 标准和国家代码决定)决定,由 ISO-3166 标准,由连字符分开。例如,en-US 代表美国英语。

AcceptEncoding

指定消费者准备处理的内容编码。内容编码标签由互联网分配号授权机构(IANA)规范。该值用作 HTTP AcceptEncoding 属性的值。

ContentType

指定消息正文中发送的数据的介质类型。介质类型使用多用途互联网邮件扩展(MIME)类型来指定。该值用作 HTTP ContentType 属性的值。默认为 text/xml

对于 Web 服务,这应设置为 text/xml。如果客户端将 HTML 表单数据发送到 CGI 脚本,则应将其设置为 application/x-www-form-urlencoded。如果 HTTP POST 请求绑定到固定有效负载格式(与 SOAP 不同),则内容类型通常设置为 application/octet-stream

主机

指定正在调用请求的资源的互联网主机和端口号。该值用作 HTTP Host 属性的值。

通常不需要此属性。只有某些 DNS 场景或应用程序设计才需要它。例如,它指示客户端为集群优先选择的主机(即,虚拟服务器映射到同一互联网协议(IP)地址)。

连接

指定在每次请求/响应对话框后是否要保持特定的连接打开或关闭。有效值有两个:

  • keep-Alive(默认)- 指定消费者在初始请求/响应序列后需要保持连接打开。如果服务器遵循它,则连接会被保持打开,直到消费者关闭为止。
  • close - 指定在每个请求/响应序列后与服务器的连接关闭。

CacheControl

指定关于必须遵循链中涉及的缓存的行为指令,该指令由消费者到服务提供商的请求组成。请参阅 第 12.2.4 节 “消费者缓存控制指令”

cookie

指定要随所有请求发送的静态 Cookie。

BrowserType

指定请求源自的浏览器的信息。在 World Wide Web consortium (W3C)的 HTTP 规范中,这也称为 user-agent。有些服务器根据发送请求的客户端进行优化。

Referer

指定指示消费者在特定服务上发出请求的资源 URL。该值用作 HTTP Referer 属性的值。

当请求是浏览器用户点击超链接而不是键入 URL 时,会使用此 HTTP 属性。这允许服务器根据前面的任务流优化处理,并为日志、优化缓存、跟踪过时或输入的链接等目的生成到资源的后端列表。但是,它通常不在 Web 服务应用程序中使用。

如果 AutoRedirect 属性设为 true,并且请求被重定向,则在 Referer 属性中指定的任何值都会被覆盖。HTTP Referer 属性的值设置为重定向消费者的原始请求的服务的 URL。

DecoupledEndpoint

指定通过单独的 provider→consumer 连接接收响应的分离端点的 URL。有关使用分离端点的更多信息,请参阅 第 12.6 节 “以 Decoupled 模式使用 HTTP 传输”

您必须配置使用者端点和服务提供商端点,以使用 WS-Addressing 来使分离的端点正常工作。

ProxyServer

指定路由请求的代理服务器的 URL。

ProxyServerPort

指定路由请求的代理服务器的端口号。

ProxyServerType

指定用于路由请求的代理服务器的类型。有效值为:

  • HTTP(默认)
  • SOCKS

Example

例 12.6 “HTTP 消费者端点配置” 显示 HTTP 消费者端点的配置,该端点希望在请求之间保持与提供程序的连接,该端点将在每次调用后重新传输请求,且无法使用块流。

例 12.6. HTTP 消费者端点配置

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
       xsi:schemaLocation="http://cxf.apache.org/transports/http/configuration
                             http://cxf.apache.org/schemas/configuration/http-conf.xsd
                           http://www.springframework.org/schema/beans
                             http://www.springframework.org/schema/beans/spring-beans.xsd">

  <http-conf:conduit name="{http://apache.org/hello_world_soap_http}SoapPort.http-conduit">
    <http-conf:client Connection="Keep-Alive"
                      MaxRetransmits="1"
                      AllowChunking="false" />
  </http-conf:conduit>
</beans>

更多信息

有关 HTTP conduits 的详情,请参考 第 16 章 conduits

12.2.3. 使用 WSDL

Namespace

用于配置 HTTP 消费者端点的 WSDL 扩展元素在命名空间 http://cxf.apache.org/transports/http/configuration 中定义。它通常被引用使用前缀 http-conf。要使用 HTTP 配置元素,您必须将 例 12.7 “HTTP Consumer WSDL 元素的命名空间” 中显示的行添加到端点的 WSDL 文档中的 定义 元素中。

例 12.7. HTTP Consumer WSDL 元素的命名空间

<definitions ...
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"

Undertow 运行时或 Netty 运行时

您可以使用 http-conf 命名空间中的元素来配置 Undertow 运行时或 Netty 运行时。

client 元素

http-conf:client 元素用于在 WSDL 文档中指定 HTTP 使用者的连接属性。http-conf:client 元素是 WSDL 端口 元素的子级。它的属性与配置文件中使用的 client 元素相同。这些属性在 表 12.2 “HTTP Consumer 配置属性” 中进行了描述。

Example

例 12.8 “WSDL 配置 HTTP 消费者端点” 显示一个 WSDL 片段,它将配置 HTTP 使用者端点来指定它不与缓存交互。

例 12.8. WSDL 配置 HTTP 消费者端点

<service ... >
  <port ... >
    <soap:address ... />
    <http-conf:client CacheControl="no-cache" />
  </port>
</service>

12.2.4. 消费者缓存控制指令

表 12.3 “http-conf:client Cache Control Directives” 列出 HTTP 使用者支持的缓存控制指令。

表 12.3. http-conf:client Cache Control Directives
指令行为

no-cache

缓存不能在不首先重新评估该服务器的情况下,使用特定的响应来满足后续请求。如果使用这个值指定特定的响应标头字段,则限制仅适用于响应中的标头字段。如果没有指定响应标头字段,则限制适用于整个响应。

no-store

缓存不得存储响应的任何部分或调用它的请求的任何部分。

max-age

消费者可以接受其年龄不超过指定时间(以秒为单位)的响应。

max-stale

消费者可以接受超过其过期时间的响应。如果一个值被分配给 max-stale,它代表响应的过期时间超过秒数,消费者仍然可以接受该响应。如果没有分配值,则消费者可以接受任何年龄的过时的响应。

min-fresh

消费者希望获得至少指定秒数的最新响应。

no-transform

缓存不得修改内容在提供程序和消费者之间响应中的介质类型或位置。

only-if-cached

缓存应仅返回当前存储在缓存中的响应,而不返回需要重新加载或重新验证的响应。

cache-extension

指定其他缓存指令的额外扩展。扩展可以是信息或行为。在标准指令的上下文中指定扩展指令,以便不了解扩展指令的应用程序可以遵循 standard 指令强制的行为。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.