Spring MVC:RESTful Web 服务 + BlazeDS 集成可以在同一 Web 应用程序中吗?

问题描述 投票:0回答:1

我有一个 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 客户端)? 如果是这样那我可能做错了什么?

java apache-flex spring spring-mvc blazeds
1个回答
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 进行路由。

此外,您需要将 spring 上下文文件分成三个:

  • 公共上下文(在上面的示例中名为
    applicationContext.xml
  • 一个用于 Spring MVC(在上面的示例中名为
    spring-mvc-servlet.xml
  • 一个用于 Flex(在上面的示例中名为
    flex-servlet.xml

查看 Spring/BlazeDS 文档中的本节以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.