輕松

          記述我學習java的里程

          常用鏈接

          統計

          積分與排名

          友情鏈接

          最新評論

          通過blazeds讓FLEX與java通信

          準備:

          JDK:sun jdk 1.6

          開發工具:eclipse+flex builder

          flex sdk版本:  3.2

          應用服務器: tomcat 6.0

          blazed:blazeds-turnkey-3.2.0.3978 下載地址是:http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-turnkey-3.2.0.3978.zip

          新建項目:

              等全部環境安裝好后,打開裝了flex builder(flex 4.0以后叫flash builder了),選擇Flex Development 視圖,新建項目選擇Flex Project ,填寫新建項目的名稱,項目存儲的目錄,在Server Technology標簽中的application Server Type選擇J2EE,選中Use remote object access service和Create combined Java/Flex project using WTP(這個一定要記的選上)選項,然后Next.如下圖:

           

              在第二頁中J2EE settings,Target runtime如果還沒有可以先添加一個預先準備后的tomcat環境。然后選擇它。在Compiled Flex application location的Out Folder改成與上面Content Folder相同的WebContent,注意這個一定要改,否則無法自動編譯過去,調試時瀏覽器無法訪問。如下圖:

           

          新建好項目后,還要修改一個關鍵的項目屬性。將Flex Server標簽中的Context Root修改為FirstJavaFlex(這一塊很重要,在沒有配置RemoteObject 的endPoint屬性的時候,會用這個Context去編譯Flex),還要注意一下Root URL參數中的端口號,因為默認是8080,可是如果你用的是blazeds-turnkey包中的tomcat的時候,那個端口號是8400記著一定也要改一下。如下圖:

           


          就這樣新建好項目之后,java源文件放在src目錄下,flex源文件放在flex_src目錄下。

          接下來就是寫代碼了。新建好項目之后會在flex_src下生成一個FirstJavaFlex.mxml的文件。

          我的java類的代碼如下:

          view plaincopy to clipboardprint?
          package com.java.flex;  
           
          public class FirstJavaFlex {  
           
              public String helloJavaFlex(String name) {  
                  System.err.println("call java success!");  
                  return "welcome to JavaFlex world: "+name;  
              }  
          }  
            
          package com.java.flex;

          public class FirstJavaFlex {

           public String helloJavaFlex(String name) {
            System.err.println("call java success!");
            return "welcome to JavaFlex world: "+name;
           }
          }
           

          這個代碼也很簡單吧不多說了。

          下面是最關鍵的一步打開WEB-INF\flex目錄中的remoting-config.xml文件在里面

          添加一段遠程目錄的注冊,

           <destination id="firstJavaFlex">
            <properties>
             <source>com.java.flex.FirstJavaFlex</source>
            </properties>
           </destination>

          添加完后的remoting-config.xml文件如下:

          view plaincopy to clipboardprint?
          <?xml version="1.0" encoding="UTF-8"?> 
          <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="firstJavaFlex"> 
                  <properties> 
                      <source>com.java.flex.FirstJavaFlex</source> 
                  </properties> 
              </destination> 
          </service> 
          <?xml version="1.0" encoding="UTF-8"?>
          <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="firstJavaFlex">
            <properties>
             <source>com.java.flex.FirstJavaFlex</source>
            </properties>
           </destination>
          </service>
           


          接下來修改FirstJavaFlex.mxml,代碼如下:

          view plaincopy to clipboardprint?
          <?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.controls.Alert;  
                      import mx.rpc.events.ResultEvent;  
                      public function callJava():void {  
                          remoteHello.dd(myName.text);  
                          remoteHello.addEventListener(ResultEvent.RESULT,getRomoteHelloRes);  
                      }  
                      private function getRomoteHelloRes(e: ResultEvent):void{  
                          Alert.show(e.result.toString());  
                      }  
                        
                      private function error(e:FaultEvent):void {  
                          eerrorMsg.text=e.message.toString();  
                      }  
                  ]]--> 
              </mx:Script> 
              <mx:RemoteObject destination="helloJavaFlex" id="remoteHello" fault="error(event)"> 
                    
              </mx:RemoteObject> 
              <mx:Button x="338" y="103" label="call java" click="callJava()"/> 
              <mx:TextInput x="155" y="103" id="myName"/> 
              <mx:Text x="78" y="105" text="your name:  
          " height="20" width="74"/> 
              <mx:Text x="56" y="174" text="error message:" height="20" width="96"/> 
              <mx:TextArea id="errorMsg" width="256" height="200" x="155" y="173"> 
                    
              </mx:TextArea> 
          </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.controls.Alert;
             import mx.rpc.events.ResultEvent;
             public function callJava():void {
              remoteHello.dd(myName.text);
              remoteHello.addEventListener(ResultEvent.RESULT,getRomoteHelloRes);
             }
             private function getRomoteHelloRes(e: ResultEvent):void{
              Alert.show(e.result.toString());
             }
             
             private function error(e:FaultEvent):void {
              errorMsg.text=e.message.toString();
             }
            ]]-->
           </mx:Script>
           <mx:RemoteObject destination="helloJavaFlex" id="remoteHello" fault="error(event)">
            
           </mx:RemoteObject>
           <mx:Button x="338" y="103" label="call java" click="callJava()"/>
           <mx:TextInput x="155" y="103" id="myName"/>
           <mx:Text x="78" y="105" text="your name:
          " height="20" width="74"/>
           <mx:Text x="56" y="174" text="error message:" height="20" width="96"/>
           <mx:TextArea id="errorMsg" width="256" height="200" x="155" y="173">
            
           </mx:TextArea>
          </mx:Application>
           

          最后界面是這樣的,如下圖:

           


          簡單解釋一下:

          界面上有一個TextInput用來輸入調用遠程java類的參數。TextArea用來顯示調用不成功的錯語信息。Button的click事件用來觸發調用遠程java方法。還有一個在界面上不顯示的RemoteObject對象是用來注冊遠程java目標的。

          好了運行一下吧。

          右鍵WebContent目錄中的FirstJavaFlex.html文件選擇Run as->Run on Server.看一下運行結果吧。如下圖:

           

          點擊一下call java 按鈕,看什么什么情況?如下圖:

           

          恭喜你成功了!

          這個例子很簡單,但因為不熟,我也是調了好久才成功。容易出錯的地址就好個Context的問題了。當然也可以在RemoteObject中明確聲明EndPoint屬性,建議使用相對路徑。

          <mx:RemoteObject destination="firstJavaFlex" id="remoteHello" fault="error(event)" endpoint="messagebroker/amf"/>

          就寫到這吧,下一篇準備寫寫在真實開發中會用到的與spring結合的使用。

           

          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zk_2000/archive/2009/11/02/4759007.aspx

          posted on 2009-11-10 13:12 輕松 閱讀(5809) 評論(1)  編輯  收藏

          評論

          # re: 通過blazeds讓FLEX與java通信 2009-11-10 15:00 <font corlor='red'>red</font>

          <font corlor='red'>red</font>  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 西畴县| 囊谦县| 黄陵县| 镇坪县| 武安市| 韶山市| 新野县| 怀宁县| 仙桃市| 湖北省| 田阳县| 孝义市| 贺兰县| 寻乌县| 灌云县| 盐山县| 定西市| 临朐县| 澎湖县| 衢州市| 武隆县| 贡山| 龙南县| 民勤县| 嘉荫县| 盐源县| 双辽市| 宁陵县| 定结县| 墨玉县| 云林县| 五河县| 诸城市| 邹城市| 广昌县| 龙泉市| 洛隆县| 兴宁市| 诸暨市| 迁安市| 潮安县|