После Рестлета 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? ( учебник )
Ссылка
PS — Если вы хотите узнать больше о разработке веб-сервисов RESTful в Java с использованием Jersey или Restlet, я предлагаю вам сначала прочитать хорошую книгу по JAX-RS, которая является стандартом для этих сред, например
RESTful Java с JAX-RS 2.0 , хорошая книга для изучения проектирования и разработки распределенных веб-сервисов.
PS — Если вы хотите узнать, как разрабатывать веб-службы RESTful с использованием Spring Framework, ознакомьтесь с Eugen Paraschiv’s
Отдых с весенним курсом . Недавно он запустил сертификационную версию курса, которая полна упражнений и примеров для дальнейшего закрепления концепций реального мира, которые вы узнаете из курса.
Ссылка: | Веб-служба Jersey Пример Hello World на Java от нашего партнера по JCG Джавина Пола из блога Javarevisited . |