flex+blazeds+java(将java整合到flex中)

最近项目中需要FlexJava进行通信,初步选定使用BlazeDS。看见网上很多HelloWorld的例子都没运行起来,所以决定把自己的经验总结一下分享给大家。

  1. 配置FlexJava Web项目的开发的开发环境,这里就不再赘述了,我使用的是Eclipse JavaEE + Flex Builder
  2. 下载BlazeDS压缩包,好像有三种版本(Turkeybinsource), 我用的是bin,解压后里面有一个blazeds.war
  3. Eclipse中新建一个Flex Project名为BlazeApp,服务器选J2EE
  4. J2EE Settings中的Flex war File选择BlazeDS解药后得到的blazeds.war
  5. 建完工程后需要修改一下Context root,右键-> Properties -> Flex Server -> Context root 改成/BlazeApp.
  6. src目录下新建包demo,在包下新建类HelloWorld,代码如下

Java代码

  1.  
    1. package demo;   
    2.   
    3. public class HelloWorld {   
    4.        
    5.     public String sayHello(String name){   
    6.         System.out.println("Hello "+name);   
    7.         return "Hello "+name;   
    8.     }   
    9. }  

package demo;

 

public class HelloWorld {

public String sayHello(String name){

  System.out.println("Hello "+name);

  return "Hello "+name;

}

}

 

  1. 修改WebContent/WEB-INF/flex/remoting-config.xml,在其中加入

Xml代码

  1.  
    1. <destination id="Hello">  
    2.        <properties>  
    3.            <source>demo.HelloWorld</source>  
    4.        </properties>  
    5. </destination>  

<destination id="Hello">

       <properties>

           <source>demo.HelloWorld</source>

       </properties>

</destination>

 

  1. 修改BlazeApp.mxml,代码如下

Mxml代码

  1.  
    1. <?xml version="1.0" encoding="utf-8"?>   
    2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">   
    3. <mx:Script >         
    4. <![CDATA[ import mx.rpc.events.FaultEvent;       
    5.    import mx.rpc.events.ResultEvent;       
    6.       [Bindable]       
    7.       private var helloResult:String;      
    8.          
    9.       private function sayHello():void {       
    10.         ro.sayHello(inputText.text);       
    11.         }       
    12.            
    13.        private function resultHandler(event:ResultEvent):void {       
    14.           helloResult = event.result as String;       
    15.        }    
    16.           
    17.    ]]>      
    18. </mx:Script >   
    19. <mx:RemoteObject id="ro" destination="Hello" result="resultHandler(event)"/>   
    20. <mx:HBox x="0" y="10" width="100%">   
    21.    <mx:Label text="Name:" id="nameLabel"/>   
    22.    <mx:TextInput id="inputText"/>   
    23.    <mx:Button label="say Hello" id="nameButton" click="sayHello()"/>   
    24.    <mx:Label id="resultLabel" text="{helloResult}"/>   
    25. </mx:HBox>   
    26.   
    27. </mx:Application>  

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script >     

<![CDATA[ import mx.rpc.events.FaultEvent;   

   import mx.rpc.events.ResultEvent;   

      [Bindable]   

      private var helloResult:String;  

     

      private function sayHello():void {   

        ro.sayHello(inputText.text);   

        }   

       

       private function resultHandler(event:ResultEvent):void {   

          helloResult = event.result as String;   

       }

      

   ]]>  

</mx:Script >

<mx:RemoteObject id="ro" destination="Hello" result="resultHandler(event)"/>

<mx:HBox x="0" y="10" width="100%">

   <mx:Label text="Name:" id="nameLabel"/>

   <mx:TextInput id="inputText"/>

   <mx:Button label="say Hello" id="nameButton" click="sayHello()"/>

   <mx:Label id="resultLabel" text="{helloResult}"/>

</mx:HBox>

 

</mx:Application>

 

  1. 运行项目,在浏览器中输入http://localhost:8080/BlazeApp/BlazeApp.html,试试看~

注:在Flex4中运行上面例子可能会报错,需要在定义RemoteObject的的时候加上如下参数

Xml代码

  1. endpoint="messagebroker/amf"    

 

你可能感兴趣的:(flex+blazeds+java(将java整合到flex中))