我发现有关CXF的难题。 我的问题描述如下:
我有两台服务器A和B实现相同的服务。
客户端同时向服务器A发送请求(例如:100个线程的100个请求)。当客户端从服务器A接收到60个响应时,服务器A被挂起。因此,A中客户端的40个请求的其余部分将被转移到服务器B.服务器B将响应客户端。
我可以编写一个Java类来捕获A中客户端的40个其余请求并将它们推送到B中以响应客户端吗?你能给我一个实现这个Java类的建议吗?
客户端和服务器是根据http://cxf.apache.org/docs/a-simple-jax-ws-service.html
中的示例实现的致以最诚挚的问候,
THO
答案 0 :(得分:0)
通常,我没有看到将活动请求从一个服务器移动到另一个服务器的实现。我看到的典型解决方案是:
优点:
缺点:
答案 1 :(得分:0)
您正在寻找错误的解决方案,WebServices通常是同步操作。同步我的意思是说,webservice客户端发送请求并等待服务器响应,如果服务器没有响应设置超时(在webservice客户端你可以设置连接超时),请求终止连接超时错误或任何其他异常,其客户端决定是否重新发送错误或将错误传播到上游系统。在您的情况下,您可以重新发送剩余的请求并使用负载均衡器,以便将请求路由到其他服务器。
另一种解决方案是将JMS与客户端确认一起使用,这样只有在成功处理请求的情况下才会删除请求。如果有任何错误,您不会删除请求。在这种情况下,假设您暂停服务器,因为处理不成功,消息符合其他服务器JMS侦听器处理请求的条件。
注意:如果您已经开发了Web服务,则CXF提供JMS传输