区分Jersey,Jackson和JaxB API

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

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

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

所以我的问题是:基于Java EE JSON的Web服务的最新技术是什么,以及这些服务用作数据存储的内容(即Plaintext?RDBMS?对象数据服务?)

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

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

或者如果您更喜欢Hibernate,请使用Jackson Hibernate模块来处理读/写POHO时可能存在的边缘情况。

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

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

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

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

具体到泽西岛,它不仅限于JAX-RS API的实现。 它是一个框架,它通过扩展JAX-RSfunction构建了自己的一组API,并提供了进一步简化JAVA中REST API开发的附加function。

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

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