GlassFish v3.0.1中的JAXWS和Http Post超时

GlassFish v3.0.1中的JAXWS和Http Post超时,glassfish,timeout,jax-ws,http-post,Glassfish,Timeout,Jax Ws,Http Post,我正在尝试为JAX WS和Http Post调用设置连接和请求超时。 我的代码有效,但最长只有20秒。 也就是说,我可以将超时值更改为5秒,2秒,它可以工作,但将超时值设置为30秒将在20秒时超时,将超时值设置为60秒仍将在20秒时超时。 有人知道最长20秒设定在哪里吗 对于JAXWS: //This works, timed out in 10 seconds ((BindingProvider) soapPort).getRequestContext().put(JAXWSPropertie

我正在尝试为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);

Glassfish的默认JAX-WS运行时为。请参阅中的部分,因此我们有:

// 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);
//setConnectTimeout()
int超时=。。。;
Map ctxt=((BindingProvider)proxy).getRequestContext();
put(JAXWSProperties.CONNECT\u超时,超时);
//setReadTimeout()
int超时=。。。;
Map ctxt=((BindingProvider)proxy).getRequestContext();
put(“com.sun.xml.ws.request.timeout”,超时);
仅作为参考,您可以看到的有三个参数(在Metro 2.0中只有两个),它们是:

  • CONNECTION\u TIMEOUT
    :WebSphere JAX-WS客户端将等待建立http/https连接的时间量(默认值为180秒)
  • WRITE\u TIMEOUT
    :客户端将等待完成发送请求的时间量(默认值为300秒)
  • RESPONSE\u TIMEOUT
    :客户端等待完成接收响应的时间量(默认为300秒)

  • 编辑我的帖子以添加代码对不起OT的评论,但我刚想在5月13日发布你最新问题的样式表,你就把它删除了。你还想知道答案吗?谢谢保罗,我也试过增加阅读时间,但没有任何区别。我怀疑这20秒可能是防火墙超时。你可以用做一点本地测试,但是放一个
    Thread.sleep(1000*秒)。标准JDK使用Metro作为JAX-WS运行时。