如何以编程方式在WebSphere 7中设置JAX-WS 2.1 JMS客户端超时?

时间:2010-01-13 20:45:18

标签: java java-ee websphere jax-ws

我正在将JAX-RPC客户端和服务转换为JAX-WS,并试图找出如何以编程方式设置客户端超时。这将是在WebSphere 7中运行的JAX-WS 2.1客户端。在JAX-RPC中,我可以在SOAPBindingStub上设置一个属性来设置超时。

在JAX-WS代码中,我尝试了如下设置几个属性,没有运气:

PolicyFinderService policyFinderService = new PolicyFinderService();
PolicyFinder policyFinder = policyFinderService.getPolicyFinderSOAPPort();
((BindingProvider)policyFinder).getRequestContext().put(com.ibm.wsspi.websvcs.Constants.REQUEST_TIMEOUT_PROPERTY, 1);
((BindingProvider)policyFinder).getRequestContext().put(com.ibm.wsspi.websvcs.Constants.WRITE_TIMEOUT_PROPERTY, 1);
((BindingProvider)policyFinder).getRequestContext().put(com.ibm.wsspi.webservices.Constants.READ_TIMEOUT_PROPERTY, 1);
((BindingProvider)policyFinder).getRequestContext().put(com.ibm.wsspi.webservices.Constants.RESPONSE_TIMEOUT_PROPERTY, 1);
((BindingProvider)policyFinder).getRequestContext().put(com.ibm.wsspi.webservices.Constants.WRITE_TIMEOUT_PROPERTY, 1);

当我拨打电话并且服务没有运行时,这些都没有任何效果,它只是在超时之前挂起默认超时值(我想5分钟)。

有没有人找到过在WebSphere 7中以编程方式设置此超时值的方法?

2 个答案:

答案 0 :(得分:2)

请参阅http://www.websphere-world.com/modules.php?name=News&file=article&sid=2058上的文章。 作者,这里详细介绍了为WebSphere中的JAX-WS客户端设置超时的步骤。此致,迈克

答案 1 :(得分:1)

可能你可能需要

((BindingProvider)policyFinder).getRequestContext().put(
  com.ibm.wsspi.webservices.Constants.CONNECTION_TIMEOUT_PROPERTY, 2000);

它可能在写之前......可能

也许这也是?

reqCtx.put(JAXWSProperties.CONNECT_TIMEOUT, 10); 
reqCtx.put(BindingProviderProperties.REQUEST_TIMEOUT, 10);

可能REQUEST_TIMEOUT_PROPERTY实际上可能是以毫秒为单位,所以也许一个低的值1以某种方式被舍入到0(无限)以后......也许会尝试2000?