Spring MVC: возможна ли RESTful веб-служба + интеграция BlazeDS в одном веб-приложении?
У меня есть веб-приложение Spring MVC, которое предоставляет веб-сервисы RESTful через класс контроллера (аннотированный @Controller), у которого есть методы, сопоставленные с конкретными типами запросов и сигнатурами с помощью аннотаций @RequestMapping.
Я попытался интегрировать адрес назначения службы 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? Если так, то может ли кто-нибудь сказать мне, что может быть, что я делаю не так?
Заранее спасибо за помощь.
1 ответ
Да, это возможно, но требует немного дополнительной настройки.
По сути, вам нужно создать двух отдельных диспетчеров, каждый из которых имеет свой путь.
<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
в приведенном выше примере) - Один для Spring MVC (назван
spring-mvc-servlet.xml
в приведенном выше примере) - Один для Flex (названный
flex-servlet.xml
в приведенном выше примере)
Проверьте этот раздел из документации Spring/BlazeDS для получения дополнительной информации.