12.2. 配置一个 Consumer
12.2.1. HTTP Consumer 端点的机制
HTTP 使用者端点可指定多个 HTTP 连接属性,包括端点是否自动接受重定向响应,端点是否可以使用块,无论端点是否会请求一个 keep-alive,以及端点如何与代理交互。除了 HTTP 连接属性外,HTTP 消费者端点还可指定它的安全性。
消费者端点可使用两种机制配置:
12.2.2. 使用配置
命名空间
用于配置 HTTP 消费者端点的元素在命名空间 http://cxf.apache.org/transports/http/configuration 中定义。通常会使用前缀 http-conf
来引用。要使用 HTTP 配置元素,您必须将 例 12.4 “HTTP Consumer 配置命名空间” 中显示的行添加到端点配置文件的 Bean
元素中。另外,您必须将配置元素的命名空间添加到 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
元素采用单个属性 name
,用于指定与端点对应的 WSDL 端口
元素。name
属性的值为 portQName'.http-conduit'。例 12.5 “http-conf:conduit
Element” 显示 http-conf:conduit
元素,用于在端点的目标命名空间中为端点添加由 WSDL 片段 < ;port binding="widgetSOAPBinding" name="widgetSOAPPort
> 指定的端点配置。
例 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 消费者端点的元素” 中描述的它们。
元素 | 描述 |
---|---|
| 指定 HTTP 连接属性,如超时、keep-alive 请求、内容类型等。请参阅 “client 元素”一节。 |
指定配置端点使用的基本身份验证方法的参数。首选方法是提供 | |
指定用于针对传出 HTTP 代理服务器配置基本身份验证的参数。 | |
指定用于配置 SSL/TLS 的参数。 | |
指定提供端点使用的基本身份验证信息的 bean 参考或类名称,可以是预先选择或响应 401 HTTP 质询。 | |
指定检查 HTTP(S) |
client 元素
http-conf:client
元素用于配置消费者端点的 HTTP 连接的非安全性属性。其属性(如 表 12.2 “HTTP 消费者配置属性” 所述)指定连接的属性。
属性 | 描述 |
---|---|
指定在超时前,使用者尝试建立连接的时间(以毫秒为单位)。默认值为
| |
指定使用者在超时前等待响应时间,以毫秒为单位。默认值为
| |
指定消费者是否自动遵循发布的服务器重定向。默认值为 | |
指定消费者重新传输请求以满足重定向的最大次数。默认值为 | |
指定使用者是否使用块发送请求。默认为 如果以下任意一个为 true,则无法使用块:
在这两种情况下, | |
指定消费者准备好处理的介质类型。该值用作 HTTP | |
指定接收响应的目的(例如,美国英语)。该值用作 HTTP 语言标签由国际机构用于标准(ISO)监管,通常通过组合语言代码(由 ISO-639 标准和国家代码确定),由 ISO-3166 标准决定,由连字符分隔。例如,en-US 代表美国英语。 | |
指定消费者准备处理的内容编码。内容编码标签由互联网编号授权机构(IANA)监管。该值用作 HTTP | |
指定在邮件正文中发送的数据类型。使用多用途互联网邮件扩展(MIME)类型来指定介质类型。该值用作 HTTP
对于 Web 服务,应将其设置为 | |
指定正在调用请求的资源的互联网主机和端口号。该值用作 HTTP 通常不需要此属性。只有某些 DNS 场景或应用程序设计才需要它。例如,它指示客户端为集群的首选主机(即,用于虚拟服务器映射到同一互联网协议(IP)地址)。 | |
指定在每个请求/响应对话框后是否保持打开或关闭特定连接。有两个有效的值:
| |
指定由涉及的链中必须遵循的行为的指令,增加从消费者到服务提供商的请求。请参阅 第 12.2.4 节 “消费者缓存控制指令”。 | |
指定要随所有请求发送的静态 Cookie。 | |
指定请求源自的浏览器的信息。在来自 World Wide Web Consortium(W3C)的 HTTP 规格中,也称为 user-agent。某些服务器根据发送请求的客户端进行优化。 | |
指定指示消费者在特定服务上发出请求的资源的 URL。该值用作 HTTP 推荐 当一个请求是浏览器用户的结果时,可通过单击超链接而不是输入 URL 时使用此 HTTP 属性。这可允许服务器根据以前的任务流优化处理,并生成到资源的链接列表,以进行日志记录、优化缓存、过期或错误输入的链接等。但是,它通常用于 Web 服务应用程序。
如果 | |
指定通过单独的 provider→consumer 连接接收响应的分离端点的 URL。有关使用分离端点的详情请参考 第 12.6 节 “在拒绝模式中使用 HTTP 传输”。 您必须配置消费者端点,以便使用 WS-Addressing 进行分离端点。 | |
指定路由请求的代理服务器的 URL。 | |
指定路由请求的代理服务器的端口号。 | |
指定用于路由请求的代理服务器的类型。有效值为:
|
示例
例 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
命名空间
用于配置 HTTP 消费者端点的 WSDL 扩展元素在命名空间 http://cxf.apache.org/transports/http/configuration 中定义。通常会使用前缀 http-conf
来引用。要使用 HTTP 配置元素,您必须将 例 12.7 “HTTP Consumer WSDL Element 的命名空间” 中显示的行添加到端点的 WSDL 文档 的定义
元素中。
例 12.7. HTTP Consumer WSDL Element 的命名空间
<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 端口
元素的子项。它具有与配置文件中使用 的客户端
元素相同的属性。属性在 表 12.2 “HTTP 消费者配置属性” 中描述。
示例
例 12.8 “WSDL 以配置 HTTP 消费者端点” 显示配置 HTTP 消费者端点的 WSDL 片段,以指定它没有与缓存交互。
例 12.8. WSDL 以配置 HTTP 消费者端点
<service ... > <port ... > <soap:address ... /> <http-conf:client CacheControl="no-cache" /> </port> </service>
12.2.4. 消费者缓存控制指令
表 12.3 “HTTP-conf:客户端
缓存控制指令” 列出 HTTP 消费者支持的缓存控制指令。
指令 | 行为 |
---|---|
no-cache | 缓存无法使用特定的响应来满足后续的请求,而无需首先重新使用服务器重新显示该响应。如果使用此值指定特定的响应标头字段,则限制只适用于响应中的那些标头字段。如果没有指定响应标头字段,则限制将应用到整个响应。 |
no-store | 缓存不得存储响应的任意部分或调用它的请求的任何部分。 |
max-age | 消费者可以接受其年龄不超过指定时间(以秒为单位)。 |
max-stale | 使用者可接受超过其过期时间的响应。如果一个值被分配给 max-stale,它代表响应的过期时间以外的秒数,则用户仍然可以接受该响应。如果没有分配值,消费者可以接受任何年龄的过时的响应。 |
min-fresh | 消费者希望对仍有至少指定的秒数而全新的响应。 |
no-transform | 缓存不得修改提供程序和消费者之间的媒体类型或内容位置。 |
only-if-cached | 缓存应只返回当前存储在缓存中的响应,而不是需要重新加载或重新验证的响应。 |
cache-extension | 为其他缓存指令指定额外的扩展。扩展可以是信息或行为。在标准指令的上下文中指定扩展指令,以便应用程序不了解扩展指令可遵循标准指令强制的行为。 |