夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks

          BlazeDS 是一個基于服務器的 Java 遠程控制 (remoting) 和 Web 消息傳遞 (messaging) 技術,它提供了 Java 應用程序和運行在瀏覽器上的 Adobe Flex 應用程序相互通信的一種手段,并且是一種高效的手段。也就是說它實現了 Java 和 Flex 的無縫集成。

          BlazeDS是開源的,Adobe原來有一個商業版本,這是商業版本的開源化的產品,功能比商業版本少一些,但基本滿足需要。

          Flex與后臺服務器上的應用程序通信的手段有三個:
          (1) HTTPService: 采用標準的HTTP請求,服務器返回 XML 格式的消息;
          (2) WebService: 采用SOAP消息格式進行通信,也是XML格式,它是一種專門用于Web的業界標準;
          (3) RemoteObject: 采用 AMF 消息格式進行通信,這是二進制的格式,因此它的效率最高。BlazeDS就是采用這個技術的。

          據說 BlazeDS 還將開發適用于 .net 和 PHP 版本,不過采用相同技術(RemoteObject)的各種開源產品也已有多種了,可在 Java, .net, PHP下使用。

          本文的目的是詳細說明BlazeDS開發環境的安裝,以及創建BlazeDSr的 Hello, world! 項目的過程。

          一、相關軟件
          1、安裝 Java JDK 5.0 以上版本;
          這是必備的。
          2、安裝 Eclipse 3.2 以上版本;
          這也是必備的。
          3、安裝 MyEclipse 6.0 以上版本;
          它用于開發 J2EE 項目,可編寫 Java 程序,編寫網頁等。
          4、安裝 Flex Builder 3 Plug-in版本(不能用獨立版本);
          它用于開發 Flex 前端界面。
          5、安裝 tomcat 6.0 以上版本;
          Web服務器,也可用其它的,例如JBoss等。
          6、下載 BlazeDS,有二個版本:
          一是只有4M大小的版本,這是核心;
          二是166M的版本,稱為blazeds-turnkey,它內置了tomcat以及文檔、實例和支持實例的數據庫系統(HSQL),以及flex sdk。
          本教程只需BlazeDS的核心,下載后備用。

          二、安裝過程
          1、安裝 Java JDK 5.0 或 6.0,注意不是JRE,只要一路 Next 就行;
          安裝完要作環境變量配置:
          JAVA_HOME,為JDK的安裝目錄,如 C:\Program Files\Java\jdk1.6.0_06
          CLASSPATH,值為 .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar,注意最前面的句號,不能漏了;
          path,為安裝目錄下的 bin目錄,值為 %JAVA_HOME%\bin

          2、安裝 Eclipse 3.2,只要解壓縮到任意一個目錄中;
          直接運行其中的 eclipse.exe 文件即可,為提高運行速度,可為其分配更多的內存,即運行時加上下述參數:
          -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
          方法是為 eclipse.exe 建立一個快捷方式,然后在快捷方式的屬性中在eclipse.exe后加一空格,再加上上述參數

          3、安裝 MyEclipse 6.0 以上版本,在安裝過程中需要指定 Eclipse 的位置,然后一路 Next即可;
          安裝后運行MyEclipse或eclipse都同樣是打開MyEclipse;

          4、安裝 Flex Builder 3 Plug-in版本,可以安裝在任意的目錄中,在安裝過程中同樣需要指定 Eclipse 的位置,然后一路 Next 即可;
          安裝后需配置 eclipse:
          在上述第2步中的eclipse目錄下創建一個目錄,名為links,如果已經存在該目錄(通常是已有了),則使用原有的;
          在links目錄下新建一個文件,名為 flex.link(文件名任意,后綴必須是link),內容為path=Flex Builder 3 Plug-in的安裝目錄,例如:
          path=D:\\program\\Adobe\\Flex Builder 3 Plug-in
          注意目錄的分隔符或者用“\\”,或者用“/”,前者為Windows風格,后者為Linix風格;

          5、安裝 tomcat 6.0,將文件解壓縮到任意目錄中。

          6、BlazeDS 在創建項目時用;

          三、創建Hello, workd項目:
          下述步聚將創建名為web的一個集成Java的Flex項目, 需要時還可以添加 hibernate, spring能力。下面的web都是指項目名,可以改為你的項目名。
          1、創建一個MyEclipse的Web Project項目;
          在MyEclipse中,選擇 File -> New,在彈出的菜單中選 Web Project,如果看不到該選項,則選 Others,然后再選:
          MyEclipse -> Java Enterprise Projects -> Web Project
          在下一步中指定項目的名稱,例如web,在這一步中記得將Source folder改為另外的名字,例如javasrc或jsrc,這是為了避免與flex的源文件夾名沖突;
          其它保留默認值,完成項目的創建。

          2、為項目配置服務器
          首先啟動 tomcat 服務器:
          在tomcat解壓縮的目錄中的bin下找到 startup.bat 文件,雙擊運行,這時將打開一個命令行窗口,在整個開發過程中不要關閉這個窗口,否則tomcat就停止了。
          配置MyEclipse使用上述的tomcat 服務器;
          將項目發布到 tomcat服務器;
          上述2個小步聚不會做的,請查一下MyEclipse項目的使用的資料(配置tomcat,發布項目,啟動和停止tomcat)。
          配置后可以用瀏覽器測試項目是否能正常運行:
          http://127.0.0.1:8080/web/index.jsp

          3、將 BlazeDS 解壓縮到項目中,步聚如下:
          將下載的 BlazeDS.war 文件改后綴名為 zip,然后解壓縮到任意的目錄中,再將解壓縮出來的二個文件夾移動或復制到前一步中創建的項目中。
          注意:這兩個文件夾是META-INF和WEB-INF,要把它們覆蓋上一步創建的項目中的同名目錄,僅是目錄名相同,文件是不同的。

          復制后不要忘記重新發布一下項目,否則下一步不能做。

          4、為項目添加Flex Project Nature;
          這一步比較重要,必須是在前述所有步聚正確完成后才能進行:
          從項目右鍵菜單中選擇 Flex Project Nature -> Add Flex Project Nature (在選擇中是第二個選擇);
          在彈出的窗口中的Application server type 選擇 J2EE;
          在下一個窗口中設置好合適的參數:
          (1)反選 Use default location for local LiveCycle Date Services server
          (2)Root folder: 選擇項目發布的目錄:例如:D:\program\tomcat6\webapps\web
          (3)Root URL: 在瀏覽器中訪問項目的網址,例如:http://localhost:8080/web/
          (4)Context root: 項目的上下文,一般就是項目名,例如:/web
          項目必須是有BlazeDS的相關包,即上一步中復制到項目中,然后再發布到上述設置的目錄中。
          設置好后,還需要點擊 Validation configuration,測試配置是否正確,只有正確時,才能繼續進行下去。
          這時會出現一個錯誤提示,當完成下述設置后,錯誤將得到改正。并且整個項目創建完成。
          修改項目的Flex Compile選項:
          從項目右鍵菜單中選擇 Properties;
          在打開的窗口中選擇 Flex Compiler,然后在右邊的 User a specific SDK中選 Flex 3.2。

          項目創建成功

          4、測試Flex 前端;
          先測試 Flex 前端,在web.mxml文件中增加一行,添加一個Label,使整個文件內容如下:

          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
          <mx:Label x="228" y="95" text="Hello, World!"/>
           
          </mx:Application>

          按執行按鈕,這時應該彈出瀏覽器窗口,能看到頁面的內容 Hello, World!

          5、測試與Java的集成:
          將項目切換到MyEclipse Java Enterprise 視圖
          在javasrc中按需要創建包,然后創建一個類:

          package org.ngweb.flex;
           
          public class Hello {
          public String sayHello(){
          return "Hello, world!";
          }
          public String sayHello(String s){
          return "Hello, "+s+"!";
          }
          }

          將項目視圖切換到 Flex Development 視圖:
          打開 WebRoot/WEB-INF/flex/remoting-config.xml文件,將其修改成:

          <?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="helloWorld">
          <properties>
          <!-- 這里要寫完整路徑:包名 + 類名 -->
          <source>org.ngweb.flex.Hello</source>
          </properties>
          </destination>
          </service>

          然后在web.mxml中,添加一段代碼(第4步增加的Label可以刪除掉),使其成為(可以直接復制使用,有關代碼的含義請參見其它資料):

          <?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;
           
           
          private function resultHandler(event:ResultEvent):void {
          Alert.show(event.result.toString(), "成功");
          }
           
          private function faultHandler(event:FaultEvent):void {
          Alert.show(event.fault.toString(), "失敗");
          }
          ]]>
          </mx:Script>
           
          <!-- destination 屬性值要和 remoting-config.xml 中 destination 的 id 一致-->
          <mx:RemoteObject id="remoteObject"
          destination="helloWorld"
          result="resultHandler(event)"
          fault="faultHandler(event)"/>
           
          <mx:Button label="發送消息" click="remoteObject.sayHello('huang')" x="256.5" y="197"/>
           
          </mx:Application>
          posted on 2010-10-25 10:53 HUIKK 閱讀(2489) 評論(0)  編輯  收藏 所屬分類: FLASH
          主站蜘蛛池模板: 崇义县| 兰西县| 灌阳县| 鱼台县| 勐海县| 阳江市| 澄城县| 岳阳市| 武宣县| 加查县| 东台市| 竹溪县| 桂平市| 平昌县| 通辽市| 河西区| 民乐县| 政和县| 石台县| 开原市| 额济纳旗| 鄂尔多斯市| 平乡县| 涞水县| 湘乡市| 曲沃县| 乌什县| 衡阳县| 萝北县| 仁布县| 永安市| 云浮市| 铁岭市| 寿光市| 宝兴县| 阜康市| 元阳县| 皋兰县| 龙胜| 健康| 金乡县|