Зачем использовать JAX-RS / Jersey?


извините, эти вопросы звучат глупо, но после разработки некоторых из моих RESTful сервисов с использованием Джерси, я задал себе вопрос-если REST-это просто архитектура, а не протокол, такой как SOAP, зачем нам нужна спецификация, такая как JAX-RS?

Я на самом деле погуглил на такие вопросы, как "в чем разница между сервлетами и RESTful services через HTTP" и подытожить ответы сообщества, я получил:

  1. RESTful service development (на Джерси) является архитектура, которая по своей сути использует сервлеты.
  2. совместимые с JAX-RS инструменты, такие как Jersey, обеспечивают легкую сортировку-разбиение данных XML/JSON, помогая разработчикам.
  3. REST помогает нам использовать GET/POST/PUT / DELETE таким образом, что это гораздо эффективнее, чем обычные сервлеты.

согласно этим ответам, я думаю, если я напишу сервлет, который использует JAXB (для работы с автоматической сериализацией), и я эффективно использую GET/ POST / PUT / DELETE в своем коде сервлета, я не используйте такой инструмент, как Джерси, и, следовательно, JAX-RS.

Я знаю, что я ужасно ошибаюсь, передавая это заявление, пожалуйста, поправьте меня.

PS: это сомнение на самом деле пришло, когда мне пришлось разработать некоторые RESTful сервисы на PHP. Пройдя через некоторые из спокойных PHP-кодов, я понял, что это те же самые старые PHP-скрипты, с некоторыми вспомогательными методами для обработки XML/JSON.

2 74

2 ответа:

зачем использовать JAX-RS / Джерси?

Короткий Ответ:

потому что в делает развитие RESTful услуг проще.

Ответ

JAX-RS-это стандарт, который позволяет легко создать службу RESTful, которая может быть развернута на любом сервере приложений Java: GlassFish, WebLogic, WebSphere, JBoss и т. д.

JAX-RS является частью Java EE, и когда JAX-RS используется с другими Java EE технологии становится еще проще создать свой RESTful сервис:

  • EJB - бин сеанса используется в качестве реализации службы и также обрабатывает семантику транзакции.
  • JAX-RS - используется для предоставления сеансового компонента в качестве службы RESTful
  • JPA - используется для сохранения POJOs в базе данных. Обратите внимание, как EntityManager вводится в сеанс фасоль.
  • JAXB - используется для преобразования POJO в/из XML (в GlassFish он также может быть использован для преобразования POJO в/из JSON). JAX-RS по умолчанию обрабатывает взаимодействие с реализацией JAXB.

образец обслуживания JAX-RS

package org.example;

import java.util.List;

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

@Stateless
@LocalBean
@Path("/customers")
public class CustomerService {

    @PersistenceContext(unitName="CustomerService",
                        type=PersistenceContextType.TRANSACTION)
    EntityManager entityManager;

    @POST
    @Consumes(MediaType.APPLICATION_XML)
    public void create(Customer customer) {
        entityManager.persist(customer);
    }

    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Path("{id}")
    public Customer read(@PathParam("id") long id) {
        return entityManager.find(Customer.class, id);
    }

    @PUT
    @Consumes(MediaType.APPLICATION_XML)
    public void update(Customer customer) {
        entityManager.merge(customer);
    }

    @DELETE
    @Path("{id}")
    public void delete(@PathParam("id") long id) {
        Customer customer = read(id);
        if(null != customer) {
            entityManager.remove(customer);
        }
    }

    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Path("findCustomersByCity/{city}")
    public List<Customer> findCustomersByCity(@PathParam("city") String city) {
        Query query = entityManager.createNamedQuery("findCustomersByCity");
        query.setParameter("city", city);
        return query.getResultList();
    }

}

Для Получения Дополнительной Информации:

REST-это архитектура, которая по своей сути использует сервлеты.

нет, это не так. REST - это стиль архитектуры, который может быть реализован с помощью сервлетов, но по своей сути не использует их и не имеет ничего общего с Java.

JAX-RS-это спецификация JSR, определяющая Java API для веб-служб RESTful.

Джерси является конкретной реализацией JAX-RS.

о том, следует ли использовать Джерси или попытаться соответствовать спецификация JAX-RS, это вроде как до вас. Если это облегчает вашу работу, отлично! Если тебя никто не заставляет.