`
keren
  • 浏览: 1583380 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex 的spring+BlazeDS整合注意事项

    博客分类:
  • Flex
阅读更多
弄了一天,终于把spring+BlazeDS整合好了。
首先阅读了:spring的官方文档【Spring BlazeDS Integration Reference Guide】。
http://static.springsource.org/spring-flex/docs/1.0.x/reference/html/index.html
好多页,慢慢看。
但是按照整个文档,一步一步走下来,还是不行,经过多次尝试,终于可以了,现在把心得写下来,仅供参考。
本来我的j2ee工程是 extjs+spring2.56+hibernate3.3的,因为需要就整合flex,这时就需要BlazeDS了,
需要下:org.springframework.flex-1.0.0.RELEASE.jar。
还有flex需要 /WEB-INF/flex/整个目录。

注意点:
1,写spring blazeds配置文件:spring-context-80-BlazeDS.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"  
       xsi:schemaLocation="   
           http://www.springframework.org/schema/beans   
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
           http://www.springframework.org/schema/flex    
           http://www.springframework.org/schema/flex/spring-flex-1.0.xsd"> 
	<!-- Bootstraps and exposes the BlazeDS MessageBroker -->
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <value>
                /messagebroker/*=_messageBroker
            </value>
        </property>
    </bean>

	<!-- Dispatches requests mapped to a MessageBroker -->
	<bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter"/>

	<!-- Bootstraps and exposes the BlazeDS MessageBroker -->
	<bean id="_messageBroker" class="org.springframework.flex.core.MessageBrokerFactoryBean" /><bean id="flex_base_service" class="com.ria.conn.amf.service.impl.FlexBaseService"/>
<bean id="flex_base_service_000" class="org.springframework.flex.remoting.RemotingDestinationExporter">
	<property name="messageBroker" ref="_messageBroker"/>
<property name="service" ref="flex_base_service"/>
	
	<property name="channels">   
		<list>
			<value>my-amf</value>
			<value>my-secure-amf</value>
			<value>my-polling-amf</value>
			<value>my-streaming-amf</value>
		</list>   
	</property>
</bean>
</beans>

2,web.xml里面 修改url的拦截器为spring.
	<servlet> 
        <servlet-name>SpringMVCDispatcherServlet</servlet-name> 
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
        <init-param> 
            <param-name>contextConfigLocation</param-name> 
            <param-value>
                   classpath:/applicationContext*.xml 
                classpath*:/spring-context-80-BlazeDS.xml
                /WEB-INF/applicationContext*.xml
            </param-value> 
        </init-param> 
        <load-on-startup>2</load-on-startup> 
    </servlet> 
	<!-- Map all /messagbroker requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>SpringMVCDispatcherServlet</servlet-name>
		<url-pattern>/spring/*</url-pattern>
	</servlet-mapping>

3,修改/WEB-INF/flex/services-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
	<!-- 注册SpringFactory工厂 -->
	<factories> 
		<factory id="my-flexfactory4spring" class="com.ria.common.flex.spring.FlexSpringFactory"/> 
	</factories>
    <services>
        <service-include file-path="remoting-config.xml" />
        <service-include file-path="proxy-config.xml" />
        <service-include file-path="messaging-config.xml" />
    	<!-- 下面这个设置很重要,是应用的(全局的)参数,否则spring+blazeDS整合没法用.    	Application level default channels. Application level default channels are 
    	necessary when a dynamic destination is being used by a service component
    	and no ChannelSet has been defined for the service component. In that case,
    	application level default channels will be used to contact the destination.
        -->   
        <default-channels>
           <channel ref="my-amf"/>
        </default-channels>
    </services>

    <security>
        <login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>
        <!-- Uncomment the correct app server
        <login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss">
		<login-command class="flex.messaging.security.JRunLoginCommand" server="JRun"/>        
        <login-command class="flex.messaging.security.WeblogicLoginCommand" server="Weblogic"/>
        <login-command class="flex.messaging.security.WebSphereLoginCommand" server="WebSphere"/>
        -->

        <!-- 
        <security-constraint id="basic-read-access">
            <auth-method>Basic</auth-method>
            <roles>
                <role>guests</role>
                <role>accountants</role>
                <role>employees</role>
                <role>managers</role>
            </roles>
        </security-constraint>
         -->
    </security>

    <channels>
		<!-- 以下的 spring_messagebroker 串正好是 web.xml里面的拦截URL串,以前是messagebroker,被 blazeds servlet拦截,现在是被spring+BlazeDS servlet拦截 -->
        <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"/-->
			<endpoint url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
			<properties>
				<polling-enabled>false</polling-enabled><!-- 这个是干嘛的? -->
			</properties>
        </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"/-->
			<endpoint url="https://{server.name}:{server.port}/{context.root}/spring/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"/-->
			<endpoint url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
            <properties>
                <polling-enabled>true</polling-enabled>
                <polling-interval-seconds>4</polling-interval-seconds>
            </properties>
        </channel-definition>

		<!-- copy from lcds -->
        <channel-definition id="my-streaming-amf" class="mx.messaging.channels.StreamingAMFChannel">
            <!--endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/-->
			<endpoint url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/>
			<properties>
				<!-- 解决Streaming HTTP 在IE8下不能正常工作 -->
				<max-streaming-clients>10</max-streaming-clients>
			</properties>
        </channel-definition>

        <channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel">
            <!--endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/-->
			<endpoint url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/>
        </channel-definition>

        <channel-definition id="my-secure-http" class="mx.messaging.channels.SecureHTTPChannel">
            <!--endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/httpsecure" class="flex.messaging.endpoints.SecureHTTPEndpoint"/-->
			<endpoint url="https://{server.name}:{server.port}/{context.root}/spring/messagebroker/httpsecure" class="flex.messaging.endpoints.SecureHTTPEndpoint"/>
            <properties>
                <add-no-cache-headers>false</add-no-cache-headers>
            </properties>
        </channel-definition>

    </channels>

    <logging>
        <target class="flex.messaging.log.ConsoleTarget" level="Debug">
            <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>
            <!-- 
            <watch-interval>20</watch-interval>
            <watch-file>{context.root}/WEB-INF/flex/services-config.xml</watch-file>
            <watch-file>{context.root}/WEB-INF/flex/proxy-config.xml</watch-file>
            <watch-file>{context.root}/WEB-INF/flex/remoting-config.xml</watch-file>
            <watch-file>{context.root}/WEB-INF/flex/messaging-config.xml</watch-file>
            <watch-file>{context.root}/WEB-INF/flex/data-management-config.xml</watch-file>
            <touch-file>{context.root}/WEB-INF/web.xml</touch-file>
             -->
        </redeploy>
    </system>

</services-config>


4,修改/WEB-INF/flex/remoting-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" 
    class="flex.messaging.services.RemotingService">

    <adapters>
        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
    </adapters>

    <default-channels>
        <channel ref="my-amf"/>
    </default-channels>
    <!-- flex spring service在这里注入,flex调用如下:
		<mx:RemoteObject id="srv" destination="productService"/>
		<mx:Button label="Update" click="srv.updateProduct(product)"/>
		下面意思是说flex客服端在调用id为"productService" destination 的时候,
		在spring工厂中寻找id为productDAOBean的bean。
		其中:channels="my-amf"可以不要,因为缺省的channel就是它。
	-->
	<destination id="commonService" channels="my-amf">
		<properties>
			<!-- 这里指向service-config.xml里定义的工厂id -->
			<factory>my-flexfactory4spring</factory>
			<!-- 这里定义了spring的bean name -->
			<source>flex_base_service</source>
		</properties>
	</destination>
	
</service>


注意点,就这些.
8
0
分享到:
评论

相关推荐

    flex+java+spring+hibernate+blazeds整合

    《Flex+Java+Spring+Hibernate+BlazeDS整合详解》 在现代的Web开发中,Flex作为客户端的富互联网应用程序(RIA)框架,与Java、Spring、Hibernate等后端技术结合,可以构建出高效、交互性强的Web应用。本文将详细...

    flex4.5+java+spring+blazeds通信

    ### Flex4.5 + Java + Spring + BlazeDS 通信整合详解 #### 一、概述 在现代企业级应用开发中,前后端分离架构已经成为主流趋势之一。本文将详细介绍如何使用Flex 4.5、Java、Spring框架以及BlazeDS进行前后端之间...

    Blaze+Spring整合资料

    1. "Flex+BlazeDS整合J2ee示例 - Jerry的个人空间" 提供了基于J2EE平台的BlazeDS与Flex的整合实例,可能涵盖了如何设置项目结构、配置BlazeDS服务以及与Spring的集成方法。 2. "InfoQ Spring BlazeDS Integration...

    整合blazeds和spring需要的jar包

    通过以上步骤,你可以成功地将Blazeds与Spring整合,实现Flex客户端与Java后端服务的高效交互。记得在实际操作中根据项目的具体需求调整和优化配置。如果遇到问题,可以参考IT氧吧(http://www.ityangba.com)等技术...

    PureMVC Flex BlazeDS Spring Hibernate.doc

    根据提供的文档信息,本文将详细解析“PureMVC Flex BlazeDS Spring Hibernate框架整合开发”的相关知识点,主要包括所需软件的安装与配置、项目构建步骤以及各技术框架的基本介绍。 ### 一、所需软件的安装与配置 ...

    FLEX_Spring环境搭建

    提供的文件"Flex_Spring环境安装配置说明.xls"可能包含了详细的步骤和注意事项,帮助用户进行环境搭建。"Spring_Flex_Web_Project"可能是一个示例项目,包含了已经配置好的FLEX和Spring的整合实例,可以作为学习和...

    springmvc与Flex集成示例

    五、注意事项 - 确保Spring MVC和Flex的AMF库版本兼容。 - 在安全方面,考虑使用HTTPS进行通信以保护数据安全。 - 调试时,查看服务器日志和Flex客户端的错误信息,有助于快速定位问题。 总结,Spring MVC与Flex的...

    FLEX整合java-描述详细-看了就明白

    4. **Spring BlazeDS Integration:** 如果项目使用Spring框架,Spring BlazeDS Integration提供了与BlazeDS的集成,使得Spring的bean可以直接暴露给Flex客户端,简化了服务端的开发。 5. **数据交换:** 在Flex和...

    Flex和SSH整合的一个完整例子

    5. **注意事项**: - 确保Flex客户端和服务器端的AMF版本匹配。 - 正确配置BlazeDS的`flex-servlet.xml`和`services-config.xml`以暴露需要的服务。 - 为避免安全问题,需考虑对AMF通信进行加密和身份验证。 综...

    S2SH项目结合Flex实现登录.docx

    7. **问题与注意事项**: - 引入Flex后,原有的S2SH项目不能直接导入到IDE中,因为缺少Flex相关的配置。 - 确保使用的MyEclipse版本支持Flex4插件,例如MyEclipse8.5,但9.0可能不兼容。 - Tomcat的webapps目录下...

Global site tag (gtag.js) - Google Analytics