【问题标题】:What is JAXB and JAXRS ? How are they related?什么是 JAXB 和 JAXRS?它们有什么关系?
【发布时间】:2013-07-31 20:42:16
【问题描述】:

抱歉这个直率的问题。但是许多人日复一日地使用这两个术语,但我不知道。我对此进行了一些研究,并分别知道它是什么。但不明白它是如何相关的。我先分享一下我对这两个的理解。

JAXB 是支持转换的 XML 到 Java 绑定技术 模式和 Java 对象之间以及 XML 实例文档之间 和 Java 对象实例。在内部 JAXB 执行所有这些转换 在 xml 和 java 之间。这是一个 xml 解析器,然后它知道什么 xml 中的组件对应于 java 中的内容,它会中断。 从 JAXB 转换此答案是由 xjc (或 密码插件)。映射可能像

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】:

    你的理解基本正确。 JAXB 和 JAX-RS 都是具有多种实现的 Java Community Process (JCP) 标准。

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

    JAX-RS - 为创建 RESTful 服务定义标准化元数据和运行时 API。默认情况下,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;
         }
    
    }
    

    【讨论】:

    • 非常感谢。但我有 2 个问题。 1)“默认情况下,应用程序/xml媒体类型JAX-RS将使用JAXB”是什么意思。那么其他媒体类型会发生什么。 2)你引用的例子强调了什么。请澄清。
    • 我在评论 1 中的第二个问题得到了解决。但是在上面的示例中,您说“JAXB impl 将用于将 Customer 的实例转换为 XML”。此代码是内部代码还是在示例代码 sn-p 本身中?如果在例子中你能告诉行号吗?
    • 您可以通过提供自定义MessageBodyReader/MessageBodyWriter 来覆盖application/xml 的默认处理。对于其他媒体类型,它取决于。 application/json 媒体类型很流行,但 JAX-RS 没有定义默认绑定应该是什么,实现已经提出了自己的默认值。这是一个例子:blog.bdoughan.com/2013/07/oracle-weblogic-1212-now-with.html
    • @HarishKayarohanam - 默认情况下,所有 JAXB 交互都是在幕后为您完成的。即使您不直接接触 JAXB 代码,也将使用您在类中提供的任何 JAXB 元数据。
    • 哦,好的。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2019-07-22
    • 2012-03-12
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多