Web Services 如何在websphere中定义webservice客户端的超时

yfjy0ee7  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(273)

我们的应用程序托管在websphere中,我的webservice客户端(jax-ws)正在对远程服务器进行webservice调用。我需要为这个webservice调用定义超时。我尝试了不同的方法来设置超时,但没有成功。下面是我所尝试的:

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);

都不管用
任何人都可以给予提示,如何设置websphere中webservice客户端的超时?
谢谢

6qftjkof

6qftjkof1#

因为WAS中的Jax-WS依赖于Axis 2,我相信您可以使用标准Axis 2方法来实现这一点,请尝试(来自Axis 2文档):
超时配置
传输级别中存在两个超时示例:套接字超时和连接超时。可以在部署时或运行时配置这两个超时示例。如果在部署时配置,则用户必须在axis2.xml中添加以下行。
对于套接字超时:

<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 options ignore timeout
请让我知道它是否有效;)

rdlzhqv9

rdlzhqv92#

您应该设置以下链接中提到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);

将超时(秒)设置为字符串。

相关问题