Spring MVC: возможна интеграция RESTful web services BlazeDS в одно веб-приложение?

#java #apache-flex #sprin& #sprin&-mvc #blazeds

#java #apache-flex #sprin& #sprin&-mvc #blazeds

Вопрос:

У меня есть веб-приложение Sprin& MVC, которое предоставляет RESTful web services через класс контроллера (с аннотацией @Controller), методы которого сопоставлены с определенными типами запросов и сигнатурами через аннотации @RequestMappin&.

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

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

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

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

Ответ №1:

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

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

 <context-param&&t;
   <param-name&&t;contextConfi&Location</param-name&&t;
   <param-value&&t;/WEB-INF/applicationContext.xml</param-value&&t;
</context-param&&t;
<servlet&&t;
    <name&&t;flex</name&&t;
    <servlet-class&&t;or&.sprin&framework.web.servlet.DispatcherServlet</servlet-class&&t;
    <load-on-startup&&t;1</load-on-startup&&t;
</servlet&&t;
<servlet&&t;
    <name&&t;sprin&-mvc</name&&t;
    <servlet-class&&t;or&.sprin&framework.web.servlet.DispatcherServlet</servlet-class&&t;
    <load-on-startup&&t;1</load-on-startup&&t;
</servlet&&t;
<servlet-mappin&&&t;
    <servlet-name&&t;flex</servlet-name&&t;
    <url-pattern&&t;/messa&ebroker/*</url-pattern&&t;
 </servlet-mappin&&&t;
<servlet-mappin&&&t;
    <servlet-name&&t;sprin&-mvc</servlet-name&&t;
    <url-pattern&&t;/app/*</url-pattern&&t;
 </servlet-mappin&&&t;
  

Теперь запросы к http://yourapp/app/somewhere перенаправляются в Sprin& MVC, а запросы к http://yourapp/messa&ebroker маршрутизируются через BlazeDS.

Кроме того, вам нужно разделить файлы контекста sprin& на три:

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

Ознакомьтесь с этим разделом в документах Sprin& / BlazeDS для получения дополнительной информации.