В свое небольшое свободное время я сейчас пытаюсь восстановить один из моих предыдущих частных проектов, который никогда не выходил из приватной бета-версии (я напишу больше об этом, как только опубликую его) Проект состоит из многофункционального клиентского интерфейса JavaScript с серверной частью Java-сервера, размещенного в Google AppEngine. В настоящее время я полностью переписываю его, и поэтому я начал с создания REST Api Jersey на стороне сервера, который предоставляет данные в формате JSON. Пример такого класса на Джерси:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
@Path("/sourcecodeitems")public class SourceCodeItemGateway { ... @GET @Produces(MediaType.APPLICATION_JSON) public List<sourcecodeitemdto> index(){ ArrayList<sourcecodeitemdto> listOfItems = new ArrayList<sourcecodeitemdto>(); for (SourceCodeItem item : sourceCodeItems) { listOfItems.add(new SourceCodeItemDTO(item)); } return listOfItems; } ... } |
Соответствующий web.config выглядит следующим образом:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<web-app version="2.5" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>Jersey Web Application</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.jsdev.myproject.service</param-value> </init-param> <init-param> <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey Web Application</servlet-name> <url-pattern>/backend/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>welcome.jsp</welcome-file> </welcome-file-list></web-app> |
Строка 7 указывает пакет, в котором лежат ваши ресурсы на Джерси, а строка 10 активирует функцию автоматического сопоставления ваших POJO с Json.
Интеграция с Spring
Чтобы интегрировать Jersey с Spring, сначала необходимо включить jersey-spring- <version> .jar, который поставляется вместе с пакетом Jersey. Включите его в свой путь сборки. Затем вы можете либо сконфигурировать свой ресурс в Джерси (выше SourceCodeItemGateway), используя аннотации Spring (@Component), либо сделать это на основе xml, как…
|
01
02
03
04
05
06
07
08
09
10
|
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean class="com.jsdev.mydevbook.service.SourceCodeItemGateway" name="sourceCodeItemGateway"> <property name="pingService" ref="pingService"> </property></bean> <bean class="com.jsdev.myproject.service.PingService" id="pingService"> </bean></beans> |
В строке 3 показана конфигурация bean-компонента класса ресурсов Jersey, а также настроенная зависимость (PingService), которая будет управляться и внедряться Spring. Наконец, вам нужно настроить файл web.config для правильного подключения Spring с Jersey:
|
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
|
<servlet> <servlet-name>jersey-servlet</servlet-name> <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.jsdev.myproject.service</param-value> </init-param> <init-param> <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>jersey-servlet</servlet-name> <url-pattern>/backend/*</url-pattern></servlet-mapping><context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-service.xml /WEB-INF/spring-data.xml </param-value></context-param> |
Обратите внимание на строку 3, как мы создаем экземпляр SpringServlet в Джерси. Строки 23 и 24 показывают путь к файлам конфигурации Spring. Ранее показанная конфигурация bean-компонента является выдержкой из spring-service.xml. Spring-data.xml должен содержать все, что связано с доступом к данным.
Справка: Интеграция Джерси со Spring от нашего партнера JCG Юри Стрампфлохнера из TechBlog Юри Стрампфлохнера .
Статьи по Теме :