Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在服务器之间传输请求cxf_Java_Cxf - Fatal编程技术网

Java 在服务器之间传输请求cxf

Java 在服务器之间传输请求cxf,java,cxf,Java,Cxf,我发现了一个与CXF相关的难题。 我的问题描述如下: 我有两台服务器A和B,它们实现相同的服务 客户端同时向服务器A发送请求(例如:100个线程发送100个请求)。当客户端从服务器A接收到60个响应时,服务器A被挂起。因此,A中客户端的其余40个请求将传输到服务器B。服务器B将响应客户端 我是否可以编写一个Java类来捕获a中客户端的其余40个请求,并将它们推入B以响应客户端?你能给我一个实现这个Java类的建议吗 客户机和服务器是根据中的示例实现的 致以最良好的祝愿 通常,我看不到将活动请求从

我发现了一个与CXF相关的难题。 我的问题描述如下:

我有两台服务器A和B,它们实现相同的服务

客户端同时向服务器A发送请求(例如:100个线程发送100个请求)。当客户端从服务器A接收到60个响应时,服务器A被挂起。因此,A中客户端的其余40个请求将传输到服务器B。服务器B将响应客户端

我是否可以编写一个Java类来捕获a中客户端的其余40个请求,并将它们推入B以响应客户端?你能给我一个实现这个Java类的建议吗

客户机和服务器是根据中的示例实现的

致以最良好的祝愿


通常,我看不到将活动请求从一台服务器移动到另一台服务器的实现。我看到的典型解决方案是:

  • 拥有某种负载平衡器
  • 拥有某种会话管理解决方案(例如Spring会话)。因为它在HttpSession上运行,所以它独立于CXF。(相信我,至少你的安全方案是这样的。)
  • 如果要取出服务器A,请防止从负载平衡器向服务器A分配新请求
  • 当当前请求耗尽时,您可以关闭A并对其执行任何需要的操作
  • 优点:

    • 请求排出比会话排出快得多
    • 会话管理解决方案意味着无需用户停机
    • 会话管理解决方案还意味着您不需要粘性会话
    缺点:

    • 您的会话使用必须向后兼容(至少对于版本)
    • 如果您的会话使用率很高,则会降低效率
    • 您需要确保没有长时间运行的请求

      • 您看到的是错误的解决方案,Web服务通常是同步操作。通过同步,我的意思是说,webservice客户端发送一个请求并等待服务器响应,如果服务器在设置的超时时没有响应(在webservice客户端中,您可以设置连接超时),则请求会因连接超时错误或任何其他异常而终止,它的客户端决定是重新发送错误还是将错误传播到上游系统。在您的情况下,您可以重新发送剩余的请求,并使用负载平衡器将请求路由到其他服务器。 另一种解决方案是将JMS与客户端确认一起使用,这样只有在成功处理请求的情况下才会删除请求。如果有任何错误,您不会删除请求。在本例中,假设您挂起服务器,因为处理不成功,所以这些消息可以由其他服务器JMS侦听器处理请求


        注意:如果您已经开发了Web服务,CXF提供JMS传输

        您的请求是否非常耗时?我不理解您的问题。在这里,我想停止服务器A,但我不想丢失在AThanks等待您建议的客户端的请求。事实上,我不使用JMS传输。我只使用了UDP传输(),这是强制性要求。我是CXF的新成员,所以我不太了解CXF中的所有技术。如果可能的话,您能给我更详细的解决方案吗?另外,我认为我们可以在客户端和服务器之间设置异步传输您的请求在服务器端的处理时间是多少?是的,如果客户端的处理时间很长,那么您可以使用异步传输,这样线程就可以执行其他任务,同时请求发送到服务器,服务器计算并重新复制到客户端。计算时间就是处理时间。我可以像黑匣子一样使用CXF。我不知道如何查询服务器端尚未处理的到达请求。