`
luzhecheng
  • 浏览: 8074 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

flex与java通过BlazeDS实现交互(整合spring)

阅读更多

BlazeDS指的是flex程序中通过RemoteObject方式(amf)进行数据传输的一系列控件与服务器端程序(例如java)中一系列 第三方jar包一起组成的数据交互框架。通过这种方式,我们可以直接将java中数据模型直接映射到flex程序中,省略了交互过程中解析对象的步骤。

一.客户端配置:


   1.使用flex builder 实现 方式

      在flex builder中服务器构建方式中选择j2ee的BlazeDS,指定服务器端services-config.xml所在的目录,根url路径和上下文访问路径。

编译完成后flex的编译参数里会附加services-config.xml路径地址。这种方式需要客户端和服务器端放在一台服务器上,客户端程 序会先去读取服务上的services-config.xml配置文件,无法解决分布式部署的问题,也增加了程序的耦合性,所以我个人不推荐这种方式。

   2.不耦合IDE的 实现 方式:

(1) 定义AMF通道,需要跟services-config.xml中的一致(要注意的是如果url写成localhost,其他用户访问时会有沙箱冲突的问题)

 

    public static const _AmfChannel : AMFChannel = new AMFChannel("amf","http://192.168.1.200:80/messagebroker/amf");  
 

(2) 往amfChannelSet中添加AmfChannel,通过注册了amfChannelSet的RemoteObject获取AbstractOperation ,

添加事件监听,然后发送

 

var remoteService:RemoteObject=new RemoteObject(“serverName”);   
var amfChannelSet : ChannelSet = new ChannelSet;  
amfChannelSet.addChannel(_AmfChannel);  
remoteService.channelSet = amfChannelSet;   
var op : AbstractOperation = remoteService.getOperation(“functionName”);  
op.addEventListener(ResultEvent.RESULT,doCallBack);  
op.addEventListener(FaultEvent.FAULT,faultCallBack);  
op.send(“parameters”); 
 

 

通过这种方式无需验证services-config.xml,但是否发送成功仍需取决于services-config.xml中配置的channel和destination

二.服务器端配置(以整合spring3.0为例)

spring和flex的整合是spring项目组下顶级子项目之一,但由于中文资料较少,网上流传的方法大多没有使用到org.springframework.flex.jar。两种方式都需要spring3.0和BlazeDS的几个jar包,在这就不累述了。

以下是两种实现方式:

1.不使用org.springframework.flex.jar的方式

(1)在web.xml中配置servlet

 

    <servlet>  
            <servlet-name>MessageBrokerServlet</servlet-name>  
            <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>  
            <init-param>  
                <param-name>services.configuration.file</param-name>  
                <param-value>/WEB-INF/flex/services-config.xml</param-value>  
            </init-param>  
            <load-on-startup>1</load-on-startup>  
        </servlet>  
        <servlet-mapping>  
            <servlet-name>MessageBrokerServlet</servlet-name>  
            <url-pattern>/messagebroker/*</url-pattern>  
        </servlet-mapping>  
 

(2)在services-config.xml注册数据通道

    <channels>  
            <channel-definition id="my-amf"  
                class="mx.messaging.channels.AMFChannel">  
                <endpoint  
                    url="http://127.0.0.1/messagebroker/amf"  
                    class="flex.messaging.endpoints.AMFEndpoint" />  
            </channel-definition>  
    <channels>  
 

(3)在services-config.xml中配置factory

springFactory需要继承FlexFactory,重写lookup方法,在lookup方法里通过srping的ApplicationContext去查找对应的bean以加载spring容器。

 

    <factories>  
            <factory id="springFactory" class="com.zb.base.factory.SpringFactory" />  
    </factories>  
 
 

(4)services-config.xml中加载remoting-config.xml

    <services>  
            <service-include file-path="remoting-config.xml" />  
    </services>  
 

remoting-config.xml文件

在这里serviceName既是你前台访问的serviceName,beanName既是spring容器里beanName

你可以重写flex.messaging.services.remoting.adapters.JavaAdapter以实现中央控制器的功能

这样你就可以通过前台传入serviceName访问到对应的bean,通过functionName访问到对应的方法

<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>  
    <destination id="serviceName">  
        <properties>  
            <factory>springFactory</factory>  
            <source>beanName</source>  
        </properties>  
    </destination>  
</service>
 

2.使用org.springframework.flex.jar的方式

(1)配置web.xml

载入spring配置文件

<context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath*:conf/spring/applicationContext.xml</param-value>  
    </context-param>  
    <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>  
//spring mvc的servlet  
<servlet>  
        <servlet-name>MessageBrokerServlet</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
            <init-param>  
                <param-name>contextConfigLocation</param-name>  
             <param-value>classpath*:conf/spring/flex-servlet.xml</param-value>  
        </init-param>  
            <load-on-startup>1</load-on-startup>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>MessageBrokerServlet</servlet-name>  
        <url-pattern>/messagebroker/*</url-pattern>  
    </servlet-mapping> 
 

(2)配置flex-servlet.xml

这是一个spring mvc中的sevlet,其中指明了services-config.xml路径

javaAdapter既是上文中的中央控制器


    <?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-3.0.xsd  
               http://www.springframework.org/schema/flex  
               http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">  
             
         <flex:message-broker  services-config-path="classpath*:conf/flex/services-config.xml">  
         </flex:message-broker>  
         <bean id="javaAdapter" class="org.springframework.flex.core.ManageableComponentFactoryBean">  
                <constructor-arg value="flex.messaging.services.remoting.adapters.JavaAdapter" />  
         </bean>  
    </beans>  
 

(3) services-config.xml与上文中基本一样,不过由于已经载入spirng的环境,所以不需要springFactory了,也不需要引入remoting-config.xml,因为所有的destination定义都可通过下文的注解方式实现。

(4) 这里使用spring3.0中的注解方式实现,前台可以通过serviceName访问到exampleService


    @Service("serviceName")  
    @RemotingDestination(channels={"my-amf"},serviceAdapter="javaAdapter")  
    public class exampleService{  
    }  
 

3.使用ide查看定义的destination

(1) 在不使用spring提供的jar情况下,由于前台flex需要读取后台的remoting-config.xml配置文件,所以ide例如flex builder能通过查看数据源看到remoting-config.xml中定义的destination,但仍需在web.xml中添加如下配置。


    <servlet>  
        <servlet-name>RDSDispatchServlet</servlet-name>  
        <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>  
        <init-param>  
            <param-name>useAppserverSecurity</param-name>  
            <param-value>true</param-value>  
        </init-param>  
        <load-on-startup>10</load-on-startup>  
    </servlet>  
    <servlet-mapping id="RDS_DISPATCH_MAPPING">  
        <servlet-name>RDSDispatchServlet</servlet-name>  
        <url-pattern>/CFIDE/main/ide.cfm</url-pattern>  
    </servlet-mapping>  
 

(2) 在使用spring提供的jar情况下,由于destination动态存在于spring的容器中,前台无法直接获取,所以无法查看到destination

分享到:
评论

相关推荐

    Flex Spring JAVA BLAZEDS整合

    通常,JAVA与FLEX通过BlazeDS的整合需要在`remote-config.xml`中为每个RemoteObject配置destination。但通过`SpringRemotingDestinationBootstrapService`,我们可以自动导出带有@Service注解且名称以“FlexService...

    使用BlazeDS实现flex与java 整合

    BlazeDS通过AMF(Action Message Format)协议,实现了高性能、低延迟的数据传输,使得Flex前端可以高效地与Java后端进行交互。在本文中,我们将深入探讨如何使用BlazeDS来整合Flex和Java,以及在这个过程中可能遇到...

    Flex-Spring-JAVA-BLAZEDS.rar_Flex spring_flex_flex java

    标题中的“Flex-Spring-JAVA-BLAZEDS.rar”提到了三个关键技术:Flex、Spring和BlazeDS,这在IT行业中是关于前端与后端交互的重要技术组合。Flex是Adobe开发的一种用于创建富互联网应用(RIA)的开源框架,主要用于...

    FLex与Java交互必备blazeds

    在实际开发中,你可以按照以下步骤来利用Blazeds实现Flex与Java的交互: 1. 配置Blazeds:在Java服务器上部署Blazeds服务,并配置相应的服务端点。 2. 创建Flex客户端:使用Flex Builder或Flash Builder创建Flex...

    flex+java+blazeds

    通过这个实例,开发者可以学习到如何结合Flex、Java和BlazeDS构建一个完整的前后端交互的Web应用,掌握客户端与服务器的通信机制,以及如何利用这些技术提升用户体验和应用性能。同时,这也是一个很好的起点,为...

    Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立)

    通过以上步骤,我们就建立了一个基础的Flex+Java+BlazeDS开发环境,使得Flex客户端能够通过AMF与Java服务端进行高效的数据交换。这种架构广泛应用于需要动态用户界面和实时数据交互的应用场景,例如企业级的Web应用...

    flex-spring-blazeds demo

    在"flex-spring-blazeds demo"项目中,Flex被用来创建交互式的前端界面,通过BlazeDS与后端Spring服务进行数据交换。 BlazeDS是Flex与Java应用之间的桥梁,它提供了一组基于HTTP和AMF(Action Message Format)的...

    flex+blazeds+spring

    标题“flex+blazeds+spring”表明我们要探讨的是如何将Flex前端与BlazeDS中继层和Spring后端框架结合起来,实现完整的数据交互和应用程序逻辑。 在Flex与Spring集成的环境中,Flex作为用户界面展示层,负责与用户...

    blazeds与java(spring)通信配置说明

    以上步骤完成后,Flex 客户端可以通过 BlazeDS 调用 Java(Spring)服务,实现数据交互。这种集成方式使得 Flex UI 可以利用 Java 后端的强大功能,同时保持客户端的轻量化和交互性。在整个过程中,需要注意的是,...

    BlazeDS整合Spring实现增删改查

    它允许Flex应用程序通过HTTP和AMF(Action Message Format)与Spring等Java应用服务器进行交互,实现了富互联网应用程序(RIA)的数据推送功能。在本主题“BlazeDS整合Spring实现增删改查”中,我们将深入探讨如何...

    Flex4.X+BlazeDS+Spring3L实战开发在线书店二

    BlazeDS是Adobe提供的开源服务器端技术,它允许Flex客户端与Java服务器进行双向通信,实现了数据的实时同步。 首先,让我们详细了解Flex 4.6。这一版本引入了新的Spark组件模型,提供更美观、可自定义的UI组件,...

    flex+java+spring+hibernate+blazeds整合

    本文将详细讲解如何整合Flex、Java、Spring、Hibernate以及BlazeDS,打造一套完整的前后端交互解决方案。 一、Flex概述 Flex是由Adobe公司推出的用于创建富互联网应用程序的开源框架,基于ActionScript编程语言和...

    Flex4.X+BlazeDS+Spring3L实战开发在线书店四

    综合以上技术,本项目通过Flex 4.6构建美观且交互性强的前端,BlazeDS负责与Spring 3后端的通信,Spring 3协调业务逻辑,JPA和Hibernate实现数据持久化,而MySQL作为存储层。这种技术组合为在线书店提供了一个高效、...

    flex flex和 java交互

    标题"flex 和 java交互"指出了一个关键的技术融合,即Flex与Java的整合,允许Flex前端与Java后端进行数据和功能的通信。这种交互通常是通过AMF(Action Message Format)协议实现的,它提供了一种高效的数据序列化...

    BlazeDS实现flex与java通信

    在本文中,我们将深入探讨如何使用BlazeDS实现Flex与Java之间的通信,以及其核心功能和工作原理。 1. **Remoting服务** BlazeDS的Remoting服务允许Flex客户端直接调用Java后端的远程方法,仿佛这些方法是本地的。...

    flex4+spring+blazeds整合技术

    本文将详细介绍如何在Flex4环境中,利用Spring管理Java后端Bean,并通过BlazeDS实现Flex与服务器间的通信。 首先,我们需要理解Flex4、Spring和BlazeDS各自的角色。Flex4是Flash Builder中的一个组件,它提供了一套...

    flex与java交互的中间介质Blazeds

    标题中的“flex与java交互的中间介质Blazeds”主要涉及到以下几个核心知识点: 1. Flex:Flex是Adobe开发的一种用于构建RIA的框架,它基于ActionScript编程语言和开放源代码的Flex SDK。Flex可以创建美观、互动性强...

    flex与JAVA三种交互方式的源代码与视频教程

    本教程将深入探讨Flex与Java的三种交互方式,帮助开发者更好地理解和实现跨平台的Web应用。 1. AMF(Action Message Format)交互: AMF是Adobe提供的二进制数据格式,它能高效地传输对象,特别适合于Flex和Java...

    flex+spring+blazeds消息推送

    标题中的“flex+spring+blazeds消息推送”是指在开发富互联网应用程序(RIA)时,采用Adobe Flex作为前端UI框架,Spring作为后端服务层框架,BlazeDS作为数据通信中间件,实现服务器到客户端的消息实时推送功能。...

Global site tag (gtag.js) - Google Analytics