java - 架构师迫切希望使用 SOAP over JMS

标签 java soap web-services jms soa

我过去曾使用 JMS 构建应用程序并且效果很好。现在我与喜欢使用规范的架构师一起工作:SOAP over Java Message Service 1.0。

这个规范接缝过于复杂。 我没有看到很多实现(除了插入规范的供应商之外)。

这里有人在生产环境中使用这个规范吗? 使用此规范的主要好处是什么?

链接:http://www.w3.org/TR/2009/CR-soapjms-20090604/

最佳答案

我在使用基于 JMS 的 SOAP 时运气不佳。如果它用于即发即弃操作(WSDL 中没有定义响应消息),它确实有一定意义。在这种情况下,您可以使用 WSDL 生成客户端框架,并且可以将 WSDL 存储在您的服务注册表中。此外,您还可以获得 JMS 的所有常见优势(解耦发送方和接收方、负载平衡、优先级排序、安全性、桥接到多个目的地 - 例如非侵入式审计)。

另一方面,SOAP 主要用于请求/回复类型的操作。通过 JMS 实现请求/回复模式会引入以下问题:

  • 无法正确处理超时。您永远不知道请求是否仍在等待交付或卡在被调用的组件中。
  • 响应通常在临时队列中发送。如果客户端在收到响应之前断开连接,并且没有在响应消息上明确设置生存时间,临时队列可能会卡在 JMS 服务器中,直到您重新启动它。
  • 中间有一个 JMS 服务器会显着增加往返时间并增加不必要的复杂性。
  • JMS 提供了一种可靠的传输介质,可以将发送方与接收方分离,但在请求/回复的情况下,客户端不应与服务器分离。客户端需要知道服务器是否已启动且可用。

我能想到的唯一优点是可以在客户端不知道的情况下移动服务器或进行负载平衡,但是使用 UDDI 和 HTTP 负载平衡器是更好的解决方案。

关于java - 架构师迫切希望使用 SOAP over JMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2629366/

相关文章:

java - ActionListener 收到一个错误,它说(Finals 不是抽象的,并且不会覆盖抽象方法)

java - 如何使用 Axis2 获取请求和响应?

android - 使用半径的 Android 版 Google 地方搜索

web-services - 将 SOAP 转换为 REST

java - 如何使用 CXF 在服务器端启用压缩?

php - 使用 PHP 调用涉及枚举的 Web 服务 (SOAP)

java - 无法在独立的 java 应用程序上运行 PJSIP-JNI 包装器

java - 如何使用 Java 推断自定义注释中的信息

java - Spring Data 仅使用 EntityGraph 抛出 EntityNotFoundException

python - 如何在 Python 中伪造 SOAP 响应?