<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    輕松

    記述我學習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>  回復  更多評論   


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


    網站導航:
     
    主站蜘蛛池模板: 久久久亚洲裙底偷窥综合| 亚洲精品无码久久不卡| yellow免费网站| 亚洲天堂免费在线视频| 亚洲精品自在在线观看| 91免费国产视频| 亚洲αv久久久噜噜噜噜噜| 18禁在线无遮挡免费观看网站| 亚洲va久久久噜噜噜久久天堂 | 久久亚洲精品成人AV| 日韩电影免费在线观看| 少妇中文字幕乱码亚洲影视 | 亚洲色偷偷偷综合网| 免费无码黄动漫在线观看| 国产亚洲综合久久| 亚洲国产精品专区在线观看| 一级毛片a免费播放王色| 久久亚洲国产中v天仙www | 国产大片51精品免费观看| 黄页网址在线免费观看| 亚洲国产精品无码专区影院 | 99久久免费中文字幕精品| 亚洲国色天香视频| 国产成人免费网站在线观看| 人体大胆做受免费视频| 亚洲AV成人片色在线观看高潮| 性xxxxx免费视频播放 | 午夜影院免费观看| 亚洲精品123区在线观看| 国产jizzjizz免费看jizz| 中文字幕无码毛片免费看| 亚洲妓女综合网99| av无码东京热亚洲男人的天堂| 在线看片免费人成视频久网下载 | 成年18网站免费视频网站| 九九九精品视频免费| 久久精品国产亚洲AV高清热| 国产又大又长又粗又硬的免费视频| WWW国产成人免费观看视频| 亚洲日韩乱码中文无码蜜桃| 免费人成视频x8x8入口|