Axis2,使用Thread.sleep进行阻塞

时间:2010-07-02 01:34:19

标签: java thread-safety axis2 sleep

我目前正在使用axis2编写Java WebService。但是,一个特定的请求需要我在另一台服务器上持续轮询状态大约3-10秒的时间。

我想使用Thread.sleep像每500 mili一样进行轮询3秒。它是否有任何影响,如性能问题或任何人都可以提出更好的想法?

EDIT 我的架构是这样的

客户< ---> axis2< --->服务器轮询3-10秒

2 个答案:

答案 0 :(得分:1)

另一种模式是让原始调用者返回一个received_ok标志,然后在从第二个服务器返回时将结果存储在服务器上。然后第一台服务器将重新连接,然后您可以返回结果或它们尚未返回的事实。这样做的好处是您可以将轮询委托给另一个实例,而不是占用原始服务器。

答案 1 :(得分:1)

有许多不同的选择:

如果您可以更改客户端,那么将等待移动到客户端可能是个好主意。这意味着服务器没有任何线程挂起。

因此,您将拥有两个Web服务,一个用于初始化请求,第二个用于获取结果。客户端(不是轴服务器)将调用第一个Web服务,然后第二个可能多次调用。

这样做的好处是您不必对服务器中的线程进行任何操作(这可以大大简化生活)。线程代码在客户端。

如果您最终在服务器中休眠,请确保您有足够的线程,如果您使用的是Tomcat,请参阅Best practices for configuring Apache / Tomcat