我们的应用程序托管在websphere中,我的web服务客户端(jax-ws)正在向远程服务器发出web服务调用。我需要为这个web服务调用定义超时。我尝试了不同的方法设置暂停,没有运气。下面是我的尝试:
Map<String, Object> requestContext = ((BindingProvider) binding).getRequestContext();
requestContext.put("com.ibm.websphere.webservices.jaxws.asynctimeout", 15000);
或
Map<String, Object> requestContext = ((BindingProvider) binding).getRequestContext();
requestContext.put(BindingProviderProperties.REQUEST_TIMEOUT, 15000);
requestContext.put(BindingProviderProperties.CONNECT_TIMEOUT, 15000);
它们都不工作
谁能给点提示,如何在webservice客户端设置超时?Thx
由于WAS中的Jax-WS依赖于Axis 2,我相信您可以使用标准的Axis 2方法来做到这一点,请尝试(从Axis 2文档):
超时配置
传输层存在两个超时实例:套接字超时和连接超时。这些可以在部署或运行时配置。如果在部署时进行配置,则用户必须在axis2.xml中添加以下行。
对于Socket超时:
<parameter name="SO_TIMEOUT">some_integer_value</parameter>
For Connection timeout:
<parameter name="CONNECTION_TIMEOUT">some_integer_value</parameter>
对于运行时配置,它可以在客户端存根中设置如下:…
Options options = new Options();
options.setProperty(HTTPConstants.SO_TIMEOUT, new Integer(timeOutInMilliSeconds));
options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, new Integer(timeOutInMilliSeconds));
// or
options.setTimeOutInMilliSeconds(timeOutInMilliSeconds);
...
如果您想了解更多信息,请查看:http://axis.apache.org/axis2/java/core/docs/http-transport.html
也:
http://wso2.org/library/209 http://singztechmusings.wordpress.com/2011/05/07/how-to-configure-timeout-duration-at-client-side-for-axis2-web-services/如果您正在使用ServiceClient,请检查此线程:Axis2 ServiceClient选项忽略超时
请让我知道它是否工作;)
您应该设置以下链接中提到的JVM属性-
https://www - 01. - ibm.com/support/knowledgecenter/ssaw57_8.5.5/com.ibm.websphere.nd.doc/ae/rwbs_jaxwstimeouts.html
bindingProvider.getRequestContext().put(com.ibm.wsspi.webservices.Constants.CONNECTION_TIMEOUT_PROPERTY, timeout);
bindingProvider.getRequestContext().put(com.ibm.wsspi.webservices.Constants.RESPONSE_TIMEOUT_PROPERTY, timeout);