【发布时间】:2013-06-10 20:54:03
【问题描述】:
从 EJB 事务中,我使用 SOAP 调用远程站点。远程服务器没有响应。我得到了交易超时。但我想从远程调用中获得超时。
如何在全局范围内为 SOAP 请求设置超时? 如何为特定调用设置 SOAP 请求超时?
【问题讨论】:
标签: websphere
从 EJB 事务中,我使用 SOAP 调用远程站点。远程服务器没有响应。我得到了交易超时。但我想从远程调用中获得超时。
如何在全局范围内为 SOAP 请求设置超时? 如何为特定调用设置 SOAP 请求超时?
【问题讨论】:
标签: websphere
要全局设置超时,您可以使用HTTP transport custom properties for web services applications。您在这里寻找的超时时间是timeout。这是默认的 300 秒(大于全局事务超时默认值,即 120 秒,因此您会收到事务超时)。
如果您使用的是 JAX-RPC,请确保您处于包含对 PM60752(6.1.0.45、7.0.0.25、8.0.0.5 和 8.5.0.1)的修复的补丁级别。
如 Nick 的回答所示,如果您使用较新的 JAX-WS 堆栈,则可以使用其他方法来配置超时。
使用 JAX-RPC 时,您可以为特定调用端点设置超时,如文章 Setting the timeout value for a JAX-RPC Web Service client 中所述。对于 JAX-WS,您可以使用绑定或在 How to Set Timeout for JAX-WS WebService Call 处选择其中一种解决方案。
在为 Web 服务配置超时时要记住的一点是,Web 服务传输依赖于 HTTP 传输(假设 SOAP over HTTP),而这又依赖于 TCP 传输,所有这些都可以针对各种超时进行配置。这些层之间的关系以及常见问题的解决方案在Common Timeouts effecting Web Services, HTTP and SOAP clients文章中进行了概述。
【讨论】:
您应该能够使用策略集进行配置。有关该主题的 IBM 文档,请参阅下面的链接。
【讨论】: