Недавно я начал создавать открытый REST API с Java для Podcastpedia.org, и для реализации JAX-RS я выбрал Джерси , поскольку я считаю его «естественным» и мощным — вы можете узнать больше об этом, следуя Учебному пособию — Разработка и реализация REST API на Java с использованием Jersey и Spring. Поскольку Podcastpedia.org — это веб-приложение, созданное на основе Spring MVC, я хотел интегрировать обе платформы в podcastpedia-web , чтобы воспользоваться преимуществами функциональности бэкэнда, уже присутствующей в проекте. В любом случае, в этом коротком посте будут представлены шаги, которые мне пришлось предпринять, чтобы обеспечить интеграцию двух фреймворков.
Каркасные версии
Используемые текущие версии:
Весна и Джерси использовали версии
|
1
2
3
4
|
<properties> <spring.version>4.1.0.RELEASE</spring.version> <jersey.version>2.14</jersey.version></properties> |
Зависимости проекта
Расширение Jersey Spring должно присутствовать в classpath вашего проекта. Если вы используете Maven, добавьте его в файл pom.xml вашего проекта:
Фрагмент зависимости — pom.xml
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<!-- Jersey-Spring http://mvnrepository.com/artifact/org.glassfish.jersey.ext/jersey-spring3/2.4.1 --><dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-spring3</artifactId> <version>${jersey.version}</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> </exclusions></dependency><dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>${jersey.version}</version> <exclusions> <exclusion> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-base</artifactId> </exclusion> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> </exclusion> <exclusion> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> </exclusion> </exclusions></dependency> |
Примечание. Я явно исключил ядро Spring и библиотеки реализации Jackson, поскольку они уже были импортированы в проект с предпочтительными версиями.
Конфигурация Web.xml
В web.xml , в дополнение к конфигурации сервлета Spring MVC, я добавил конфигурацию jersey-servlet, которая будет отображать все запросы, начиная с /api/ :
Фрагмент конфигурации из web.xml
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<servlet> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring/application-context.xml </param-value> </init-param> <load-on-startup>1</load-on-startup></servlet> <servlet-mapping> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <url-pattern>/</url-pattern></servlet-mapping> <servlet> <servlet-name>jersey-serlvet</servlet-name> <servlet-class> org.glassfish.jersey.servlet.ServletContainer </servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>org.podcastpedia.web.api.JaxRsApplication</param-value> </init-param> <load-on-startup>2</load-on-startup></servlet><servlet-mapping> <servlet-name>jersey-serlvet</servlet-name> <url-pattern>/api/*</url-pattern></servlet-mapping> |
Ну, вот и все … Если у вас есть какие-либо вопросы, напишите мне или прокомментируйте обсуждение ниже.
В следующем посте я представлю некоторые результаты этой интеграции, показывая, как вызывать один метод публичного API REST с помощью jQuery, чтобы динамически загружать последние эпизоды подкаста, так что следите за обновлениями.
| Ссылка: | Как интегрировать Джерси в приложение Spring MVC от нашего партнера по JCG Адриана Матеи в блоге Codingpedia.org . |