Web Service 应用程序的 HTTP 传输定制属性

使用 Java™ API for XML-Based Web Services (JAX-WS) 和 Java API for XML-based RPC (JAX-RPC) Web Service 的 HTTP 传输属性来管理 HTTP 出站连接的连接池、配置 HTTP 消息的内容编码、启用 HTTP 持续连接和发生超时重新发送 HTTP 请求。

建立连接是开销很大的操作。连接池通过避免创建连接和断开连接的开销来提高性能。当应用程序通过 HTTP 传输调用 Web Service 时,Web Service 的 HTTP 出站连接器会从连接池查找和使用现有连接。接收响应时,连接程序会返回连接池的连接以供复用。这样可避免创建和断开连接的开销。

com.ibm.websphere.webservices.http.connectionIdleTimeout

此属性指定时间间隔(以秒计),经过此时间间隔之后将不再复用连接。

当应用程序请求建立新连接时,HTTP 出站连接器将搜索所有未使用的现有连接。如果它发现某个连接处于空闲状态的时间超过此属性指定的时间,那么可能会释放该连接。如果它发现某个连接处于空闲状态的时间少于此属性指定的时间,那么将复用此连接,并且将停止搜索。因为搜索将仅查找一个端点,并且会在复查所有连接之前停止,所以可以保留空闲连接。

清除任务将定期检查所有未使用的连接的空闲时间。如果清除任务发现某个连接处于空闲状态的时间超过此属性指定的时间,那么会释放该连接。因此,空闲连接可以持续的时间是清除任务计时器延迟时间加上此属性的值。例如,如果清除任务计时器延迟为 180 秒,com.ibm.websphere.webservices.http.connectionIdleTimeout 设置为缺省值 5 秒,那么连接在被释放之前最多可以空闲 185 秒。用于控制清除任务计时器延迟的 JVM 属性是 com.ibm.websphere.webservices.http.connectionPoolCleanUpTime。

此属性影响一个 JVM 中创建的所有 Web Service HTTP 连接。

表 1. com.ibm.websphere.webservices.http.connectionIdleTimeout 属性的值. 这些值用于指定废弃空闲连接之前要经过的时间间隔。
信息
数据类型 整数
单位
缺省 5
范围 0(零)到最大整数
支持的配置 支持的配置: 只能将此属性配置为 Web Service 应用程序的 JVM 定制属性。sptcfg

有关如何配置此属性的信息,请参阅“使用管理控制台来配置其他 HTTP 传输属性”资料。

com.ibm.websphere.webservices.http.connectionKeepAlive

此属性指定连接器是否应该维护活动或持久的 HTTP 连接。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

如果此属性设置为 true,那么连接器会将该连接存放在连接池中并将其复用于后续 HTTP 请求。但是,如果达到 syncTimeout(Read timeout) 或者服务器已断开该连接,那么该连接将被关闭。并且,如果空闲时间超出连接空闲超时值,那么空闲连接将被池维护线程关闭。如果此属性设置为 false,那么在发送 HTTP 请求后将关闭连接。如果准备发送新请求,但不存在连接,那么 HTTP 连接器将创建一个连接。

如果某个请求的响应为 HTTP 200,那么表示已接收到该请求,并且用于该请求的连接处于活动状态且可复用于下一调用。如果某个请求的响应为 HTTP 202,那么表示已接收到该请求,但是用于该请求的连接不可复用。

避免故障 避免故障: 即使接收到某个请求的 202 Accepted 响应,该请求也可能未处理。 202 响应代码仅表示已接受该请求进行处理。当服务器尝试处理请求时,如果请求已禁止,那么不会处理已接受的请求。诸如 HTTP 请求的异步操作没有重新发送状态码的功能。因此,202 响应代码是有意不承担的。此代码的用途是允许服务器接受某些其他进程(例如,每天仅运行一次的面向批处理的进程)的请求,而不需要一直保持代理与服务器的连接直到进程完成。 与此响应一起返回的实体应包括请求的当前状态标识,以及指向状态监视器的指针或者您可以期望请求完成的某些时间预估。gotcha
表 2. com.ibm.websphere.webservices.http.connectionKeepAlive 属性的值. 这些值用于指定连接器是否应该维护活动或持续 HTTP 连接。
信息
数据类型 String
缺省 True
有效值 True 和 false

