【问题标题】:JAX-RS 2.0 (Resteasy client) for server to server communication用于服务器到服务器通信的 JAX-RS 2.0(Resteasy 客户端)
【发布时间】:2023-04-01 19:45:02
【问题描述】:

这是一个相当笼统的问题,但您是否会使用 JAX-RS 在可能运行在两个不同主机上的两个服务器服务之间进行通信(利用 Resteasy 客户端)? 还是您会坚持使用更传统的 EJB 远程调用?

我有点担心以下潜在问题: - 维护一个 Http 连接池 - 将是每个客户端,而不是应用程序服务器的全局 - 如果两个服务都在同一主机上,则不进行优化(在这种情况下,EJB 调用将是本地的) - 授权(凭据):在配置 RestClient 与为 EJB 管理的容器时由应用程序本身管理 - 还有什么?

有什么反馈吗? 感谢您的帮助。

【问题讨论】:

    标签: java jax-rs resteasy


    【解决方案1】:

    JAX-RS 的大多数实现都有一个客户端 API,因此如果您在两个项目之间共享带注释的接口,则设置应该很容易。通信可能比其他解决方案慢,因为您必须序列化/反序列化所有参数和响应,通常采用 XML 或 JSON 等格式。我不会太担心优化进程间通信,因为与 localhost 的通信仍然比远程机器快得多。如果您希望公开此 API 的部分内容,那么无论性能如何,REST 都是最佳选择。

    如果通信只是内部的,并且您真的关心性能,那么您可以使用更专业的框架,例如 Protocol Buffers。 JAX-RS 是一个 JavaEE 标准,但是 REST 已经很成熟,这可能比性能更重要。对于更大型、更复杂、基于 JavaEE 的系统,一个常见的解决方案是使用消息传递和集成框架,如 Apache ActiveMQ 和 Apache Camel,它们还支持 JAX-WS/JAX-RS 框架,如 Apache CXF,并且应该对进程间进行优化沟通。不过,对于小型应用程序来说,这似乎有点过头了。

    我从未使用过 EJB,因此我无法将它与其他解决方案进行比较。据我所知,整个 EJB 方法过于复杂,在行业中并没有很好地适应。我也会担心跨平台兼容性。

    我会选择不太复杂且易于设置的解决方案。最后一件事:根据我的经验,当您希望两个应用程序经常在同一台机器上运行以致您想要对其进行优化时,它们可能应该首先组合在一个服务器应用程序中,或者可能是其中一个服务器应该是另一个的可选插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 2010-10-24
      • 2012-12-26
      • 2011-09-05
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多