posts - 13,comments - 19,trackbacks - 0

           

          Flex + LCDS + Java 入門教程

          一.引

                 很多人在帖子和群中問到過一些關(guān)于建立Flex+LCDSFDS)工程的問題,由于操作上的東西,很難簡單說清楚,于是寫了一個簡單的教程(本來很早就答應(yīng)過的,結(jié)果被newfish逮住做東西,加上公司的事,一直抽不出時間哈,現(xiàn)在想換換頭腦,偷樂一下懶哈,各位別跟newfish大大說),幫助大家入門,其實這些東西都是在LCDSsample中包含了的(當然,sample只是包含源碼)。

                 本教程通過圖文介紹和對一些關(guān)鍵性的地方進行解釋,讓大家了解如何新建FlexLCDS工程,并利用工具快速整合和部署J2EE項目和LCDS項目,掌握了簡單的請求RemoteObject和配置的方法,初步掌握LCDS的應(yīng)用之一。

          二.介紹

          1.    Flex是什么?

                 ……

          2.        LCDS是什么?

          LCDSLiveCycle Data Service)之前叫做FDSFlex Data Service),他是基于java(也有ColdFusion版的)后端的數(shù)據(jù)服務(wù)工程,功能包括映射Java對象到Flex對象(包括調(diào)用Java類的方法)、RTMPReal Time Message Protocol)、代理、服務(wù)端生成PDF等等功能,詳細請參考LCDS里的說明。官方有下載,需要注冊會員(免費)。

          LCDS實際是付費的,但是免費也能使用,似乎是少了多CPU的支持。當然還有一些其他的數(shù)據(jù)服務(wù),比如AMFPHP之類的。

          當然,LCDS提供的功能我們都能自己實現(xiàn),并非Flex脫離了LCDS就不能和后臺打交道了,除了RemoteObject還有WebSerivceHTTPService等等。只是說,LCDS提供了更多的方便和特性。

          3.        Java是什么?

          ……

          三.準備

          1.    下載開發(fā)環(huán)境:

          Eclipse 3.3 + FlexBuilder3 beta2 插件版 +MyEclipse 6.0 +Lcds + Tomcat 5和以上(官方都有下載,或者google里搜一搜哈)

          MyEclipse:做Java開發(fā)都應(yīng)該知道MyEclipse是比較好的J2EE項目的開發(fā)及部署工具的,我們主要用它來部署FlexJava結(jié)合的項目。6.0是適合Eclipse3.3版的。他自帶了一個Tomcat服務(wù)器

          FB3:相比FB2,他在LCDS工程上做了很大的改進,特別是beta2,項目向?qū)Ц拥囊锥冶?/span>FB2更好的是,Flex.war是被打包在你的Flex項目中的,而不需要單獨的部署了。性能上也高出FB2

          LCDS:安裝lcds后,起作用的是里面的flex.war文件,實際上,這就是一個j2ee的工程。在發(fā)布到web應(yīng)用服務(wù)器后(比如tomcatj4run等)就會被解壓成一個工程。當然,在FB3里,這個發(fā)布的過程會更加的簡單。

                 2.    安裝:

                       

          四.入門教程

                 1.    新建FlexLCDS工程

                        File -> new -> Flex Project …

                        注:以下設(shè)置絕大多數(shù)都可以在項目屬性中可以修改。

                        1).   向?qū)Ы缑?/span>1

          說明:Java source folder就是你自己java業(yè)務(wù)源碼存放的根目錄,在FB3里,LCDS項目旨在將Java J2ee項目和FlexLcds項目混合。

          當然如果你不選擇 combined 兩個在一起,那么就麻煩些:要么你再單獨新建一個Flex項目,而這個項目只寫java代碼。要么再建一個J2ee工程寫java代碼,而這個項目只寫Flex代碼,但最后要把Java編譯后的class文件放到這個項目下的webroot"web-inf"classes目錄中。即不管怎樣,最后發(fā)布時,java編譯后的class文件必須和lcds部署的項目在一起。(聽起來繞昏頭了?那就在一個工程里吧)

                       

          2).   向?qū)Ы缑?/span>2

          說明:Target runtime實際上沒什么用(后來我刪除了配置文件里的對應(yīng)信息,也沒問題),但是不指定就不能繼續(xù),如果這里顯示的是<none>那么就新建一個Tomcatruntime,簡單的只需要指定tomcat的安裝目錄即可。

          Content folder實際上就是最終編譯后的容器目錄,因此,Lcdsflex.war文件將會發(fā)布到該目錄下的web-inf下的flex目錄中。同時因為教程采用的是MyEclipse,他默認的就是發(fā)布WebRoot里的內(nèi)容,為了自動化,因此這里改為了WebRoot(這也是java開發(fā)的習慣)

          Flex WAR file 指的是安裝了lcds后的flex.war文件的路徑

          Compilation options指定了flex文件的編譯方式,選擇推薦的在FlexBuilder里編譯吧,雖然開發(fā)時多耗點時間,但是在發(fā)布后不會占用服務(wù)器的編譯處理時間,對用戶來說是有好處的。

          Output folder 指的是Flex編譯后的swfhtml等文件存放的路徑,這里改為了WebRoot"bin

          3).   向?qū)Ы缑?/span>3

                        說明:Main source folder flex的源碼存放根目錄,當然和java源碼分開了。

          Output folder URL 是在開發(fā)過程中運行和調(diào)試的請求路徑,這個與發(fā)布無關(guān),不會影響任何你在程序中使用的路徑,但是能使開發(fā)方便

          注意:FlexBuilder3這里存在bug,新建工程時,部分自定義的屬性并沒有保存下來,而必須在新建后的項目屬性中更改,后面有說明到

          放心這些設(shè)置都可以在以后修改。

          4).   新建完成的項目結(jié)構(gòu)看起來是這樣的

                 2.    MyEclipse添加Web容器

                        之前說到了,MyEclipse是很好用的J2EE的開發(fā)插件,其中就包含了部署功能。我們可以拋開煩瑣的手動部署,交由MyEclipse完成吧,當然,首先得讓你的FlexLCDS工程變成為J2EEWeb工程。

                       

                        1).   向?qū)Ы缑?/span>1

                       

                        注意:不要點快了,把這里的Create web.xml取消,這樣就不會覆蓋LCDS創(chuàng)建的web.xml文件

                        現(xiàn)在我們的工程的圖標變成了J2EE Web 工程了,這意味著,你可以用MyEclipse來發(fā)布它或者添加更多容器,比如hibernatespring

                       

          3.      部署FlexLCDS工程

          有了MyEclipse,那么你就不用手動的部署你的項目了,可以簡單的通過

          點擊工具欄上的這個圖標

          1).   部署向?qū)?/span>1

          注意:(如果你的列表中沒有服務(wù)器,那么就自己建一個)

          2).   新建部署Web應(yīng)用服務(wù)器

          注意:如果是MyEclipse6.0,則會自帶一個Tomcat服務(wù)器。如果不是6.0,那么點Edit server connectors…自己添加一個tomcat

          finish后則會開始部署。成功后會在Deployment status里提示success,并且看到列表中你的項目已經(jīng)成功部署

                

          4.      修改一下項目的訪問路徑

          打開項目的屬性,在這里,我們可以重新修改項目編譯和發(fā)布的配置,包括先前向?qū)Ю锏脑O(shè)置

                 修改output folder url

          為什么要這么做?

          這樣每次發(fā)布都會自動將編譯的最終swf文件直接發(fā)布至WebRoot"bin目錄下,而下面的output folder url則會在我們啟動和調(diào)試項目時,直接請求這個路徑(這跟發(fā)布無關(guān),只是我們在開發(fā)過程中會方便些)

                

          5.      修改Flex Server的項目容器屬性(非常重要,多數(shù)連接路徑錯誤就是這里配置錯誤)

          改成如下配置

          說明:

          Root url 當然就是你的web服務(wù)器的根路徑了,Tomcat默認是8080端口,如果改了就自己修改

          Context root 就是LCDS工程的名稱(注意:如果你分開為兩個工程,則這里指的是你J2ee項目的名稱,而不是你Flex項目的名稱,因為你在請求Java的數(shù)據(jù)服務(wù)),在Flex請求LCDS時,會采用這個作為參數(shù)

          http://{server.name}:{server.port}/{context.root}/messagebroker/amf

          如果Context root錯了,那么永遠不可能正確的請求LCDS的服務(wù)了

          確定后,我們來運行測試一下這個FlexLCDS項目是否能正常訪問

          6.      啟動服務(wù)器

          稍等片刻,等到服務(wù)器完全啟動后繼續(xù)下面的操作

          7.      運行訪問

          注:如果之前的Output folder url配置正確,那么會自動的彈出訪問頁面,DEBUG時也是一樣。

          OK,一切順利,至此,你已經(jīng)做到了第一步,即,將Flex項目、LCDS服務(wù)成功的整合至J2EE web 項目,這樣的好處就是今后發(fā)布省的麻煩了。

          五.簡單的RemoteObject

                 1.    什么是RemoteObject

          顧名思義,即遠程對象。這里指的就是在Flex中獲取Java里的對象。有什么用呢?這樣Flex可以更加簡單的獲取服務(wù)端的數(shù)據(jù),比如你在Java中有個方法進行了數(shù)據(jù)查詢,取出的結(jié)果是Array類型,那么你可以很容易通過Flex里的RemoteObject訪問到該類,并調(diào)用該方法,最后返回的數(shù)據(jù)是Flex也兼容的Array對象。

                

          2.        新建Java

          File -> new ->other(如果你沒在列表中看到java class的話)

          1).   新建向?qū)?/span>1

          2).   向?qū)?/span>2

          注意:別忘記了你設(shè)定的java源碼根目錄路徑,如果對java不熟悉的話,這里我就不解釋了,照著做吧。

          3).   編寫如下代碼

          package com.test;

          publicclass FirstJavaClass {

             public String sayHello(String str){

                  return"你說的是:"+str;

             }

          }

          3.        配置Flex LCDSRemoting-config.xml

          1).   他是remoteobject和相關(guān)遠程訪問的配置文件,路徑位于

          注意:現(xiàn)在LCDS是你的項目的一部分了,因此不用來回的在服務(wù)器中修改配置然后再發(fā)布了。

          2).   改寫其代碼如下

          <?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="FirstJavaClassRemoteObject">

                  <properties>

                      <source>com.test.FirstJavaClass</source>

                      <scope>application</scope>

                  </properties>

              </destination>

             

          </service>

          說明:一個destination 指定的就是一個RO對象,他的id就是在FlexRO請求的destinationsource 指的是這個Java類的路徑

          注意:在修改了配置文件后可能需要重啟web服務(wù)器(Tomcat

               

          4.        編寫mxml來請求RO

          1). 打開MyFirstLCDS.mxml編寫代碼如下

          <?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.ResultEvent;

                        import mx.controls.Alert;

                        privatefunction callRO(str:String):void{

                              firstRO.sayHello(str);

             firstRO.addEventListener(ResultEvent.RESULT,getROResult);

                        }

                       

                        privatefunction getROResult(e:ResultEvent) :void {

                              Alert.show(e.result.toString());

                        }

                  ]]>

             </mx:Script>

             <mx:RemoteObject id="firstRO" destination="FirstJavaClassRemoteObject"/>

             <mx:Button click="callRO('hi~你好')" label="請求" />

          </mx:Application>

          2)OK,保存好后,用之前的方法來運行一下看看?

          RemoteObject的簡單教程完

          posted on 2009-03-17 07:58 南山隱士 閱讀(747) 評論(0)  編輯  收藏

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 阿克苏市| 正镶白旗| 三原县| 清水县| 福贡县| 胶州市| 正镶白旗| 桂东县| 延津县| 亚东县| 集贤县| 会东县| 平乡县| 兰坪| 乐都县| 岢岚县| 南投市| 浮山县| 平乡县| 青铜峡市| 乌兰县| 阿瓦提县| 西昌市| 宿松县| 巴彦淖尔市| 临泉县| 大港区| 宁强县| 磐安县| 乌苏市| 六盘水市| 安图县| 黄冈市| 封丘县| 句容市| 得荣县| 阿合奇县| 涞水县| 无极县| 辛集市| 佛学|