Статьи

Пример веб-службы Jersey Hello World на Java

После Рестлета Jersey — еще одна популярная платформа с открытым исходным кодом для создания веб-сервисов RESTful на Java. Джерси соответствует спецификации JAX-RS и фактически является эталонной реализацией спецификации JAX-RS (JSR 311) (http://jsr311.java.net/nonav/releases/1.1/index.html). В прошлой статье мы видели пример RestWlet HelloWorld, а сегодня мы увидим пример Jersey HelloWorld . Как правило, когда разработчик думает о создании веб-службы RESTful с использованием Java, он предполагает, что использование сервера приложений Java EE является единственным способом создания такого типа приложений. Однако существуют более простые и легкие альтернативные методы для создания приложений RESTful, доступных с использованием Java SE. В этом руководстве демонстрируется одна из таких альтернатив, использующая веб-сервер Grizzly вместе с платформой Jersey REST. Основным вариантом использования Grizzly является компонент веб-сервера для сервера приложений GlassFish.

Пример Джерси HelloWorld

Вот простая веб-служба RESTful, созданная с использованием среды REST Jersey. Эта служба возвращает сообщение, когда запрос GET отправляется на URL «/ hello». Если запрос также содержит параметр запроса, он используется в ответном сообщении.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
 
@Path(value = "/hello")
public class JerseyHelloWorldRESTService {
 
@GET
@Path(value="/{param}")
public String hello(@PathParam(value = "param") String name){
 
return "Hello " + name + ", Welcome to Jersy world of RESTful web service";
}
 
}

ошибка

Начиная джерси гризли …

01
02
03
04
05
06
07
08
09
10
11
12
13
14
Jun 01, 2016 3:57:19 PM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
 
Jun 01, 2016 3:57:19 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class JerseyHelloWorldRESTService
Jun 01, 2016 3:57:19 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Exception in thread "main" java.lang.IllegalArgumentException: No container provider supports the type class org.glassfish.grizzly.http.server.HttpHandler
at com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:196)
at com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:134)
at com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory.createHttpServer(GrizzlyServerFactory.java:242)
at JerseyServer.startServer(JerseyServer.java:24)
at JerseyServer.main(JerseyServer.java:28)

Если вы получили указанную выше ошибку, вы можете добавить следующую зависимость maven (org.glassfish.jersey.containers jersey-container-jdk-http) для решения проблемы: com.sun.net.httpserver.HttpHandler »):

1
2
3
4
5
<dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-jdk-http</artifactId>
        <version>2.18</version>
    </dependency>

Вы можете изменить версию в соответствии с вашей средой. Помните, что сообщение об ошибке исключения говорит: «Ни один контейнерный провайдер не поддерживает интерфейс типа». Эта зависимость предоставляет контейнер, необходимый для запуска
Джерси

Остерегайтесь разницы между Джерси и Джерси2

Это очень легко перепутать с двумя различными версиями Джерси, в первой версии классы принадлежат com.sun.jersey, а во вторых классы фреймворка переходят в org.glassfish.jersey. По сути, отличается только пакет, но с различными зависимыми JAR, очень просто смешать JAR из Jersey 1.x с JAR из Jersey2.x и повысить до ужаса
NoClassDefFoundError и его близкий родственник ClassNotFoundException .

Название пакета изменилось, потому что команда Джерси теперь является частью Glassfish. Версия ниже 2 использовала пакет com.sun.jersey, но теперь, поскольку компания отличается, они используют org.glassfish.jersey. И да, есть еще некоторые различия в коде между версиями 1.x и 2.x. Ключ на вынос не смешивает классы и JARS из Джерси 1.x с Джерси 2.x, см.
здесь для более подробной информации об ошибке.

Это все о Джерси Привет мир пример . Структура Jersey — это больше, чем эталонная реализация JAX-RS. Jersey предоставляет собственный API, который расширяет инструментарий JAX-RS дополнительными функциями и утилитами для дальнейшего упрощения RESTful-сервиса и разработки клиентов. Джерси также предоставляет множество расширенных SPI, так что разработчики могут расширять Джерси в соответствии с их потребностями.

Другие учебники по веб-сервисам Java REST, которые вам могут понравиться

  • Разница между REST и SOAP веб-сервисами? ( ответ )
  • 10 вопросов о веб-сервисе REST ( ответ )
  • Пример Spring HelloWorld с использованием внедрения зависимостей ( учебное пособие )
  • Разница между PUT и POST в веб-службе REST? ( статья )
  • Как создать пул соединений JDBC с помощью Spring? ( учебник )
  • Как разобрать большой ответ JSON, используя Джексона? ( учебник )
  • 20 Hibernate Интервью Вопросы для разработчиков Java ( статья )
  • Разница между идемпотентными и безопасными методами в HTTP? ( ответ )
  • Как преобразовать массив JSON в массив строк в Java? ( учебник )

Ссылка

https://jersey.java.net/

PS — Если вы хотите узнать больше о разработке веб-сервисов RESTful в Java с использованием Jersey или Restlet, я предлагаю вам сначала прочитать хорошую книгу по JAX-RS, которая является стандартом для этих сред, например
RESTful Java с JAX-RS 2.0 , хорошая книга для изучения проектирования и разработки распределенных веб-сервисов.

PS — Если вы хотите узнать, как разрабатывать веб-службы RESTful с использованием Spring Framework, ознакомьтесь с Eugen Paraschiv’s
Отдых с весенним курсом . Недавно он запустил сертификационную версию курса, которая полна упражнений и примеров для дальнейшего закрепления концепций реального мира, которые вы узнаете из курса.