Java soapweb服务回调体系结构?
我对web服务、JAX-WS等非常陌生,所以可能没有问题 因此,我想实现一个web服务,使两个系统进行通信。“客户端”系统对“服务器”系统上生成的事件感兴趣。但“客户端系统”本身就是一个不同应用程序的服务器。服务器是Java(tomcat中的WAR)。客户端是.Net 应该只有一个客户机系统,但是客户机系统中有几个客户机进程,每个进程都对不同类别的事件感兴趣 我将实现服务器端和测试客户端。其他人将实现.Net代码 运行顺序应沿着以下路线:Java soapweb服务回调体系结构?,java,.net,web-services,callback,jax-ws,Java,.net,Web Services,Callback,Jax Ws,我对web服务、JAX-WS等非常陌生,所以可能没有问题 因此,我想实现一个web服务,使两个系统进行通信。“客户端”系统对“服务器”系统上生成的事件感兴趣。但“客户端系统”本身就是一个不同应用程序的服务器。服务器是Java(tomcat中的WAR)。客户端是.Net 应该只有一个客户机系统,但是客户机系统中有几个客户机进程,每个进程都对不同类别的事件感兴趣 我将实现服务器端和测试客户端。其他人将实现.Net代码 运行顺序应沿着以下路线: 服务器正在运行 客户端启动对话,“注册”到服务器,并请求
为清楚起见,请注意:我需要的不仅仅是带有回调的异步方法:来自客户端的一条消息将生成从服务器到客户端的许多回调消息。异步客户端通过使用来支持基于WSDL的服务。就你而言,我认为要求相对比较复杂 Oracle fusion中间件概述了一个可以帮助您的场景。它详细介绍了一种方法,该方法允许客户端发送生成HTTP 202(已接受)的请求,然后客户端在消息队列上等待响应。在您的情况下,可以从下面显示的场景中调整场景 为每个回调类别启动多个响应队列。客户机可以通过为队列提供客户机和类别ID来过滤它们。这将作为每个客户机或在每个客户机下管理的进程的回调机制。MDB可以由文件存储或DB存储支持,以确保可靠性和一次性交付 当然,您不需要Oracle fusionware来实现这一点。您可以使用RabbitMQ或Redis(与事务一起)确认在客户端上收到消息。如果您的客户希望取消注册,请拨打电话并停止收听队列
我不知道有什么行业标准适合您的场景,但我相信此解决方案应该适合您。您似乎希望实现通知功能来通知任意匿名客户端 我建议您首先考虑如何使用SOAP消息传递信息。然后,您可以考虑如何使用java -jax—WS或其他非标准库来实现这一点。关键是,传输SOAP消息可能需要很大的限制或假设。例如,防火墙可能会阻止您的HTTP消息,客户端可能“只是客户端”,无法以服务器角色接收SOAP通知请求 注意:JAX-WS2.0中定义了异步回调机制,其中服务获取客户端的端点引用。这与Deepak Bala描述的WebLogic/Fusion专有解决方案提供的功能相同。Websphere有一个类似的专有异步解决方案。这些都不能满足您的需求,因为它们只允许每个请求有一个响应 SOAP选项: