В свое небольшое свободное время я сейчас пытаюсь восстановить один из моих предыдущих частных проектов, который никогда не выходил из приватной бета-версии (я напишу больше об этом, как только опубликую его) Проект состоит из многофункционального клиентского интерфейса 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 Юри Стрампфлохнера .
Статьи по Теме :