夢(mèng)幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評(píng)論 :: 0 Trackbacks
          <2010年10月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          公告

          本博客中未注原創(chuàng)的文章均為轉(zhuǎn)載,對(duì)轉(zhuǎn)載內(nèi)容可能做了些修改和增加圖片注釋,如果侵犯了您的版權(quán),或沒有注明原作者,請(qǐng)諒解

          常用鏈接

          留言簿(21)

          隨筆分類(644)

          隨筆檔案(669)

          文章檔案(6)

          最新隨筆

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

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

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

          Flex與后臺(tái)服務(wù)器上的應(yīng)用程序通信的手段有三個(gè):
          (1) HTTPService: 采用標(biāo)準(zhǔn)的HTTP請(qǐng)求,服務(wù)器返回 XML 格式的消息;
          (2) WebService: 采用SOAP消息格式進(jìn)行通信,也是XML格式,它是一種專門用于Web的業(yè)界標(biāo)準(zhǔn);
          (3) RemoteObject: 采用 AMF 消息格式進(jìn)行通信,這是二進(jìn)制的格式,因此它的效率最高。BlazeDS就是采用這個(gè)技術(shù)的。

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

          本文的目的是詳細(xì)說明BlazeDS開發(fā)環(huán)境的安裝,以及創(chuàng)建BlazeDSr的 Hello, world! 項(xiàng)目的過程。

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

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

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

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

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

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

          6、BlazeDS 在創(chuàng)建項(xiàng)目時(shí)用;

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

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

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

          復(fù)制后不要忘記重新發(fā)布一下項(xiàng)目,否則下一步不能做。

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

          項(xiàng)目創(chuàng)建成功

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

          <?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>

          按執(zhí)行按鈕,這時(shí)應(yīng)該彈出瀏覽器窗口,能看到頁面的內(nèi)容 Hello, World!

          5、測(cè)試與Java的集成:
          將項(xiàng)目切換到MyEclipse Java Enterprise 視圖
          在javasrc中按需要?jiǎng)?chuàng)建包,然后創(chuàng)建一個(gè)類:

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

          將項(xiàng)目視圖切換到 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可以刪除掉),使其成為(可以直接復(fù)制使用,有關(guān)代碼的含義請(qǐng)參見其它資料):

          <?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="發(fā)送消息" click="remoteObject.sayHello('huang')" x="256.5" y="197"/>
           
          </mx:Application>
          posted on 2010-10-25 10:53 HUIKK 閱讀(2488) 評(píng)論(0)  編輯  收藏 所屬分類: FLASH
          主站蜘蛛池模板: 开鲁县| 鹤壁市| 东莞市| 枣强县| 临猗县| 东兴市| 龙岩市| 桂东县| 荃湾区| 阿拉善左旗| 陵水| 七台河市| 北流市| 水城县| 鲁甸县| 阳新县| 嘉祥县| 海南省| 滁州市| 博野县| 吉木萨尔县| 平湖市| 太湖县| 宣威市| 临高县| 宣化县| 顺昌县| 平安县| 偃师市| 类乌齐县| 吉林省| 沅江市| 恭城| 无为县| 清镇市| 西宁市| 通渭县| 威宁| 娄烦县| 黄骅市| 东丰县|