有关如何配置此属性的信息,请参阅“使用 wsadmin 配置其他 HTTP 传输属性”和“使用组装工具配置其他 HTTP 传输属性”的信息。

com.ibm.websphere.webservices.http.connectionPoolCleanUpTime

此属性指定连续运行连接池维护线程之间的时间间隔(以秒计)。

此属性影响一个 JVM 中创建的所有 Web Service 的 HTTP 连接。例如,如果此属性设置为 180,那么池维护线程每 180 秒运行一次。池维护线程运行时,连接器将废弃清除队列中的任何连接。

表 3. com.ibm.websphere.webservices.http.connectionPoolCleanUpTime 属性的值. 这些值用于指定连续运行连接池维护线程之间的时间间隔。
信息
数据类型 整数
单位
缺省 180
范围 0(零)到最大整数
支持的配置 支持的配置: 只能将此属性配置为 Web Service 应用程序的 JVM 定制属性。sptcfg

有关如何配置此属性的信息,请参阅“使用管理控制台来配置其他 HTTP 传输属性”资料。

com.ibm.websphere.webservices.http.connectionTimeout

此属性指定连接请求发生超时并导致发生 WebServicesFault( "Connection timed out" ) 错误之前的时间间隔(以秒计)。

此值将影响 HTTP 出站连接器发出的所有 HTTP 连接请求。达到连接池中的最大连接数后,需要等待一段时间。例如,如果此属性设置为 300,并且达到最大连接数,那么连接器将等待连接可用并且最多等待 300 秒。在 300 秒之后,如果仍没有可用的连接,那么将发生 WebServicesFault( "Connection timed out" ) 错误。如果此属性设置为 0(零),那么连接器将一直等到连接可用。

如果在应用程序中发生 WebServicesFault( "Connection timed out") 错误,请增大 com.ibm.websphere.webservices.http.connectionTimeout 属性值的设置。并且,请检查应用程序的用法。如果 com.ibm.websphere.webservices.http.maxConnection 属性值设置为 0(零),即支持无限制的连接数,那么 com.ibm.websphere.webservices.http.connectionTimeout 属性值将被忽略。

表 4. com.ibm.websphere.webservices.http.connectionTimeout 属性的值. 这些值用于指定连接请求何时发生超时。
信息
数据类型 整数
单位
缺省 300
范围 0(零)到最大整数
支持的配置 支持的配置: 只能将此属性配置为 Web Service 应用程序的 JVM 定制属性。sptcfg

有关如何配置此属性的信息,请参阅“使用管理控制台来配置其他 HTTP 传输属性”资料。

com.ibm.websphere.webservices.http.maxConnection

此属性指定在 HTTP 出站连接器连接池中创建的最大连接数。

此属性影响一个 JVM 中创建的所有 Web Service HTTP 连接。达到最大连接数后,将不会创建新的连接,并且 HTTP 连接器将等待当前连接返回到连接池。如果 HTTP 连接程序由于连接请求超时而不等待当前连接,那么将发生 WebServicesFault( "Connection timed out" ) 错误。例如,如果此属性设置为 5 并且已有 5 个连接正在使用中,那么 HTTP 连接程序将在 com.ibm.websphere.webservices.http.connectionTimeout 属性所设置的指定时间内等待连接变得可用。

最佳实践 最佳实践: 为了提高性能,请确保 com.ibm.websphere.webservices.http.maxConnection 定制属性大于或等于 Web 容器线程池中的最大线程数。Web 容器线程池的缺省大小为 50。因此,对于 JAX-RPC 和 JAX-WS,com.ibm.websphere.webservices.http.maxConnection 属性的缺省大小分别设置为 25 和 50。您可以根据需要将 com.ibm.websphere.webservice.http.maxConnection 的设置从此初始值上调以更好地使用线程。 bprac
表 5. com.ibm.websphere.webservices.http.maxConnection 属性的值. 这些值用于指定在 HTTP 出站连接器连接池中创建的最大连接数。
信息
数据类型 整数
缺省

