我正在尝试为JAX WS和Http Post调用设置连接和请求超时。 我的代码有效,但最多只有20秒。 也就是我可以将超时值更改为5秒,2秒,它可以正常工作,但将超时值设置为30秒将超时20秒,将超时值设置为60秒仍将在20秒时超时。 有人知道最多20秒设置在哪里吗?
对于JAXWS:
//This works, timed out in 10 seconds
((BindingProvider) soapPort).getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, 10000);
// This would time out in 20 seconds!!!
((BindingProvider) soapPort).getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, 60000);`
对于Http:
// This works, timed out in 10 seconds
HttpConnectionParams.setConnectionTimeout(params, 10000);
// This would time out in 20 seconds!!!
HttpConnectionParams.setConnectionTimeout(params, 50000);
答案 0 :(得分:0)
Glassfish的默认JAX-WS运行时为Metro 2.0。请参阅5.6. HTTP Timeouts中的Metro guide部分,我们有:
// setConnectTimeout()
int timeout = ...;
Map<String, Object> ctxt = ((BindingProvider)proxy).getRequestContext();
ctxt.put(JAXWSProperties.CONNECT_TIMEOUT, timeout);
// setReadTimeout()
int timeout = ...;
Map<String, Object> ctxt = ((BindingProvider)proxy).getRequestContext();
ctxt.put("com.sun.xml.ws.request.timeout", timeout);
仅作为指南,您可以看到Websphere有三个参数(在Metro 2.0中只有两个),它们是:
CONNECTION_TIMEOUT
:WebSphere JAX-WS客户端等待建立http / https连接的时间(默认为180秒)WRITE_TIMEOUT
:客户端等待完成发送请求的时间(默认为300秒)RESPONSE_TIMEOUT
:客户端等待完成接收响应的时间(默认为300秒)