Подтвердить что ты не робот

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

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

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

xsd: строка java.lang.String

xsd: integer java.math.BigInteger

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

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

4b9b3361

Ответ 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;
     }

}