对于 JAX-RPC 应用程序:25

对于 JAX-WS 应用程序:50

范围 5 到最大值(最大值小于或等于 Web 容器线程池大小的一半)
支持的配置 支持的配置: 只能将此属性配置为 Web Service 应用程序的 JVM 定制属性。sptcfg

有关如何配置此属性的信息,请参阅“使用管理控制台来配置其他 HTTP 传输属性”资料。

com.ibm.websphere.webservices.http.responseContentEncoding

此属性指定要在每个 HTTP 响应的消息中使用的编码类型。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

避免故障 避免故障: 此属性仅适用于 JAX-RPC,如果为基于 JAX-WS 的服务启用了此属性,将不会使用此属性。gotcha

支持的编码格式遵循 HTTP 1.1 协议规范,包括 gzip、x-gzip 和 deflate。如果配置了此属性,那么 HTTP 响应中的头“Content-Encoding”也将设置为相同的值。如果未设置此属性,那么将不会对 HTTP 响应消息内容进行编码。缺省值为 no encoding

如果设置了此属性,那么请求客户机也必须支持同一编码。否则,将发生故障并显示 WebServicesFault() 错误。

不支持压缩编码格式,并且 x-gzip 编码等同于 gzip 编码。

表 6. com.ibm.websphere.webservices.http.responseContentEncoding 属性的值. 这些值用于指定在每个 HTTP 响应的消息中使用的编码类型。
信息
数据类型 String
有效值 gzip、x-gzip 或 deflate

有关如何配置此属性的信息,请参阅“使用 wsadmin 配置其他 HTTP 传输属性”和“使用组装工具配置其他 HTTP 传输属性”的信息。

com.ibm.websphere.webservices.http.requestContentEncoding

此属性指定要在每个 HTTP 出站请求的消息中使用的编码类型。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

支持的编码格式遵循 HTTP 1.1 协议规范,包括 gzip、x-gzip 和 deflate。如果配置了此属性,那么 HTTP 请求中的头“Content-Encoding”和“Accept-Encoding”也将设置为相同的值。例如,如果此属性设置为 gzip,那么这些头将变为 Content-Encoding: gzip 和 Accept-Encoding: gzip。但是,如果未设置此属性,那么将不会对 HTTP 请求消息进行编码。缺省值为 no encoding。

您应检查目标 Web 服务器能否对所配置的代码格式进行解码。例如,如果此属性设置为 gzip,那么目标 Web 服务器也必须支持 gzip 编码。否则将发生故障,并且可能会显示状态码 415 Unsupported Media Type

不支持压缩编码格式,并且 x-gzip 编码等同于 gzip 编码。

表 7. com.ibm.websphere.webservices.http.requestContentEncoding 属性的值. 这些值用于指定在每个 HTTP 出站请求的消息中使用的编码类型。
信息
数据类型 String
有效值 gzip、x-gzip 和 deflate

有关如何配置此属性的信息,请参阅“使用 wsadmin 配置其他 HTTP 传输属性”和“使用组装工具配置其他 HTTP 传输属性”的信息。

com.ibm.websphere.webservices.http.requestResendEnabled

此属性告知 HTTP 连接器,在记录 java.net.ConnectException: read timed out 错误后,要通过 HTTP 请求重新发送 SOAP 消息。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

此属性告知 HTTP 连接器,在记录 java.net.ConnectException: read timed out 错误后,要通过 HTTP 请求重新发送 SOAP 消息。java.net.ConnectException 是由于套接字超时或者服务器在请求发送期间关闭而引起的。如果启用此属性,那么连接器将只尝试重新连接一次并通过 HTTP 重新发送同一条 SOAP 消息。否则,连接器将停止发送 SOAP 消息并记录 WebServicesFault 错误。

在启用了此属性的应用程序中,可能会发生问题。重新发送的 HTTP 请求可能会被服务器接收两次并导致意外结果。

表 8. com.ibm.websphere.webservices.http.requestResendEnabled 属性的值. 这些值用于告知 HTTP 连接器在错误情况后要通过 HTTP 请求重新发送 SOAP 消息。
信息
数据类型 String
缺省 False
有效值 True 和 false

