Spring MVC:在同一Web应用程序中可能实现RESTful Web服务+ BlazeDS集成吗?
问题内容:
我有一个Spring MVC Web应用程序,它通过控制器类(用@Controller注释)提供RESTful
Web服务,该类具有通过@RequestMapping批注映射到特定请求类型和签名的方法。
我试图通过以下方法将BlazeDS服务目标集成到混合中:1)将HttpFlexSession侦听器添加到web.xml,2)将flex:message-
broker和flex:remoting-destination声明添加到Spring应用程序上下文配置文件中,以及3)添加通用的/WEB-
INF/flex/services-config.xml。
上面的BlazeDS集成步骤似乎已经使我的RESTful Web服务更加完善,因为似乎不再将请求路由到控制器方法。
甚至有可能做到这一点,即拥有一个Web应用程序,其1)通过请求映射的控制器方法为HTTP请求提供服务,以及2)通过BlazeDS服务为远程对象方法调用(即来自Flex客户端)提供服务?如果是这样,那么有人可以告诉我我做错了什么吗?
在此先感谢您的帮助。
问题答案:
是的,有可能,但是需要一些额外的配置。
本质上,您需要创建两个单独的调度程序,每个调度程序具有不同的路径。
<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文档中查看本节以获取更多信息。