加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex与服务器交互(使用RemoteObject+BlazeDS+TomCat同Java交互

发布时间:2020-12-15 04:46:52 所属栏目:百科 来源:网络整理
导读:由于Flex只是一种 客户端技术其本身并不能直接同 数据库交互,在实际的应用开发过程中Flex提供了如 URLRequest、HTTPService、RemoteObject、 WebService等类以实现同 服务器的通讯和 数据交互,下面做一些介绍和实例解析: ?? 本示例用到的开发工具和组件:j
由于Flex只是一种 客户端技术其本身并不能直接同 数据库交互,在实际的应用开发过程中Flex提供了如 URLRequest、HTTPService、RemoteObject、 WebService等类以实现同 服务器的通讯和 数据交互,下面做一些介绍和实例解析:
?? 本示例用到的开发工具和组件:jdk1.6、eclipse3.0、? FlexBuilder3.0、? blazeds-turnkey-3.3.0.9885(已包含Tomcat)
?? 1、安装JDK至指定目录下如:C:/Program Files/ Java/jdk1.6.0_16
?? 2、解压blazeds-turnkey-3.3.0.9885.zip 将tomcat目录拷贝至:D:/Program Files/tomcat
?? 3、配置或加入我的电脑环境变量: [c-sharp] view plaincopyprint?
    JAVA_HOME?????? C:/Program Files/Java/jdk1.6.0_16? CATALINA_BASE?? D:/Program Files/tomcat? CATALINE_HOME?? D:/Program Files/tomcat? CLASSPATH?????? %JAVA_HOME%/lib;%CATALINA_HOME%/lib/servlet-api.jar? Path??????????? %JAVA_HOME%/bin;%JAVA_HOME%/lib;?


?? 4、查看Tomcat服务器配置信息:
????? 查看D:/Program Files/tomcat/conf/server.xml文件
????? 找到 <Connector port="8400" protocol="HTTP/1.1"
?????????????? connectionTimeout="20000"
?????????????? redirectPort="9400" />
????? 配置的端口信息为“8400”
?? 5、手动方式启动TomCat检查是否配置成功(当然你也可以在Eclipse中安装TomCat插件控制Tomcat):
????? 启动命令行“cd D:/Program Files/tomcat/bin”定位至Tomcat Bin目录
????? 运行“startup.bat”启动TomCat看到如下(启动成功):


????? 浏览器中输入:“http://localhost:8400/”如下(恭喜JAVA环境+BlazeDS+Tomcat配置成功):


?? 6、建立开发文件夹,拷贝BlazeDS配置文件和用到的配置文件及类库“WEB-INF”至站点目录:
????? 找到blazeds.war个改后缀为RAR解压找到“WEB-INF”文件夹拷贝至"WebSite"下目录结构如:


????? 这样做的目的是将JAVA项目同Flex项目Web站点目录分开互不干扰(使用eclipse的Flex开发插件有时会报莫名的错误,Flex开发还是建议用FlexBuilder)
?? 7、在Eclipse中新建java项目并将编译路径链接至“../WebSite/WEB-INF/classes”目录下如图:


?? 8、发布WebSite至TomCat:
????? 在“D:/Program Files/tomcat/conf/server.xml”文件<Host>节点中新增如下<Context>节点重启TomCat(执行第5步骤运行“shutdown.bat”再运行“startup.bat”)

[xhtml] view plaincopyprint?
    <Host name="localhost"? appBase="webapps"? ?????????? unpackWARs = "true" autoDeploy = "true" ? ?????????? xmlValidation = "false" xmlNamespaceAware = "false" > ? < Context path = "/WebSite" docBase = "E:/学习/BlazeDs/WebSite" debug = "0" reloadable = "true" crossContext = "true" /> ? </ Host > ?


?? 9、新建FLEX 服务器为J2EE的“myBlazeDSFlex”项目至"E:/学习/BlazeDs/Flex"目录


?? 10、配置服务器及Flex输出目录至“webSite/flex"下,并“Validate Configuration”通过(如图):


?? 11、你也可以手动设置Felx项目属性(如图)来配置J2EE服务器:


?? 12、在eclipse中编写完成Java类及方法 并编译:
?????? UserBean类:
?

[java] view plaincopyprint?
    package myBlazeDS;? public class UserBean {? ? private String _name;? ? private int _age;? ? private String _address;? ? public UserBean(String name, int age,String address)? ? {? ?? this ._name = name;? ?? this ._age = age;? ?? this ._address = address;? ? }? ??? ? public void setName(String name)? ? {? ?? this ._name = name;? ? }? ? public String getName()? ? {? ?? return this ._name;? ? }? ??? ? public void setAge( int age)? ? {? ?? this ._age = age;? ? }? ? public int getAge()? ? {? ?? return this ._age;? ? }? ??? ? public void setAddress(String address)? ? {? ?? this ._address = address;? ? }? ? public String getAddress()? ? {? ?? return this ._address;? ? }? }?

外部接口类BlazeDSService:
?

[java] view plaincopyprint?
    package myBlazeDS;? ? public class BlazeDSService {? ? public String GetBlazeService(String user)? ? {? ?? return user + ":欢迎使用Java BlazeDS同Flex交互" ;? ? }? ? public UserBean GetUserInfo(String name,String address)? ? {? ?? return new UserBean( "User:" + name,age,address + " China" );? ? }? }?

  13、配置“E:/学习/BlazeDs/WebSite/WEB-INF/flex/remoting-config.xml”增加(如图):

[xhtml] view plaincopyprint?
    <destination id="FirstBlazeService">? < properties > ? < source > ? ? myBlazeDS.BlazeDSService? </ source > ? < scope > application </ scope > ? </ properties > ? </ destination > ?


??? 14、在Flex引入RemoteObject 指定destination属性加入调用方法<mx:method>节点如:

[xhtml] view plaincopyprint?
    <mx:RemoteObject id="myJavaService" destination="FirstBlazeService" showBusyCursor="true">? < mx:method name = "GetBlazeService" fault = "onBlazeDSFalut(event)" /> ? < mx:method name = "GetUserInfo" result = "getUserBean(event)" fault = "onBlazeDSFalut(event)" /> ? </ mx:RemoteObject > ?


  15、完整体Flex页面代码:
  ?

[xhtml] view plaincopyprint?
    <?xml version="1.0" encoding="utf-8"?>? < mx:Application xmlns:mx = "http://www.adobe.com/2006/mxml" layout = "absolute" > ? < mx:RemoteObject id = "myJavaService" destination = "FirstBlazeService" showBusyCursor = "true" > ? ? < mx:method name = "GetBlazeService" fault = "onBlazeDSFalut(event)" /> ? ? < mx:method name = "GetUserInfo" result = "getUserBean(event)" fault = "onBlazeDSFalut(event)" /> ? </ mx:RemoteObject > ? < mx:Canvas width = "653" height = "190" x = "10" backgroundColor = "#297E8D" fontSize = "15" > ? ? < mx:Script > ? ?? <!--[CDATA[? ??? import mx.rpc.events.FaultEvent;? ??? import mx.rpc.events.ResultEvent;? ??? import mx.controls.Alert;? ??? import mx.core.UIComponent;? ??? import mx.core.BitmapAsset;? ??? import mx.core.ByteArrayAsset;? ??? private function onCallJava():void? ??? {? ???? myJavaService.GetBlazeService(nameInput.text);? ??? }? ??? private function onCallBean():void? ??? {? ???? myJavaService.GetUserInfo(txtName.text,int(txtAge.text),txtAddress.text);?? ?????? ??? }? ??? private function getUserBean(e:ResultEvent):void? ??? {? ???? var o:*=e.result as Object;? ???? vtxtName.text = o .name;? ???? vtxtAge.text = o .age;? ???? vtxtAddress.text = o .address;? ??? }?? ??? private function onBlazeDSFalut(e:FaultEvent):void? ??? {? ???? Alert.show(e.message.toString());? ??? }?? ?? ]]-- > ? ? </ mx:Script > ? ? < mx:TextInput id = "nameInput" ? x = "108" y = "18" width = "145" /> ? ? < mx:Button label = "Call Java" click = "onCallJava();" x = "274" y = "18" fillAlphas = "[1.0,1.0]" /> ? ? < mx:TextArea text = "{myJavaService.GetBlazeService.lastResult}" ? x = "397" height = "34" width = "246" y = "19" /> ? ? < mx:Label x = "10" y = "61" width = "632" height = "2" /> ? ? < mx:Label x = "10" y = "80" text = "UserName:" /> ? ? < mx:Label x = "10" y = "117" text = "UserAge:" /> ? ? < mx:Label x = "10" y = "150" text = "Address:" /> ? ? < mx:TextInput x = "108" y = "78" id = "txtName" width = "146" /> ? ? < mx:TextInput x = "107" y = "115" id = "txtAge" width = "147" /> ? ? < mx:TextInput x = "107" y = "148" id = "txtAddress" width = "147" /> ? ? < mx:Button x = "272" y = "112" label = "Call Bean" id = "btnCallBean" click = "onCallBean();" /> ? ? < mx:Text x = "397" y = "80" width = "246" id = "vtxtName" /> ? ? < mx:Text x = "397" y = "117" width = "246" id = "vtxtAge" /> ? ? < mx:Text x = "397" y = "150" width = "246" id = "vtxtAddress" /> ? ? </ mx:Canvas > ? </ mx:Application > ?   ?

????? 16、DEMO完成后目录结构如图:

  17、DEMO功能完成最终效果如图:源码下载:
  

  flex还可以通过如XMLSocket FMS 二进制套接字等同服务器交互,就不再赘述了本系列课程到此告一段落!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读