Что такое JAXB и JAXRS? Как они связаны?

извините за этот тупой вопрос . Но многие используют эти 2 термина изо дня в день, но я не знаю .Я провел некоторое исследование по этому вопросу и знал, что это такое отдельно . Но не понимаю, как это связано . Сначала я поделюсь тем, что понял об этих двоих .

JAXB-это технология привязки XML к Java, позволяющая преобразования между объектами schema и Java и между документами экземпляра XML и Java-объектов. Внутренне JAXB делает все эти преобразования между xml и java . Это парсер xml, а затем он знает, что компонент в xml соответствует тому, что в java и ломается . Преобразование этого ответа из JAXB выполняется такими инструментами, как xjc ( или плагин codgen). Отображение может быть как

xsd: строка java.ленг.Строка

xsd: целочисленная java.математика.Типа BigInteger

разное . Это набор спецификаций для работы запросы. Это значит, что он говорит: "GET ("/foo") " означает обрабатывать get звонить с URL-адрес с именем /foo . В нем говорится только об этом . Как это делается ? Да, это называется реализацией данной спецификации . Есть количество реализации, такие как restlet, resteasy, jersey, apache cxf и т. д. Это аналог логики и способ ее реализации в математике . этот идея алгоритма-поиск по ведру .Это может быть реализовано любым способом . В терминах java jaxrs-это интерфейс, и эти 4 restlet, resteasy , Джерси, apache cxf являются реализациями взаимодействие.

теперь, пожалуйста, скажите, правильно ли я понимаю . Тогда расскажите, как они связаны . Пожалуйста помочь. Если возможно, наглядное объяснение будет более полезным.

1 ответов


ваше понимание в основном правильно. JAXB и JAX-RS являются стандартами Java Community Process (JCP) с несколькими реализациями.

JAXB - определяет стандартизированные метаданные и API среды выполнения для преобразования объектов домена Java в / из XML.

JAX-RS - определяет стандартизированные метаданные и API среды выполнения для создания служб RESTful. По умолчанию для application/xml тип носителя JAX-RS будет использовать JAXB для преобразования объектов в/из XML.

пример

в следующем примере, когда GET выполняется операция реализация JAX-RS вернет Customer. JAXB impl будет использоваться для преобразования этого экземпляра Customer к XML, который клиент фактически получит.

package org.example.service;

import javax.ejb.*;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import org.example.model.*;

@Stateless
@LocalBean
@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;
     }

}