Java客户端和Java EE服务器通信

时间:2015-03-06 23:33:43

标签: rest java-ee architecture jax-rs jax-ws

我有一个架构问题。我希望Java客户端与Java EE服务器(Glassfish)通信。我不想使用远程EJB调用并使用GlassFish Application Client Container,我需要更轻量级的东西。所以我考虑通过HTTP进行呼叫。

从技术角度来看,RESTful似乎是最简单的方法。但我对建筑风格感到困惑。我的意思是,我不是创建一个根据资源来定义的系统,而是根据'方法'来定义。所以JAX-WS可能是合适的,但我更愿意不仅传输XML,而且只传输HTTP消息体中的原始数据。

我应该考虑servlet还是其他什么?客户端 - 服务器通信的最佳实践是什么?

1 个答案:

答案 0 :(得分:1)

  

http消息正文中的原始数据

什么样的原始数据,比如在base64中编码的字节?这听起来并不像HTTP的典型工作。在EJB和Webservices之间的某个地方,有其他解决方案可能更适合并且可以更快。例如Apache Thrift或Protocol Buffers等消息传递/序列化框架。

无论如何,如果你采用HTTP方式:

有时可以将类似方法的端点建模为资源,但并不总是有效。如果没有资源,只需将其称为“Web API”,并且只保留对您有意义的RESTful概念和最佳实践。例如,缓存,漂亮的URL和利用HTTP状态代码和标题。

JAX-WS不仅限于传输XML。它虽然基于WSDL,但您可能不需要它。 REST API更易于处理且更灵活。

JAX-RS是构建任何类型的非WSDL Web API的不错选择。它提供了一个干净的API和许多有用的功能,即使您只将它用于简单的GET / POST操作。