applicationContext.xml的配置信息
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:flex="http://www.springframework.org/schema/flex"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/flex
    http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">        <flex:message-broker />
    
    <!-- 定义数据源的Bean ,给Hibernate的sessionFactory-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="jdbcUrl" value="jdbc:sqlserver://localhost:1433;DatabaseName=Power"/>
<property name="user" value="accp"/>
<property name="password" value="accp"/>
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize" value="1"/>
<!--连接池中保留的最小连接数。-->
<property name="minPoolSize" value="1"/>
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="300"/>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="60"/>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="5"/>
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod" value="60"/>
</bean>
<!-- 定义Hibernate的sessionFactory,通过该Bean,可以获得Hibernate的Session-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<!--设置二级缓冲-->
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
<!--设置二级缓冲,打开查询缓冲-->
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.jdbc.use_scrollable_resultset ">true</prop>
<!--设置显示Hibernate操作的SQL语句-->


<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>

</props>
</property>
<property name="mappingResources">
<list>
<value>com/flex4/entity/Ddy.hbm.xml</value>

</list>
</property>
</bean>
      <!-- 数据访问层 -->
    <bean id="td" class="com.flex4.dao.impl.TestDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="testBiz" class="com.flex4.biz.impl.TestBizImpl" >
  <flex:remoting-destination/>
  <property name="td" ref="td" />
  
</bean>
    
</beans>
web.xml文件的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    <servlet>
<servlet-name>flex4</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
  <!-- MessageBroker Servlet -->
<servlet-mapping>
<servlet-name>flex4</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
 
    <!-- Http Flex Session attribute and binding listener support -->
    <listener>
        <listener-class>flex.messaging.HttpFlexSession</listener-class>
    </listener>   <!-- 对spring容器初始化 -->
   <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
services-config.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<services-config>    <services>
        <default-channels>
        <channel ref="my-amf"/>
       </default-channels>        
    </services>    <security>
        <login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>
                            <channels>        <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
        </channel-definition>        <channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
            <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
            <properties>
                <add-no-cache-headers>false</add-no-cache-headers>
            </properties>
        </channel-definition>        <channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
            <properties>
                <polling-enabled>true</polling-enabled>
                <polling-interval-seconds>4</polling-interval-seconds>
            </properties>
        </channel-definition>           </channels>    <logging>
        <target class="flex.messaging.log.ConsoleTarget" level="Error">
            <properties>
                <prefix>[BlazeDS] </prefix>
                <includeDate>false</includeDate>
                <includeTime>false</includeTime>
                <includeLevel>false</includeLevel>
                <includeCategory>false</includeCategory>
            </properties>
            <filters>
                <pattern>Endpoint.*</pattern>
                <pattern>Service.*</pattern>
                <pattern>Configuration</pattern>
            </filters>
        </target>
    </logging>    <system>
        <redeploy>
            <enabled>false</enabled>
                    </redeploy>
    </system></services-config>
不知道为什么在启动tomcat时,总是报错,错误信息为:
信息: Initializing Spring FrameworkServlet 'flex4'
[BlazeDS]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:2032)
at flex.messaging.MessageBroker.start(MessageBroker.java:317)
at org.springframework.flex.core.MessageBrokerFactoryBean.afterPropertiesSet(MessageBrokerFactoryBean.java:166)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods

解决方案 »

  1.   

    我建议你了解一下DispatcherServlet和ContextLoaderListener。
    目前你装载applicationContext.xml两次。在web.xml中用DispatcherServlet加载spring context配置文件,(由于你的配置)又用ContextLoaderListener加载spring context配置文件…解决方法:删除web.xml文件中下面代码:
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
      

  2.   

    你先把spring + hibernate 搭建好了 测试不出错,在和flex 集成。SpringMVC +Flex ??
      

  3.   

    <bean id="_messageBroker" class="org.springframework.flex.core.MessageBrokerFactoryBean">
    <property name="servicesConfigPath" value="classpath*:services-config.xml" />
    </bean> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
    <value>
    /*=_messageBroker
             </value>
    </property>
    </bean>
     
    <bean  class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter" />
    加这些配置applicationContext.xml 里面
      

  4.   

    这样吧。我以前写了一个完整的示例。今天看你遇到了。我传上来。你自己去看看。
    地址:http://download.csdn.net/detail/yaerfeng/3935036
    希望可以帮到你。
      

  5.   

    2楼理论是对的~~但是实践中会出现错误,建议删除
    <servlet-name>flex4</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
      <!-- MessageBroker Servlet -->
    <servlet-mapping>
    <servlet-name>flex4</servlet-name>
    <url-pattern>/messagebroker/*</url-pattern>
    </servlet-mapping>
    然后字applicationContext.xml文件中修改
    <flex:message-broker />为<flex:message-broker>
        <flex:mapping pattern="/messagebroker/*" />
    </flex:message-broker>