gpt4 book ai didi

java - SOAP Web 服务回调架构?

转载 作者:行者123 更新时间:2023-12-02 12:23:39 25 4
gpt4 key购买 nike

我对 Web 服务、JAX-WS 等还是很陌生,所以可能是菜鸟问题......

因此,我想实现一个 Web 服务来使两个系统进行通信。 “客户端”系统对“服务器”系统上生成的事件感兴趣。但是“客户端系统”本​​身就是不同应用程序的服务器。服务器是 Java(tomcat 中的 WAR)。客户端是.Net。

应该只有一个客户端系统,但客户端系统内部有多个客户端进程,每个进程都对不同类别的事件感兴趣。

我将实现服务器端和测试客户端。其他人将实现 .Net 代码。

运行顺序应该沿着这条线:

  • 服务器正在运行...
  • 客户端发起对话,向服务器“注册”,并请求一些初始数据。
  • 服务器保留已注册客户端的端点列表
  • 在服务器中有一个监听器,当某些事件发生时会收到通知。然后它将遍历注册客户列表并将事件转发给每个人
  • 在某些时候,客户端可以“取消注册”而不通知服务器它不想再接收事件。

  • 首先,这听起来像是合理可行的吗?

    并且是否有一个标准的内置机制,使用 SOAP(服务器上的 JAX-WS,客户端可用的任何 .Net)——服务器可以使用它从客户端获取回调端点?

    例如,我使用 RMI 做了一些非常类似的事情,在这种情况下,客户端可以发送一个远程引用给自己,服务器可以稍后存储 ant 引用。

    最后,是否有一个标准库来存储端点引用,进行(集体)回调,并可能使列表保持最新,删除不响应的客户端所以一些“ping”调用?

    为清楚起见:我需要的不仅仅是带有回调的异步方法:来自客户端的一条消息将生成从服务器到客户端的许多回调消息。

    最佳答案

    通过使用 polling and callbacks 支持基于 WSDL 的服务的异步客户端.在你的情况下,我认为要求相对更复杂。

    Oracle 融合中间件 doc page概述了一个可以帮助您的方案。它详细介绍了一种方法,该方法允许客户端发送生成 HTTP 202(已接受)的请求,然后客户端等待消息队列上的响应。在您的情况下,可以从下面显示的场景中调整场景。

    Client callbacks

    为每个回调类别启动多个响应队列。客户端可以通过为队列提供客户端和类别 ID 来过滤它们。这将作为每个客户端或每个客户端下管理的进程的回调机制。 MDB 可以由文件存储或数据库存储支持,以确保可靠性和一次性交付。

    当然,您不需要 Oracle fusionware 来实现这一点。您可以使用 RabbitMQ 或 Redis(带有事务)来确认在客户端收到消息。如果您的客户希望取消注册,请调用电话并停止收听队列。

    我不知道任何适合您的场景的行业标准,但我相信这个解决方案应该适合您。

    关于java - SOAP Web 服务回调架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15290984/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com