JAX-RS 2.0(Resteasy客户端),用于服务器到服务器的通信

时间:2014-05-19 13:39:05

标签: java jax-rs resteasy

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

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

有任何反馈意见吗? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

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

如果通信只是内部通信,并且真的关心性能,则可以使用更专业的框架,如Protocol Buffers。 JAX-RS是JavaEE标准,但REST已经很好地建立,这可能比性能更重要。对于更大型,复杂的基于JavaEE的系统,常见的解决方案是使用Apache ActiveMQ和Apache Camel等消息传递和集成框架,它们也支持Apache CXF等JAX-WS / JAX-RS框架,并且应该对进程间进行优化通讯。对于小型应用程序,这似乎有些过分。

我从未使用过EJB,所以我无法将其与其他解决方案进行比较。从我所听到的,整个EJB方法是复杂的方法,并没有在业界很好地适应。我也担心跨平台兼容性。

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