【问题标题】:java WebService request timeoutjava WebService 请求超时
【发布时间】:2013-11-27 09:57:41
【问题描述】:

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

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

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

【问题讨论】:

标签: java web-services http timeout cxf


【解决方案1】:

找到解决方案:

/* 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);

【讨论】:

    【解决方案2】:

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

    您能否添加有关该服务的更多详细信息,如果它是 SOAP 服务、REST 服务等,以及您使用什么库来调用该服务?

    【讨论】:

    • 它们是返回 XML 的肥皂服务。我正在使用 javax.xml.ws 包中的服务类打开连接。希望对您有所帮助...
    • 对不起,我没有使用 JAX-WS 的经验,我主要使用 groovy-wslite 调用 SOAP 服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多