当我为来自客户端的服务调用设置超时时,它不会覆盖defalt值,这是有原因的吗?
这些我都试过了,但没有成功。
DictionaryTransferService service = new DictionaryTransferService();
DictionaryTransfer port = service.getDictionaryTransferPort();
((BindingProvider) port).getRequestContext().put(StubExt.PROPERTY_CLIENT_TIMEOUT, 10 * 60 * 1000);
((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 5 * 60 * 1000);
((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10 * 60 * 1000);
((BindingProvider) port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL.toString());
这些JAX-WS RI设置的常量曾一度更改,因此您可能需要使用以下内容:
"com.sun.xml.ws.connect.timeout"
"com.sun.xml.ws.request.timeout"
或者更好的是,使用JAXWSProperties
类本身的常量。
由于您正在运行JBoss:,您也可以尝试这些方法
org.jboss.ws.core.StubExt.PROPERTY_CONNECTION_TIMEOUT
org.jboss.ws.core.StubExt.PROPERTY_RECEIVE_TIMEOUT