JAX-WS超时问题

时间:2010-02-07 17:59:09

标签: java web-services jax-ws

我在Sun轻量级http服务器上发布了Web服务端点。服务器与ThreadPool执行程序一起运行以进行连接(Executors.newCachedThreadPool())。 我也使用常规的Web服务客户端(也是JAX-WS)。

似乎每超过5分钟的呼叫,服务器(或客户端)结束当前的呼叫线程并打开一个新的线程。在服务器中,它看起来像是建立了新连接并尝试运行相同的操作。

这只发生一次,意味着“第二次通话”可能超过5分钟。

连接是否有默认超时?有没有办法配置它?

3 个答案:

答案 0 :(得分:5)

使用轻量级http服务器,连接将在5分钟后变为空闲。实现(查看ServerImplServerConfig)关闭空闲连接,并且当前没有公共属性来设置此空闲超时。如果您想要这种控件,可能需要使用servlet容器。或者您可以使用Jetty (which provides a SPI) instead of Sun default HttpServer

答案 1 :(得分:1)

我通常认为这是一个客户端问题(但是 - 检查Pascal的答案)。客户端将具有已定义的超时值,并且会在操作时间过长时挽救。

e.g。在HttpClient中,您可以单独定义连接超时和读取超时(请参阅the configuration guide)。

如果该方法真正需要5分钟或更长时间,我将研究如何将该操作分解为更多离散操作,每个操作花费更短的时间。或者在后台进行处理,并为客户端提供一张票据,以便他们可以在以后接收结果而无需保持连接。

或者,您可能能够设置无限超时,但我不建议这样做,因为您的客户端理想情况下应该能够识别您的服务器由于问题而没有响应/配置错误等。

答案 2 :(得分:0)

实际上我可以通过使用Pascal提供的信息找到一个黑客(谢谢!)。 您可以通过设置系统属性-sun.net.httpserver.idleInterval来覆盖http服务器的空闲时间。