我想添加一个过滤器来映射网址中的特定路径。
我的服务器端使用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)
请你帮帮我吗?
非常感谢,
安东尼
答案 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上下文。