有关如何配置此属性的信息,请参阅“使用 wsadmin 配置其他 HTTP 传输属性”和“使用组装工具配置其他 HTTP 传输属性”的信息。

com.ibm.websphere.webservices.http.SocketTimeout

此属性指定等待与远程服务器建立出站套接字的时间量(以秒计)。

此属性影响一个 JVM 中创建的所有 Web Service HTTP 连接。如果提供的值无效,那么缺省值将覆盖无效的值。

表 9. com.ibm.websphere.webservices.http.SocketTimeout 属性的值. 这些值用于指定等待与远程服务器建立出站套接字的时间。
信息
数据类型 整数
单位
缺省 180
注意: 如果指定的值无效,那么缺省值将覆盖无效的值。
范围 0(零)到 2147482(最大整数)
支持的配置 支持的配置: 只能将此属性配置为 Web Service 应用程序的 JVM 定制属性。sptcfg

有关如何配置此属性的信息,请参阅“使用管理控制台来配置其他 HTTP 传输属性”资料。

com.ibm.ws.webservices.enableHTTPPrefix

此属性指定,对于在管理控制台的“提供 HTTP 端点 URL”面板中定义为定制 HTTP URL 前缀的 hostname:port 值,是否将其填充到服务返回给客 户机的 WSDL 文件副本中的 URL 字段。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

如果将此属性的值配置为 true,那么将在返回给客户机的 WSDL 文件中正确指定所指定的定制 HTTP URL 前缀。如果未将此属性的值配置为 true,那么在返回给客户机的 WSDL 文件副本中的 URL 字段中,不会填充对请求做出响应的服务器节点的所指定定制 hostname:port

表 10. com.ibm.ws.webservices.enableHTTPPrefix 属性的值. 这些值用于指定 enableHTTPPrefix HTTP 传输属性。
信息
数据类型 String
缺省 False
有效值 True 和 false
支持的配置 支持的配置: 只能将此属性配置为 JAX-RPC Web Service 应用程序的 JVM 定制属性。sptcfg
有关如何配置此属性的信息,请参阅“使用管理控制台来配置其他 HTTP 传输属性”资料。

在定义此定制属性之后,必须重新启动应用程序服务器才能使系统使用此属性。

enableMultiThreadedSession

此属性指定是否允许客户机跨同一个客户机实例的线程共享 HTTP 会话信息。要启用此行为,请通过对客户机存根调用 _setProperty 方法将此属性的值配置为 true。如果未启用此属性,那么缺省行为是,使会话作为调用了客户机的线程的本地会话。

此属性只适用于 Java API for XML-based RPC (JAX-RPC) Web Service。

以下代码演示如何以编程方式配置 enableMultiThreadedSession 属性:
Properties prop = new Properties();
InitialContext ctx = new InitialContext(prop);
Service service = (Service)ctx.lookup("java:comp/env/service/StockQuoteService");
QName portQname = new QName("http://httpchannel.test.wsfvt.ws.ibm.com", "StockQuoteHttp");
StockQuote sq = (StockQuote)service.getPort(portQname, StockQuote.class);
((javax.xml.rpc.Stub) sq)._setProperty(com.ibm.wsspi.webservices.Constants.ENABLE_MULTITHREADED_SESSION, Boolean.TRUE);
表 11. enableMultiThreadedSession 属性的值. 这些值用于指定是否允许客户机跨同一个客户机实例的线程共享 HTTP 会话信息。
信息
数据类型 布尔值
缺省 False
有效值 True 和 false

在定义此定制属性之后,必须重新启动应用程序服务器才能使系统使用此属性。

HttpInboundPersistReadTimeout

此属性指定对于异步 JAX-WS 应用程序在发生持续读取超时前经过的时间量(以秒计)。

