如何在Spring中添加过滤器(使用BlazeDS)

时间:2010-08-31 15:41:28

标签: spring filter blazeds

我想添加一个过滤器来映射网址中的特定路径。

我的服务器端使用Spring 2.5.x,BlazeDS(servlet)和TomCat服务器。

所以,我的web.xml文件是这样组成的:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring-main-config.xml
    </param-value>
</context-param>

<filter>
    <filter-name>FacebookOAuthFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>       
</filter>

<filter-mapping>
    <filter-name>FacebookOAuthFilter</filter-name>
    <url-pattern>/fbauth</url-pattern>
</filter-mapping>

 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Spring MVC Servlet (that will route HTTP requests to BlazeDS) -->
<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-main-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

当我启动TomCat服务器时,会捕获一个异常:

[BlazeDS][ERROR] [Configuration] MessageBroker failed to start:   Exception: flex.messaging.config.ConfigurationException: MessageBroker already defined from MessageBrokerServlet with init parameter messageBrokerId = '_messageBroker'
at flex.messaging.MessageBroker.registerMessageBroker(MessageBroker.java:1916)

请你帮帮我吗?

非常感谢,

安东尼

2 个答案:

答案 0 :(得分:0)

我相信你在这里加载错误的配置文件......

<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-main-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

你已经在文件的前几行加载了/WEB-INF/spring-main-config.xml

http://www.springbyexample.org/examples/simple-flex-webapp.html

答案 1 :(得分:0)

这不是真正的Flex或BlazeDS问题,它是Spring的一个更基本的错误配置。

您配置了两个单独的Spring app-contexts,它们都具有相同的bean定义集(/WEB-INF/spring-main-config.xml)。

<context-param>定义的app-context是与webapp关联的app-context。 `定义的app-context与servlet相关联。

由于你已经向两者提供了相同的bean文件,它将实例化并初始化同一组bean两次,第二次似乎失败,因为已经定义了MessageBroker

您需要将bean定义分解为两个集合,或者只删除第一个集合,然后使用servlet上下文。