我有一个 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-servlet.xml
)flex-servlet.xml
)查看 Spring/BlazeDS 文档中的本节以获取更多信息。