java Web服务请求超时

时间:2013-11-14 11:46:07

标签: java web-services http timeout cxf

我的问题是我调用了一个需要超过60秒才能响应的远程Web服务,这会导致超时异常。我不希望任何超时检查:我只是希望发件人等到Web服务结束。我试着设置:

HttpSession httpSession = getThreadLocalRequest().getSession();
httpSession.setMaxInactiveInterval(120000);
getThreadLocalRequest().setAttribute("session", httpSession);

修改 web.xml 会话超时(即使我不认为它与我的问题有关)来创建自定义HttpRequest。超时仍然存在。有没有办法关闭这个检查?

2 个答案:

答案 0 :(得分:0)

httpSession.setMaxInactiveInterval不是你想要的。 您可能希望在URLConnection上设置connectTimeout和readTimeout。 如何做到这一点取决于您使用什么工具来调用远程Web服务。

您是否可以添加有关该服务的更多详细信息,如果它是SOAP服务,REST服务等,以及您用于调用该服务的库?

答案 1 :(得分:0)

找到解决方案:

/* Connect to the service */
ClientProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
factoryBean.setServiceClass(MyService.class);
factoryBean.setAddress("service-url");
myService = (MyService) factoryBean.create();
/* Retrive HTTP client policy and set the receive timeout */
Client client = ClientProxy.getClient(myService);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = httpConduit.getClient();
httpClientPolicy.setReceiveTimeout(timeoutMilliseconds);