Spring MVC: возможна ли RESTful веб-служба + интеграция BlazeDS в одном веб-приложении? - PullRequest
3 голосов
/ 29 октября 2010

У меня есть веб-приложение Spring MVC, которое предоставляет веб-службы RESTful через класс контроллера (аннотированный @Controller), методы которого сопоставлены с конкретными типами запросов и сигнатурами с помощью аннотаций @RequestMapping.

Я пыталсяинтегрировать адрес назначения службы BlazeDS в смесь путем 1) добавления прослушивателя HttpFlexSession в файл web.xml, 2) добавления объявлений flex: message-broker и flex: remoting-destination в файл конфигурации контекста моего приложения Spring и 3) добавленияgeneric /WEB-INF/flex/services-config.xml.

Вышеуказанные шаги интеграции BlazeDS, похоже, скрыли мои веб-службы RESTful, поскольку кажется, что запросы больше не направляются в методы контроллера.

Возможно ли это сделать, т. Е. Иметь одно веб-приложение, которое 1) обслуживает HTTP-запросы с помощью методов контроллера сопоставленных запросов и 2) обслуживает вызовы методов удаленных объектов (т. Е. Из клиента Flex) черезСервис BlazeDS?Если так, то может ли кто-нибудь сказать мне, что может быть, что я делаю не так?

Заранее спасибо за вашу помощь.

1 Ответ

4 голосов
/ 29 октября 2010

Да, это возможно, но требует немного дополнительной настройки.

По сути, вам нужно создать два отдельных диспетчера, каждый из которых имеет свой путь.

<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
    <name>flex</name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <name>spring-mvc</name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>flex</servlet-name>
    <url-pattern>/messagebroker/*</url-pattern>
 </servlet-mapping>
<servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>/app/*</url-pattern>
 </servlet-mapping>

Теперь запрашивает http://yourapp/app/somewhere направляются в Spring MVC, а запросы к http://yourapp/messagebroker направляются через BlazeDS.

Кроме того, вам необходимо разбить ваши контекстные файлы Spring на три:

  • Общий контекст (с именем applicationContext.xml в приведенном выше примере)
  • Один для Spring MVC (с именем spring-mvc-servlet.xml в приведенном выше примере)
  • Один для Flex (с именемflex-servlet.xml в приведенном выше примере)

Проверьте этот раздел в документации Spring / BlazeDS для получения дополнительной информации.

...