Как добавить фильтр весной (с BlazeDS) - PullRequest
1 голос
/ 31 августа 2010

Я хочу добавить фильтр для сопоставления определенного пути в URL.

Моя серверная сторона использовала Spring 2.5.x, BlazeDS (сервлет) с сервером TomCat.

Итак, мой веб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 голосов
/ 31 августа 2010

Это на самом деле не проблема Flex или BlazeDS, это более простая неверная конфигурация Spring.

Вы настроили два отдельных контекста приложения Spring, оба с одинаковым набором определений компонентов (/WEB-INF/spring-main-config.xml).

Контекст приложения, определенный <context-param>, является контекстом приложения, связанным с веб-приложением. Контекст приложения, определенный с помощью `, связан с сервлетом.

Поскольку вы дали один и тот же файл bean-компонентов обоим, он дважды создаст и инициализирует один и тот же набор bean-компонентов, и во второй раз произойдет сбой, поскольку MessageBroker уже определен.

Вам нужно либо разбить определения бина на два набора, либо просто удалить первый и использовать контекст сервлета.

0 голосов
/ 31 августа 2010

Я полагаю, вы загружаете неправильный файл конфигурации здесь ...

<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

...