我已经开发了Java服务中部署在Tomcat服务器中的WebService(WS1)。
如果满足某些条件,则WS1需要调用另一个WebService(WS2)来并行运行。这可能吗?还是WS1必须等待WS2的响应才能继续运行。这样做的重点是不会延迟WS1的响应,因为它不依赖WS2。但是,WS2触发器IS依赖于WS1,这就是我的问题的出路。
我对此问题的解决方法是创建一个单独的servlet,该servlet调用WS2而不延迟WS1。我该如何实施它,或者任何人都可以想到更好的解决方案?
最佳答案
这取决于您要实现的目标。如果您只想启动第二个WS,则可以创建一个新的本地线程并进行调用。第二个WS甚至可能支持异步调用,因此调用它后不会被阻塞。创建一个新线程将如下工作。
首先,您需要一个用于该线程的类。此类将与WS2进行通信:
class ThreadForWS2 extends Thread {
public void run() {
// invoke WS2 here
}
}
在WS1请求处理程序中,您只需要启动此线程即可,例如:
Thread threadForWS2 = new ThreadForWS2();
threadForWS2.start();
就是这样,但是当然在Java中有很多方法可以创建另一个线程。这取决于您研究最佳的解决方案。