我的问题是我调用了一个需要超过60秒才能响应的远程Web服务,这会导致超时异常。我不希望任何超时检查:我只是希望发件人等到Web服务结束。我试着设置:
HttpSession httpSession = getThreadLocalRequest().getSession();
httpSession.setMaxInactiveInterval(120000);
getThreadLocalRequest().setAttribute("session", httpSession);
修改 web.xml 会话超时(即使我不认为它与我的问题有关)来创建自定义HttpRequest。超时仍然存在。有没有办法关闭这个检查?
答案 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);