我目前正在使用axis2编写Java WebService。但是,一个特定的请求需要我在另一台服务器上持续轮询状态大约3-10秒的时间。
我想使用Thread.sleep像每500 mili一样进行轮询3秒。它是否有任何影响,如性能问题或任何人都可以提出更好的想法?
EDIT 我的架构是这样的
客户< ---> axis2< --->服务器轮询3-10秒
答案 0 :(得分:1)
另一种模式是让原始调用者返回一个received_ok标志,然后在从第二个服务器返回时将结果存储在服务器上。然后第一台服务器将重新连接,然后您可以返回结果或它们尚未返回的事实。这样做的好处是您可以将轮询委托给另一个实例,而不是占用原始服务器。
答案 1 :(得分:1)
有许多不同的选择:
如果您可以更改客户端,那么将等待移动到客户端可能是个好主意。这意味着服务器没有任何线程挂起。
因此,您将拥有两个Web服务,一个用于初始化请求,第二个用于获取结果。客户端(不是轴服务器)将调用第一个Web服务,然后第二个可能多次调用。
这样做的好处是您不必对服务器中的线程进行任何操作(这可以大大简化生活)。线程代码在客户端。
如果您最终在服务器中休眠,请确保您有足够的线程,如果您使用的是Tomcat,请参阅Best practices for configuring Apache / Tomcat