代码之家  ›  专栏  ›  技术社区  ›  James Adams

Spring MVC:RESTful web服务+BlazeDS集成是否可以在同一个web应用程序中实现?

  •  3
  • James Adams  · 技术社区  · 15 年前

    我有一个Spring MVC web应用程序,它通过一个控制器类(用@controller注释)提供restfulweb服务,该类有通过@RequestMapping注释映射到特定请求类型和签名的方法。

    我试图将BlazeDS服务目标集成到这个组合中,方法是1)将HttpFlexSession侦听器添加到web.xml中,2)将flex:MessageBroker和flex:remoting目标声明添加到我的Spring应用程序上下文配置文件中,3)添加一个generic/web-INF/flex/services-config.xml。

    上面的BlazeDS集成步骤似乎已经占用了我的RESTful web服务,因为请求似乎不再被路由到controller方法。

    甚至有可能做到这一点吗,即有一个单独的web应用程序,1)通过请求映射控制器方法服务HTTP请求,2)通过BlazeDS服务服务远程对象方法调用(即从Flex客户机调用)?如果是这样,有人能告诉我我做错了什么吗?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Marty Pitt    15 年前

    是的,这是可能的,但它需要一些额外的配置。

    实际上,您需要创建两个独立的分派器,每个分派器具有不同的路径。

    <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 http://yourapp/messagebroker 穿过火焰。

    另外,您还需要将spring上下文文件分为三个:

    • 一个公共上下文(命名为 applicationContext.xml
    • 一个用于SpringMVC(命名为 spring-mvc-servlet.xml 在上面的例子中)
    • 一个用于Flex(命名为 flex-servlet.xml 在上面的例子中)

    this section 从Spring/BlazeDS文档获取更多信息。