輕松

          記述我學習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 輕松 閱讀(5808) 評論(1)  編輯  收藏

          評論

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 江源县| 苏尼特右旗| 武宁县| 皋兰县| 淮安市| 句容市| 萍乡市| 东山县| 金湖县| 收藏| 甘谷县| 汉源县| 上高县| 新巴尔虎左旗| 东方市| 乌审旗| 竹北市| 丹江口市| 木兰县| 阿图什市| 乐清市| 潼南县| 红桥区| 讷河市| 卫辉市| 永兴县| 晋城| 依安县| 厦门市| 金乡县| 攀枝花市| 黄龙县| 丰顺县| 仁化县| 平舆县| 邵阳县| 宁化县| 阜平县| 隆子县| 石狮市| 新沂市|