基于AMF的EOS与Flex整合Word文件下载.docx
- 文档编号:8207587
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:11
- 大小:354.75KB
基于AMF的EOS与Flex整合Word文件下载.docx
《基于AMF的EOS与Flex整合Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于AMF的EOS与Flex整合Word文件下载.docx(11页珍藏版)》请在冰点文库上搜索。
目录
1文档摘要5
1.1文档分类5
1.2关键字/Tag5
1.3摘要5
1.4作者、协作者及评审人员5
1.5定义、首字母缩写词及缩略语5
2简介6
2.1场景描述6
2.2适用环境7
3经验总结7
3.1软件安装7
3.2部署EOS补丁7
3.3服务器端开发8
3.3.1场景描述:
8
3.3.2逻辑流参数说明:
9
3.4Flex开发9
3.4.1Flex环境设置9
3.4.2编写用户信息ActionScript类11
3.4.3编写mxml用户界面11
3.5测试程序11
1文档摘要
1.1文档分类
EOS设计开发->
经验技巧总结
1.2关键字/Tag
EOS6、Flex、AMF协议、整合、接入
1.3摘要
自从Flex3发布以来,越来越多的企业采用Flex作为RIA解决方案,提高用户体验。
EOS对采用JSON整合其他RIA产品的方案天生就支持,但在Flex领域采用JSON作为数据交换策略并不多见,原因是有开发者认为Flex+HttpService+JSON+JEE的方式有性能问题,尽管这种方案中一般的应用中没有任何问题。
有关Flex+HttpService+JSON+EOS的整合方案可参考欧阳希撰写的《基于JSON实现FLEX与EOS整合方案》一文。
本文将协助大家完成“Flex+HttpService+AMF+EOS”的方式搭建“EOS+Flex”的开发环境,搭建完成后,采用Flex作为UI开发平台,用EOS逻辑流处理后台逻辑,Flex与EOS间采用Adobe推荐的AMF协议。
1.4作者、协作者及评审人员
作者:
1.5定义、首字母缩写词及缩略语
EOS:
EOS是全球领先SOA应用平台厂商Primeton公司开发的应用基础平台。
EOS基于J2EE、Eclipse等开放的技术和平台,采用了先进的SOA架构和标准规范,并通过构件化、图形化、一体化的平台产品为客户提供了完整的覆盖SOA应用全生命周期的支撑,从设计、开发、调试和部署,到运行、维护、管控和治理。
AMF协议:
AMF是Adobe独家开发出来的通信协议,它采用二进制压缩,序列化、反序列化、传输数据,从而为Flash播放器与FlashRemoting网关通信提供了一种轻量级的、高效能的通信方式。
2简介
2.1场景描述
为了处理复杂数据类型,采用一种独有的方式使Flash与应用服务器间可以来回传送数据势在必行。
于是AMF应运而生。
如下图所示:
AMF最大的特色在于可直接将Flash内置对象,例如Object,Array,Date,XML,传回服务器端,并且在服务器端自动进行解析成适当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。
由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。
数据量越大,FlashRemoting的传输效能就越高,远远超过WebService。
至于XML,LoadVars和loadVariables(),它们使用纯文本的传输方式,效能就更不能与FlashRemoting相提并论了。
EOS6对Flex的支持本身并不完善,尽管EOS6产品已经提供了Flex调用逻辑流的接口,但在FlexObject与SDO之间的相互转换转换还需要部署相应的补丁包,才能完全支持Flex调用EOS逻辑流进行后台逻辑处理。
由于由于逻辑流支持多输出参数,所以Flex调用EOS逻辑流的方法的返回值类型实际上是个数组。
2.2适用环境
EOS6(#3276)+FlexBuilder3
3经验总结
3.1软件安装
这里需要安装的软件无非就是EOS6(#3276)开发版和FlexBuilder3。
EOS6(#3276)开发版的安装没什么好说的,无非需要注意的就是两点:
第一是安装包不能解压到有空格或中文的目录下面,第二是EOS的安装路径不能带空格或中文。
FlexBuilder3基于Eclipse开发,因此安装方式有两种,一种是FlexBuilder3安装包本身就包括Eclipse,还有一种是安装包不包括Eclipse而仅有插件。
对于不包括Eclipse的情况,需要先下载Eclipse3.2、Eclipse3.3、Eclipse3.4并解压,Eclipse的这些版本是Adobe官方推荐的版本。
这里假设EOS安装在D:
\eosdev\3276\目录,并且EOS应用名为eos-default。
3.2部署EOS补丁
1、将压缩包中的lib目录下的所有jar文件copy到,D:
\eosdev\3276\apache-tomcat-5.5.20\webapps\eos-default\WEB-INF\lib\目录下。
2、将压缩包中的flex目录copy到D:
\eosdev\3276\apache-tomcat-5.5.20\webapps\eos-default\WEB-INF\目录。
3、将TestVo.class文件添加到eos-access-client.jar文件的com\eos\access\client目录。
4、
<
listener>
listener-class>
flex.messaging.HttpFlexSession<
/listener-class>
/listener>
servlet>
servlet-name>
MessageBrokerServlet<
/servlet-name>
<
display-name>
/display-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>
url-pattern>
/messagebroker/*<
/url-pattern>
/servlet-mapping>
修改D:
\eosdev\3276\apache-tomcat-5.5.20\webapps\eos-default\WEB-INF\web.xml文件内容,将以下内容添加到适当位置:
压缩包中的web.xml是一个实际的例子。
5、修改D:
\eosdev\3276\apache-tomcat-5.5.20\webapps\eos-default\WEB-INF\flex\services-config.xml文件,将其中涉及“127.0.0.1:
8080/eos-default”更改为实际的值。
3.3服务器端开发
为了验证相关配置是否成功,模拟经典“HelloWorld”例子,开发一个功能:
由Flex发送一个姓名到EOS,然后EOS在接收到的姓名前加上一个“Hello,”串,然后将结果返回给Flex,Flex用Alert控件显示接受到值新字符串。
输入参数param1:
接收Flex用户界面输入的姓名。
输出参数out1:
返回处理后的姓名。
具体逻辑很简单,就是利用逻辑流的“赋值”图元,将变量param1加上字符串后赋值给out1变量即可。
3.4Flex开发
3.4.1Flex环境设置
1、设置编译输出路径:
在项目上右击,选择“属性”菜单,如下图:
2、设置编译参数:
在项目上右击,选择“Properties”菜单,如下图:
3.4.2编写用户信息ActionScript类
这里的用户信息主要用于向EOS逻辑流传递MUO中的用户信息,代码如下:
packagecom.eos.flex.model
{
publicclassUserInfo
{
publicfunctionUserInfo()
{
}
publicvaruserId:
int=1;
publicvaruserName:
String="
userName"
;
}
}
3.4.3编写mxml用户界面
代码如下:
?
xmlversion="
1.0"
encoding="
utf-8"
>
mx:
Applicationxmlns:
mx="
verticalAlign="
middle"
horizontalAlign="
center"
Script>
!
[CDATA[
importmx.collections.ArrayCollection;
importmx.rpc.events.ResultEvent;
importmx.controls.Alert;
privatefunctiongetVo(e:
ResultEvent):
void{
//显示业务处理结果
Alert.show(e.result.data[0]);
privatefunctiontestObjects():
vartempString:
String=inputStr.text;
varmyArray:
Array=newArray();
myArray.push(tempString);
varuser:
Object=newObject();
user.userId=6;
varsession:
Object=newObject();
user.userName="
xxxx"
session.userObject=user;
//与id="
javaVo"
的<
RemoteObject/>
对象对应,调用EOS逻辑流
javaVo.invoke(session,
"
com.primeton.eos.service.FlexDemo.testComplex.biz"
myArray);
//添加事件监听函数,获得服务器返回后调用getVo函数
javaVo.addEventListener(ResultEvent.RESULT,getVo);
]]>
/mx:
RemoteObjectid="
destination="
flexObject"
/>
Paneltitle="
测试应用"
TextInputid="
inputStr"
/>
Buttonclick="
testObjects()"
label="
请求"
Panel>
Application>
重要代码是调用EOS逻辑流代码
javaVo.invoke(session,"
com.primeton.eos.entityLogic.testComplex.biz"
myArray);
参数说明如下:
session:
传递逻辑流需要的MUO对象,是ActionScript的com.eos.flex.model.UserInfo类的实例。
:
常量,对应的EOS逻辑流。
myArray:
ActionScript数组对象,业务参数数组。
3.5测试程序
在浏览器输入http:
//127.0.0.1:
8080/eos-default/test/XXX.swf,出现以下界面:
点击请求,出现一下界面:
注意:
浏览器输入的地址需要与services-config.xml文件中的URL一致,否则会出现“Flash安全沙箱……”的异常。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AMF EOS Flex 整合