区分Jersey,Jackson和JaxB API

时间:2011-12-10 21:23:37

标签: java json java-ee rest jackson

嗨:我一直在内部使用Jackson进行JSON处理,我想将这些对象作为Jsons提供给外部API(REST)(现在,它们作为java对象存储在内部)。

显而易见的实现是编写某种查询引擎来读取请求,从底层数据存储中检索对象,然后使用Jackson将它们序列化为Jsons。

然而,我开始意识到已经有一些API可以用于组装这样的Web服务,负责处理许多平凡的细节(安全性,查询解析,REST协调)。例如,似乎可以使用泽西注释来定义REST服务....

所以我的问题是:基于Java EE JSON的Web服务有哪些最先进的技术,以及这些服务用作数据存储的内容(即明文?RDBMS?对象数据服务?)

最重要的是...... xml和json数据映射的不同apis之间的功能差异是什么,即jersey / Jackson / JaxB?

3 个答案:

答案 0 :(得分:4)

Jersey有一个插件可以使用JAXB注释对象并自动将它们序列化为JSON。泽西岛(JAX-RS)是一个非常好的产品。

您还可以在相同的对象和JPA提供程序(如Eclipse Link)上使用JPA注释,以满足您的大量数据库需求。基本关系数据库可以处理大多数网站的需求。

答案 1 :(得分:4)

除了使用Jackson的Jersey(以及像RESTeasy这样的其他JAX-RS impls)之外,您还可以使用jDBI之类的东西来首先在POJO中绑定关系数据。 它做了许多更大的ORM(比如Hibernate),但更容易用于大多数常见任务。

或者如果您更喜欢Hibernate,请使用Jackson Hibernate module来处理一些边缘情况,当读取/写入POHO时可能会出现JSON。

答案 2 :(得分:2)

JAVA发布了一些名为JAX-RS的规范,以使用J2EE标准化RESTfull Web服务的开发。这些规范只是定义而不是具体实现。

这些API(规范)有各种实现提供程序。 Jersey,RestEasy,RestLet,Apache-cxf是很少有这样的实现,可用于在JAVA中实现RESTfull服务。

具体到Jersey,它不仅限于JAX-RS API的实现。它是一个框架,它通过扩展JAX-RS功能构建了自己的一组API,并提供了额外的功能,以进一步简化JAVA中REST API的开发。

JAXB代表用于XML绑定的Java体系结构,这是JAVA提供的另一种规范,用于将Java对象编组和解组为XML,反之亦然。同样,它只是规范而不是具体的实现。

来到Jackson,它只是一个JSON处理器(通常是JAXB的一个实现),用于编组和解组从Java到JSON的对象。 Jersey在内部使用Jackson将Java对象转换为JSON,反之亦然。