Flex与服务器交互之四(使用RemoteObject +BlazeDS+TomCat同Java交互及开发环境配置) .

 由于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 plain copy print ?
  1. JAVA_HOME       C:/Program Files/Java/jdk1.6.0_16  
  2. CATALINA_BASE   D:/Program Files/tomcat  
  3. CATALINE_HOME   D:/Program Files/tomcat  
  4. CLASSPATH       %JAVA_HOME%/lib;%CATALINA_HOME%/lib/servlet-api.jar  
  5. 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看到如下(启动成功):

 

Flex与服务器交互之四(使用RemoteObject +BlazeDS+TomCat同Java交互及开发环境配置) ._第1张图片
      浏览器中输入:“http://localhost:8400/”如下(恭喜JAVA环境+BlazeDS+Tomcat配置成功):

Flex与服务器交互之四(使用RemoteObject +BlazeDS+TomCat同Java交互及开发环境配置) ._第2张图片
   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”)

  1. <Host name="localhost"  appBase="webapps"  
  2.            unpackWARs="true" autoDeploy="true"  
  3.            xmlValidation="false" xmlNamespaceAware="false">  
  4.  <Context path="/WebSite" docBase="E:/学习/BlazeDs/WebSite" debug="0" reloadable="true" crossContext="true" />  
  5. </Host>  

 


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


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


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

Flex与服务器交互之四(使用RemoteObject +BlazeDS+TomCat同Java交互及开发环境配置) ._第3张图片
   12、在eclipse中编写完成Java类及方法 并编译:
       UserBean类:
 

  1. package myBlazeDS;  
  2.  public class UserBean {  
  3.   private String _name;  
  4.   private int _age;  
  5.   private String _address;  
  6.   public UserBean(String name,int age,String address)  
  7.   {  
  8.    this._name = name;  
  9.    this._age = age;  
  10.    this._address = address;  
  11.   }  
  12.     
  13.   public void setName(String name)  
  14.   {  
  15.    this._name = name;  
  16.   }  
  17.   public String getName()  
  18.   {  
  19.    return this._name;  
  20.   }  
  21.     
  22.   public void setAge(int age)  
  23.   {  
  24.    this._age = age;  
  25.   }  
  26.   public int getAge()  
  27.   {  
  28.    return this._age;  
  29.   }  
  30.     
  31.   public void setAddress(String address)  
  32.   {  
  33.    this._address = address;  
  34.   }  
  35.   public String getAddress()  
  36.   {  
  37.    return this._address;  
  38.   }  
  39.  }  

 

 

 外部接口类BlazeDSService:
 

  1. package myBlazeDS;  
  2.   
  3.  public class BlazeDSService {  
  4.   public String GetBlazeService(String user)  
  5.   {  
  6.    return user +":欢迎使用Java BlazeDS同Flex交互";  
  7.   }  
  8.   public UserBean GetUserInfo(String name,int age,String address)  
  9.   {  
  10.    return new UserBean("User:" + name, age,address + " China");  
  11.   }  
  12.  }  

 

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

  1. <destination id="FirstBlazeService">  
  2. <properties>  
  3.  <source>  
  4.   myBlazeDS.BlazeDSService  
  5.  </source>  
  6.  <scope>application</scope>  
  7. </properties>  
  8. </destination>  

 

 


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

  1. <mx:RemoteObject id="myJavaService" destination="FirstBlazeService" showBusyCursor="true">  
  2.  <mx:method name="GetBlazeService" fault="onBlazeDSFalut(event)" />  
  3.  <mx:method name="GetUserInfo" result="getUserBean(event)" fault="onBlazeDSFalut(event)" />  
  4. </mx:RemoteObject>  

 


  15、完整体Flex页面代码:
   

  1. <?xml version="1.0" encoding="utf-8"?>  
  2.  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">  
  3.  <mx:RemoteObject id="myJavaService" destination="FirstBlazeService" showBusyCursor="true">  
  4.   <mx:method name="GetBlazeService" fault="onBlazeDSFalut(event)" />  
  5.   <mx:method name="GetUserInfo" result="getUserBean(event)" fault="onBlazeDSFalut(event)" />  
  6.  </mx:RemoteObject>  
  7.  <mx:Canvas width="653" height="190" x="10" backgroundColor="#297E8D" fontSize="15">  
  8.   <mx:Script>  
  9.    <!--[CDATA[  
  10.     import mx.rpc.events.FaultEvent;  
  11.     import mx.rpc.events.ResultEvent;  
  12.     import mx.controls.Alert;  
  13.     import mx.core.UIComponent;  
  14.     import mx.core.BitmapAsset;  
  15.     import mx.core.ByteArrayAsset;  
  16.     private function onCallJava():void  
  17.     {  
  18.      myJavaService.GetBlazeService(nameInput.text);  
  19.     }  
  20.     private function onCallBean():void  
  21.     {  
  22.      myJavaService.GetUserInfo(txtName.text,int(txtAge.text),txtAddress.text);   
  23.        
  24.     }  
  25.     private function getUserBean(e:ResultEvent):void  
  26.     {  
  27.      var o:*=e.result as Object;  
  28.      vtxtName.text = o.name;  
  29.      vtxtAge.text = o.age;  
  30.      vtxtAddress.text = o.address;  
  31.     }   
  32.     private function onBlazeDSFalut(e:FaultEvent):void  
  33.     {  
  34.      Alert.show(e.message.toString());  
  35.     }   
  36.    ]]-->  
  37.   </mx:Script>  
  38.   <mx:TextInput id="nameInput"  x="108" y="18" width="145"/>  
  39.   <mx:Button label="Call Java" click="onCallJava();" x="274" y="18" fillAlphas="[1.0, 1.0]"/>  
  40.   <mx:TextArea text="{myJavaService.GetBlazeService.lastResult}"  x="397" height="34" width="246" y="19"/>  
  41.   <mx:Label x="10" y="61" width="632" height="2"/>  
  42.   <mx:Label x="10" y="80" text="UserName:"/>  
  43.   <mx:Label x="10" y="117" text="UserAge:"/>  
  44.   <mx:Label x="10" y="150" text="Address:"/>  
  45.   <mx:TextInput x="108" y="78" id="txtName" width="146"/>  
  46.   <mx:TextInput x="107" y="115" id="txtAge" width="147"/>  
  47.   <mx:TextInput x="107" y="148" id="txtAddress" width="147"/>  
  48.   <mx:Button x="272" y="112" label="Call Bean" id="btnCallBean" click="onCallBean();"/>  
  49.   <mx:Text x="397" y="80" width="246" id="vtxtName"/>  
  50.   <mx:Text x="397" y="117" width="246" id="vtxtAge"/>  
  51.   <mx:Text x="397" y="150" width="246" id="vtxtAddress"/>  
  52.   </mx:Canvas>  
  53.  </mx:Application>  
  54.     

 

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

 Flex与服务器交互之四(使用RemoteObject +BlazeDS+TomCat同Java交互及开发环境配置) ._第4张图片

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

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

 

你可能感兴趣的:(blazeds)