支持的配置 支持的配置: 此属性只适用于在独立应用程序服务器环境中运行的异步 JAX-WS 应用程序以及所有已定义的异步响应侦听器。您只能将此属性配置为 JVM 定制属性。此属性影响一个 JVM 中创建的所有 Web Service HTTP 连接。sptcfg
对于异步 Web Service 而言,客户机异步响应侦听器将打开持续时间缺省值为 7 秒的套接字并侦听异步响应。如果服务器操作的耗用时间超出缺省时间,那么服务器或客户机可能会接收到以下异常:
java.io.IOException: Async IO operation failed (1), reason: RC: 32  Broken pipe
发生此异常的原因是,在客户机上超出持续读取超时限制,因此导致连接被关闭。

在读大型数据时,或者由于网络速度较慢而导致在服务器端读数据所需时间超出缺省值(7 秒)时,请使用此属性。如果在服务器端接收到管道中断异常,请增大此超时属性的值。

表 12. HttpInboundPersistReadTimeout 属性的值. 这些值用于指定发生读超时并且异步侦听器会话被关闭前经过的时间。
信息
数据类型 整数
单位
缺省 7
有效值 0(零)到最大整数

有关如何配置此属性的信息,请参阅“使用管理控制台来配置其他 HTTP 传输属性”资料。

http.nonProxyHosts

此 JVM 系统属性用于覆盖 http.proxyHosthttps.proxyHost 属性并指定不通过代理服务器将请求发送到的机器的主机名。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

任何由客户机应用程序调用并发送至名称包含在此属性中的主机的请求都不通过代理服务器进行传递。请使用竖线(“|”)来分隔列表中的各个主机名。另外,您还可以选择使用星号 (*) 作为通配符。

http.nonProxyHosts 属性适用于 HTTP 和 HTTPS 连接。

例如,在 JVM 定制属性面板上,输入代理主机和非代理主机的“名称/值”对:
  • 对于代理主机,输入名称 http.proxyHost 和值 myproxy.mycompany.com
  • 对于非代理主机,输入名称 http.nonProxyHosts 和值 host1.company1.com|host*.company2.com|*.company3.com
所有请求都将通过代理服务器 myproxy.mycompany.com 进行路由,但以如下主机为目标的 HTTP 请求除外:
  • 名为 host1.company1.com 的单一主机
  • company2.com 域中名称以 host 开头的任何主机
  • company3.com 域中的任何主机
注:http.nonProxyHosts 的设置进行的处理以纯模式匹配方式执行。主机名在与模式匹配前不会展开为标准格式。例如,如果在上述示例中指定 http.nonProxyHosts,那么字符串 host1 将不会与所指定的任何设置相匹配,正因为如此,Web Service 引擎将会通过代理服务器发送请求。如果您不想通过代理服务器来发送 host1 请求,那么对 http.nonProxyHosts 指定的值的某个位置必须包含 host1。下面是此指定的一个示例。
http.nonProxyHosts="host1.company1.com|host*.company2.com|*.company3.com|host1"
最佳实践 最佳实践: 通过 Web 代理使用 Web Service 客户机时,最佳实践是设置 http.nonProxyHosts 属性以包含本地主机(如果在同一系统上主管所有 Web Service)。例如,如果本地主机名为 myHost.myCorp.com,请将 http.nonProxyHosts 属性设置为 localhost|myHost.myCorp.comlocalhost|*.myCorp.com。如果未将 http.nonProxyHosts 属性设置为包括本地主机,那么向本地主机发出的 Web Service 请求将外发至 Web 代理,然后返回到本地主机。bprac
表 13. http.nonProxyHosts 属性的值. 这些值用于指定不通过代理服务器将请求发送到的机器的主机名。
信息
数据类型 String
支持的配置 支持的配置: 只能将此属性配置为 Web Service 应用程序的 JVM 定制属性。sptcfg

有关如何配置此属性的信息,请参阅“使用管理控制台来配置其他 HTTP 传输属性”资料。

http.proxyHost

此属性指定 HTTP 代理的主机名。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

表 14. http.proxyHost 属性的值. 这些值用于指定 HTTP 代理的主机名。
信息
数据类型 String

有关如何配置此属性的信息,请参阅“使用 wsadmin 配置其他 HTTP 传输属性”和“使用组装工具配置其他 HTTP 传输属性”的信息。

http.proxyPort

此属性指定 HTTP 代理的端口。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

