我看到了一个与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中的示例实现的
诚挚的问候,
发布于 2015-11-04 08:38:51
通常,我不会看到将活动请求从一台服务器移动到另一台服务器的实现。我看到的典型解决方案是:
优点:
与Session Draining
缺点:
发布于 2015-11-05 08:01:29
您看到的是错误的解决方案,WebServices通常是同步操作。所谓同步我的意思是,webservice客户端发送请求并等待服务器响应,如果服务器在设置超时时没有响应(在webservice客户端中,您可以设置连接超时),则请求因连接超时错误或任何其他异常而终止,其客户端决定是重新发送错误还是将错误传播到上游系统。在您的情况下,您可以重新发送剩余的请求并使用负载均衡器,以便将请求路由到其他服务器。
另一种解决方案是使用带有客户端确认的JMS,这样只有在成功处理请求的情况下才会删除请求。如果有任何错误,请不要删除请求。在这种情况下,假设您挂起了服务器,由于处理不成功,其他服务器的JMS侦听器有资格处理请求。
注意:如果您已经开发了JMS服务,则CXF提供JMS传输
https://stackoverflow.com/questions/33496353
复制