什么是JAXB和JAXRS?它们有什么关系?

问题描述 投票:18回答:1

抱歉这个直率的问题。但是很多人每天都使用这两个词,但我不知道。我对此进行了一些研究,知道它们分别是什么。但是不知道它是如何联系的。首先,我将分享我对这两个方面的了解。

JAXB是XML到Java的绑定技术,可实现转换在模式和Java对象之间以及在XML实例文档之间和Java对象实例。 JAXB内部完成所有这些转换在xml和java之间。这是xml的解析器,然后知道了什么xml中的组件与java中的组件相对应,并且会中断。JAXB对此答案的转换是通过xjc(或codgen插件)。映射可能像

xsd:string java.lang.String

xsd:integer java.math.BigInteger

JaxRs不同。这是一套处理规范要求 。意思是说“ GET(” / foo“)”意味着处理一个get用url / foo调用。它只说。怎么做的?对,就那个被称为此规范的实现。有数量诸如restlet,resteasy,jersey,apache cxf等的实现。这与逻辑和数学实现方式类似。的算法思想是桶搜索。这可以以任何方式实现。用Java术语JaxRs是接口,这4个restlet,resteasy,jersey,apache cxf是该接口的实现。

现在请说出我的理解是否正确。然后说出它们之间的关系。请帮忙 。如果可能的话,使用图片说明会更有帮助。

jaxb jax-rs resteasy restlet xml-binding
1个回答
19
投票

您的理解基本上是正确的。 JAXB和JAX-RS都是具有多个实现的Java社区过程(JCP)标准。

JAXB-定义标准化的元数据和运行时API,用于将Java域对象转换为XML。

JAX-RS

-定义标准化的元数据和运行时API,以创建RESTful服务。默认情况下,对于application/xml媒体类型,JAX-RS将使用JAXB将对象与XML相互转换。

示例

在下面的示例中,当执行GET操作时,JAX-RS实现将返回Customer。 JAXB实现将用于将Customer的实例转换为客户端将实际接收的XML。

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;

@Path("/customers")
public class CustomerResource {

    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Path("{id}")
    public Customer read(@PathParam("id") int id) {
        Customer customer = new Customer();
        customer.setId(id);
        customer.setFirstName("Jane");
        customer.setLastName(null);

        PhoneNumber pn = new PhoneNumber();
        pn.setType("work");
        pn.setValue("5551111");
        customer.getPhoneNumbers().add(pn);

        return customer;
     }

}
© www.soinside.com 2019 - 2024. All rights reserved.