12.3. 配置服务提供商
12.3.1. HTTP 服务提供商的机制
HTTP 服务提供商端点可以指定很多 HTTP 连接属性,包括它是否遵守实时请求、它与缓存交互的方式,以及它如何与消费者通信的错误。
服务供应商端点可以使用以下两种机制进行配置:
12.3.2. 使用配置
命名空间
用于配置 HTTP 提供程序端点的元素在命名空间 http://cxf.apache.org/transports/http/configuration 中定义。通常会使用前缀 http-conf
来引用。要使用 HTTP 配置元素,您必须将 例 12.9 “HTTP Provider 配置命名空间” 中显示的行添加到端点配置文件的 Bean
元素中。另外,您必须将配置元素的命名空间添加到 xsi:schemaLocation
属性中。
例 12.9. HTTP Provider 配置命名空间
<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 运行时。
destination 元素
您可以使用 http-conf:destination
元素及其子项来配置 HTTP 服务提供商端点。http-conf:destination
元素使用单个属性 name
,用于指定与端点对应的 WSDL 端口
元素。name
属性的值格式为 portQName'.http-destination'。例 12.10 “http-conf:destination
Element” 显示 http-conf:destination
元素,用于在端点中添加由 WSDL 片段 < port binding="widgetSOAPBinding" name="widgetSOAPPort
> 指定的端点配置。
例 12.10. http-conf:destination
Element
... <http-conf:destination name="{http://widgets/widgetvendor.net}widgetSOAPPort.http-destination"> ... </http-conf:destination> ...
http-conf:destination
元素具有多个指定配置信息的子元素。它们在 表 12.4 “用于配置 HTTP 服务提供商端点的元素” 中进行了说明。
element | 描述 |
---|---|
指定 HTTP 连接属性。请参阅 “server 元素”一节。 | |
指定配置上下文匹配策略以处理 HTTP 请求的参数。 | |
指定此目的地处理的 HTTP 请求的参数顺序是否已解决。 |
server 元素
http-conf:server
元素用于配置服务提供商端点的 HTTP 连接的属性。其属性(如 表 12.5 “HTTP 服务提供商配置属性” 所述)指定连接的属性。
属性 | 描述 |
---|---|
设定在连接超时前尝试接收请求的时间长度(以毫秒为单位)。默认值为
| |
指定在收到请求时遇到错误时是否会出现异常。默认值为 | |
指定在向消费者发送响应时遇到错误时要抛出异常。默认值为 | |
指定在发送响应后,服务提供商是否遵循要保持打开的连接的请求。默认值为 | |
如果客户端请求中指定的 URL 不再适合于请求资源,则指定客户端请求的 URL 应该重定向到该 URL。在这种情况下,如果服务器响应的第一行中没有自动设置状态代码,则状态代码被设置为 302,状态描述设置为 Object Moved。该值用作 HTTP RedirectURL 属性的值。 | |
指定有关通过链中涉及缓存的缓存遵守行为的指令,将来自服务提供商的响应组成到消费者。请参阅 第 12.3.4 节 “服务提供商缓存控制指令”。 | |
设置响应中发送的资源的 URL。 | |
指定响应中发送的信息的介质类型。介质类型使用多用途的互联网邮件扩展(MIME)类型来指定。该值用作 HTTP ContentType 位置的值。 | |
指定任何已应用于服务提供商发送的信息的额外内容编码。内容编码标签由互联网编号授权机构(IANA)规定。可能的内容编码值包括 zip、gzip、压缩、deflate 和 identity。这个值被用作 HTTP ContentEncoding 属性的值。 内容编码的主要用途是允许使用一些编码机制(如 zip 或 gzip)来压缩文档。Apache CXF 对内容编码没有验证。用户负责确保在应用程序级别支持指定的内容编码。 | |
指定发送响应的服务器类型。值采用 |
示例
例 12.11 “HTTP 服务提供商端点配置” 显示 HTTP 服务供应商端点的配置,该端点遵循可持续的请求,并阻止所有通信错误。
例 12.11. 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:destination name="{http://apache.org/hello_world_soap_http}SoapPort.http-destination"> <http-conf:server SuppressClientSendErrors="true" SuppressClientReceiveErrors="true" HonorKeepAlive="true" /> </http-conf:destination> </beans>
12.3.3. 使用 WSDL
命名空间
用于配置 HTTP 提供程序端点的 WSDL 扩展元素在命名空间 http://cxf.apache.org/transports/http/configuration 中定义。通常会使用前缀 http-conf
来引用。要使用 HTTP 配置元素,您必须将 例 12.12 “HTTP Provider WSDL 元素的命名空间” 中显示的行添加到端点 WSDL 文档中的 定义
元素中。
例 12.12. HTTP Provider WSDL 元素的命名空间
<definitions ... xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
Undertow 运行时或 Netty 运行时
您可以使用 http-conf
命名空间中的元素来配置 Undertow 运行时或 Netty 运行时。
server 元素
http-conf:server
元素用于指定 WSDL 文档中的 HTTP 服务提供商的连接属性。http-conf:server
元素是 WSDL 端口
元素的子级。它具有与配置文件中使用的 server
元素相同的属性。属性在 表 12.5 “HTTP 服务提供商配置属性” 中描述。
示例
例 12.13 “WSDL 配置 HTTP 服务提供商端点” 显示 WSDL 片段,用于配置 HTTP 服务提供商端点,指定它不与缓存交互。
例 12.13. WSDL 配置 HTTP 服务提供商端点
<service ... > <port ... > <soap:address ... /> <http-conf:server CacheControl="no-cache" /> </port> </service>
12.3.4. 服务提供商缓存控制指令
表 12.6 “http-conf:server
Cache Control Directives” 列出 HTTP 服务提供商支持的缓存控制指令。
指令 | 行为 |
---|---|
no-cache | 缓存无法使用特定的响应来满足后续请求,而不必先评估服务器响应。如果使用此值指定特定的响应标头字段,则限制仅适用于响应中的这些标头字段。如果没有指定响应标头字段,这个限制将应用到整个响应。 |
public | 任何缓存都可以存储响应。 |
private | 公共(共享)缓存无法存储响应,因为响应适用于单个用户。如果使用此值指定特定的响应标头字段,则限制仅适用于响应中的这些标头字段。如果没有指定响应标头字段,这个限制将应用到整个响应。 |
no-store | 缓存不得存储响应的任何部分或调用它的请求的任何部分。 |
no-transform | 缓存不得在服务器和客户端之间响应中修改内容的介质类型或位置。 |
must-revalidate | 缓存必须重新验证与响应相关的过期条目,然后才能在随后的响应中使用该条目。 |
proxy-revalidate | 与 must-revalidate 相同的操作,除了只能在共享缓存上强制执行,并由私有非共享缓存忽略。当使用这个指令时,必须使用公共 cache 指令。 |
max-age | 客户端可以接受其年龄不会超过指定秒数的响应。 |
s-max-age | 与 max-age 相同的操作,只是只能在共享缓存中强制使用,并由私有非共享缓存忽略。s-max-age 指定的年龄会覆盖 max-age 指定的年龄。当使用这个指令时,还必须使用 proxy-revalidate 指令。 |
cache-extension | 指定其他缓存指令的额外扩展。扩展可以是信息或行为。在标准指令上下文中指定了扩展指令,以便不了解扩展指令的应用程序可以遵循标准 指令强制的行为。 |