JDK1.8 +Tomcat環境,采用以下配置實作了逾時配置,且驗證有效。
bindingProvider.getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 30000);
bindingProvider.getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 60000);
給人感覺,有多種不同的實作!小紅帽RedHat給出的示例是針對JBoss,看起jdk有些不一樣。
public void testConfigureTimeout() throws Exception
{
//Set timeout until a connection is established
((BindingProvider)port).getRequestContext().put("javax.xml.ws.client.connectionTimeout", "6000");
//Set timeout until the response is received
((BindingProvider) port).getRequestContext().put("javax.xml.ws.client.receiveTimeout", "1000");
port.echo("testTimeout");
}
代碼看起來跟引入的包名比對度高,但是實測不生效。
而Github上的資料顯示,不同的環境下,采用的配置有些不一樣,也沒有一個統一的标準。
A little overview of several implementations:
// Weblogic JAX-WS properties
((BindingProvider) port).getRequestContext().put("com.sun.xml.ws.connect.timeout", timeout);
((BindingProvider) port).getRequestContext().put("com.sun.xml.ws.request.timeout", timeout);
// JDK JAX-WS properties
((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", timeout);
((BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", timeout);
// JBOSS CXF JAX-WS properties, warning these might change in the future (CXF-5261)
((BindingProvider) port).getRequestContext().put("javax.xml.ws.client.connectionTimeout", timeout);
((BindingProvider) port).getRequestContext().put("javax.xml.ws.client.receiveTimeout", timeout);
小節,對于JAX-WS的逾時配置,需要依據自身的環境配置來決定。預設的逾時時間是30s連接配接,響應逾時是60s,這個可以參與apache cfx官網。未驗證。
參考
https://www.igorkromin.net/index.php/2018/12/06/setting-jax-ws-webservice-client-timeout-values-correctly-within-a-weblogic-12c-container/
https://github.com/javaee/metro-jax-ws/issues/1166
https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform/6/html/development_guide/develop_a_jax-ws_client_application
http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html#ClientHTTPTransport(includingSSLsupport)-Example 搜尋一下timeout可以查找到配置說明。
Attribute | Description |
---|---|
| Specifies the amount of time, in milliseconds, that the client will attempt to establish a connection before it times out. The default is 30000 (30 seconds). 0 specifies that the client will continue to attempt to open a connection indefinitely. |
| Specifies the amount of time, in milliseconds, that the client will wait for a response before it times out. The default is 60000. 0 specifies that the client will wait indefinitely. |