表 15. http.proxyPort 属性的值. 这些值用于指定 HTTP 代理的端口。
信息
数据类型 String

有关如何配置此属性的信息,请参阅“使用 wsadmin 配置其他 HTTP 传输属性”和“使用组装工具配置其他 HTTP 传输属性”的信息。

https.proxyHost

此属性指定 HTTPS 代理的主机名。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

表 16. https.proxyHost 属性的值. 这些值用于指定 HTTPS 代理的主机名。
信息
数据类型 String

有关如何配置此属性的信息,请参阅“使用 wsadmin 配置其他 HTTP 传输属性”和“使用组装工具配置其他 HTTP 传输属性”的信息。

https.proxyPort

此属性指定 HTTPS 代理的端口。它是您可以为 Web Service 应用程序配置的 HTTP 传输属性。

表 17. https.proxyPort 属性的值. 这些值用于指定 HTTPS 代理的端口。
信息
数据类型 String

有关如何配置此属性的信息,请参阅“使用 wsadmin 配置其他 HTTP 传输属性”和“使用组装工具配置其他 HTTP 传输属性”的信息。

timeout

此属性指定发生读超时之前经过的时间(以秒计)。

读取大型 Web Service 消息时,如果发出 Web Service 调用,那么可能会接收到 WSWS3228E 消息以及 SocketTimeoutExceptions 错误。

此值将影响 HTTP 入站连接器发出的所有 HTTP 连接请求。在读大型数据时,或者由于网络速度较慢而导致读数据所需时间超出缺省时间(300 秒)时,请使用这个读超时属性。如果读消息时发生 SocketTimeoutExceptions 错误,请增大 timeout 属性的值。

表 18. timeout 属性的值. 这些值用于指定发生读超时前经过的时间。
信息
数据类型 整数
单位
缺省 300
范围 0(零)到最大整数
支持的配置 支持的配置: 可以将此属性配置为 JAX-WS 应用程序的 JVM 定制属性。有关如何将此属性配置为 JVM 定制属性的信息,请参阅“配置 HTTP 传输策略”资料。对于 JAX-RPC 应用程序,可以将读取超时属性 com.ibm.ws.webservices.readTimeout 配置为 JVM 定制属性。sptcfg

对于 JAX-WS 应用程序而言,您还可以通过定制 HTTP 传输策略或通过使用 JAX-WS 绑定来配置此属性。有关如何使用这些方法来配置此属性的信息,请参阅有关使用管理控制台来配置其他 HTTP 传输属性或者有关配置 HTTPTransport 策略和绑定属性的资料。

write_timeout

此属性指定发送消息后发生写操作超时之前经过的时间(以秒计)。

写入大型 Web Service 消息时,如果发出 Web Service 调用,那么可能会接收到 WSWS3228E 消息以及 SocketTimeoutExceptions 错误。

此值将影响 HTTP 出站连接器发出的所有 HTTP 连接请求。在发送大量数据时,或者由于网络速度较慢而导致写数据所需时间超出缺省时间(300 秒)时,请使用这个写超时属性。如果写消息时发生 SocketTimeoutExceptions 错误,请增大 write_timeout 属性的值。

表 19. write_timeout 属性的值. 这些值用于指定发送消息后发生写操作超时前经过的时间。
信息
数据类型 整数
单位
缺省 300
范围 0(零)到最大整数
支持的配置 支持的配置: 可以将此属性配置为 JAX-WS 应用程序的 JVM 定制属性。有关如何将此属性配置为 JVM 定制属性的信息,请参阅“配置 HTTP 传输策略”资料。对于 JAX-RPC 应用程序,可以将写入超时属性 com.ibm.ws.webservices.writeTimeout 配置为 JVM 定制属性。sptcfg

对于 JAX-WS 应用程序而言,您还可以通过定制 HTTP 传输策略或通过使用 JAX-WS 绑定来配置此属性。有关如何使用这些方法来配置此属性的信息,请参阅有关使用管理控制台来配置其他 HTTP 传输属性或者有关配置 HTTPTransport 策略和绑定属性的资料。


指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_httptransportprop
文件名:rwbs_httptransportprop.html