2

我正在 Jboss 5.1.0 GA 上开发 Jax-ws 客户端。我想设置 Web 服务客户端超时。

我试过StubExt.PROPERTY_CLIENT_TIMEOUT

int timeoutMillisecond=3000;
bp.getRequestContext().put(StubExt.PROPERTY_CLIENT_TIMEOUT, timeoutMillisecond);

它可以工作,但仅在3*timeoutMillisecond后(9000 毫秒后)才抛出异常,但 3000ms 写入日志文件。

2012-12-24 15:42:40,053 DEBUG Sending request
2012-12-24 15:42:49,057 ERROR WebServiceException returned: 
javax.xml.ws.WebServiceException: org.jboss.ws.core.WSTimeoutException: Timeout after: 3000ms

我还尝试了许多其他方式

bp.getRequestContext().put("com.sun.xml.ws.connect.timeout", 100);
bp.getRequestContext().put("com.sun.xml.ws.request.timeout", 100);
// from com.sun.xml.ws.developer.JAXWSProperties
bp.getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, 100);
bp.getRequestContext().put(JAXWSProperties.REQUEST_TIMEOUT, 100);

但是在 Jboss 5.1 上没有任何效果


你能告诉我如何正确设置客户端超时吗?

4

3 回答 3

1

我做了以下步骤并解决了问题

  1. 升级jbossws-native库,请点击此链接
    jbossws-native-3.4.0 是 Jboss 5.1.0GA 的最新支持版本。你可以看到JBossWS - Supported Target Containers

  2. 用过的StubExt.PROPERTY_CLIENT_TIMEOUT

    int timeoutMillisecond=3000;
    bp.getRequestContext().put(StubExt.PROPERTY_CLIENT_TIMEOUT, timeoutMillisecond);
    

顺便说一句,在这个版本中StubExt.PROPERTY_CONNECTION_TIMEOUT也可以正常工作。

于 2012-12-25T12:07:19.690 回答
0

您可以将这些设置用于您的服务端口。

BindingProvider bindingProvider = (BindingProvider) YOUR_SERVICE_PORT;
Map<String, Object> context = bindingProvider.getRequestContext();
context.put(BindingProviderProperties.CONNECT_TIMEOUT, 3*1000);
context.put(BindingProviderProperties.REQUEST_TIMEOUT,3*1000);
于 2012-12-24T13:29:53.660 回答
0

你完全错过了点检出代码:

URL url = 新 URL(" http://tst.com:9990/ws/hello?wsdl ");

    //1st argument service URI, refer to wsdl document above
//2nd argument is service name, refer to wsdl document above
    QName qname = new QName("http://tstsoap/", "HelloWorldImplService");

    Service service = Service.create(url, qname);

   HelloWorld hello = service.getPort(HelloWorld.class);

如您所见,如果不先创建服务,您将无法获得端口。
所以超时总是发生在服务创建时。所以为端口设置时间是没有意义的......有人需要发布一些关于服务超时......而不是端口超时......除非有人能证明我错了......

于 2013-08-06T13:25:34.377 回答