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

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

任何反馈?
谢谢你的帮助。

最佳答案

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方法都是复杂的方法,并且在行业中还没有很好地适应。我还担心跨平台兼容性。

我会选择一个不太复杂且易于设置的解决方案。最后一件事:根据我的经验,当您期望两个应用程序在同一台计算机上运行的频率如此之高以至于要对其进行优化时,它们可能应该首先合并在单个服务器应用程序中,或者也许是其中一个服务器应该是另一个服务器的可选插件。

09-04 19:23
查看更多