从 EJB 事务中,我使用 SOAP 调用远程站点。远程服务器没有响应。我得到了交易超时。但我想从远程呼叫中获得超时。
如何全局设置 SOAP 请求超时?如何为特定调用设置 SOAP 请求超时?
从 EJB 事务中,我使用 SOAP 调用远程站点。远程服务器没有响应。我得到了交易超时。但我想从远程呼叫中获得超时。
如何全局设置 SOAP 请求超时?如何为特定调用设置 SOAP 请求超时?
要全局设置超时,您可以使用Web 服务应用程序的 HTTP 传输自定义属性。您在这里寻找的超时时间是timeout
. 这是默认的 300 秒(大于全局事务超时默认值,即 120 秒,因此您会收到事务超时)。
如果您使用的是 JAX-RPC,请确保您处于包含 PM60752 修复程序的补丁级别( 6.1.0.45、7.0.0.25、8.0.0.5 和 8.5.0.1)。
如尼克的回答所示,如果您使用较新的 JAX-WS 堆栈,则可以使用其他方法来配置超时。
使用 JAX-RPC 时,您可以为特定调用端点设置超时,如为 JAX-RPC Web 服务客户端设置超时值一文中所述。对于 JAX-WS,您可以使用绑定或在How to Set Timeout for JAX-WS WebService Call中选择其中一种解决方案。
为 Web 服务配置超时时要记住的一件事是,Web 服务传输依赖于 HTTP 传输(假设 SOAP over HTTP),而这又依赖于 TCP 传输,所有这些都可以针对各种超时进行配置。这些层之间的关系和常见问题的解决方案在影响 Web 服务、HTTP 和 SOAP 客户端的常见超时一文中进行了概述。
您应该能够使用策略集进行配置。有关该主题的 IBM 文档,请参阅下面的链接。