Зачем использовать JAX-RS / Jersey?
извините, эти вопросы звучат глупо, но после разработки некоторых из моих RESTful сервисов с использованием Джерси, я задал себе вопрос-если REST-это просто архитектура, а не протокол, такой как SOAP, зачем нам нужна спецификация, такая как JAX-RS?
Я на самом деле погуглил на такие вопросы, как "в чем разница между сервлетами и RESTful services через HTTP" и подытожить ответы сообщества, я получил:
- RESTful service development (на Джерси) является архитектура, которая по своей сути использует сервлеты.
- совместимые с JAX-RS инструменты, такие как Jersey, обеспечивают легкую сортировку-разбиение данных XML/JSON, помогая разработчикам.
- REST помогает нам использовать GET/POST/PUT / DELETE таким образом, что это гораздо эффективнее, чем обычные сервлеты.
согласно этим ответам, я думаю, если я напишу сервлет, который использует JAXB (для работы с автоматической сериализацией), и я эффективно использую GET/ POST / PUT / DELETE в своем коде сервлета, я не используйте такой инструмент, как Джерси, и, следовательно, JAX-RS.
Я знаю, что я ужасно ошибаюсь, передавая это заявление, пожалуйста, поправьте меня.
PS: это сомнение на самом деле пришло, когда мне пришлось разработать некоторые RESTful сервисы на PHP. Пройдя через некоторые из спокойных PHP-кодов, я понял, что это те же самые старые PHP-скрипты, с некоторыми вспомогательными методами для обработки XML/JSON.
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, это вроде как до вас. Если это облегчает вашу работу, отлично! Если тебя никто не заставляет.