2010-10-29 1 views
3

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

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

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

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

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

ответ

4

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

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

<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.

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

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

Заканчивать this section из Spr ing/BlazeDS для получения дополнительной информации.

Смежные вопросы