#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 для получения дополнительной информации.