狂淘

          www.kuangtao.net

             :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            6 隨筆 :: 185 文章 :: 68 評(píng)論 :: 0 Trackbacks

          整合Flex和Java—配置篇

          Author:yongtree

          廢話就不說(shuō)了,要想了解Flex的相關(guān)內(nèi)容就請(qǐng)問(wèn)一下Google,百度吧。切入正題,作為一個(gè)Java程序員學(xué)習(xí)Flex,關(guān)心的就是怎樣將Flex和Java進(jìn)行結(jié)合交互。帶著Java程序員的思維,一開(kāi)始學(xué)習(xí)Flex并沒(méi)有按部就班的學(xué)習(xí)Flex的基礎(chǔ)知識(shí),而是想搞清楚Flex到底怎樣和Java交互的。經(jīng)過(guò)了一個(gè)周末的研究,終于初見(jiàn)成果,下面就重要的講解三種配置的兩個(gè)。

                   在分享這幾種配置之前,先簡(jiǎn)單的介紹一下需要用到的一些資源。

          1、  MyEclipse+Flex插件(官網(wǎng)下載)

          2、  Tomcat6.0作為服務(wù)器(官網(wǎng)下載)

          3、  用BlazeDS(免費(fèi))代替LCDS(收費(fèi)):沒(méi)錢啊,只能先使用免費(fèi)的了。從Adobe官方網(wǎng)站上下載下來(lái),將blazeds.war、ds-console.war、samples.war三個(gè)文件放在tomcat的webapps目錄下。

          Flex+Java配置:

                   第一種:Java工程和Flex工程獨(dú)立,這種方式也是很多人使用的方式,F(xiàn)lex程序員和Java程序員相互獨(dú)立的工作,這種方式網(wǎng)上有很多的資料,在這里就不再 贅述了。

                   第二種:Flex工程加入Java元素

          1、  切換到Flex視圖,新建Flex project,如下圖

          因?yàn)槲覀兪且猨ava和flex結(jié)合,所以在服務(wù)器選擇上我們選擇J2EE

           
           
          存放java類的源文件,我們的目的就是Flex和java在一個(gè)工程里,所以我們這里選擇上

           
           


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

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

          2、  點(diǎn)擊Next,配置J2EE服務(wù)器,如下圖

           
           
           
           


          說(shuō)明:Target runtime實(shí)際上沒(méi)什么用(后來(lái)我刪除了配置文件里的對(duì)應(yīng)信息,也沒(méi)問(wèn)題),但是不指定就不能繼續(xù),如果這里顯示的是<none>那么就新建一個(gè)Tomcat的runtime,簡(jiǎn)單的只需要指定tomcat的安裝目錄即可。

          Content folder實(shí)際上就是最終編譯后的容器目錄,因此,BlazeDS的blazeds.war文件將會(huì)發(fā)布到 該目錄 下的web-inf下的flex目錄中。同時(shí)因?yàn)榻坛滩捎玫氖荕yEclipse,他默認(rèn)的就是發(fā)布WebRoot里的內(nèi)容,為了自動(dòng)化,因此這里改為了WebRoot(這也是java開(kāi)發(fā)的習(xí)慣)

          Flex WAR file 指的是安裝了lcds后的flex.war文件的路徑,但是在這里我們采用的是BlazeDS來(lái)取代lcds,所以這里設(shè)置的是blazeds.war的路徑。

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

          Output folder 指的是Flex編譯后的swf和html等文件存放的路徑,這里改為了WebRoot,意思是發(fā)布到根目錄就可以了。當(dāng)然你可以根據(jù)你的需要和習(xí)慣自行設(shè)置其他的路徑

          3、  點(diǎn)擊下一步,采用默認(rèn)的配置就可以,點(diǎn)擊完成,該工程就建立完成。下圖為該工程的目錄結(jié)構(gòu)

           
           
           
           
           
           
           
           


          4、  讓它變成web工程由MyEclipse發(fā)布吧


           


           
           


           

                        點(diǎn)擊Finish,現(xiàn)在我們的工程的圖標(biāo)變成了J2EE Web 工程了,這意味著,你可以用MyEclipse來(lái)發(fā)布它或者添加更多容器,比如hibernate、spring等

          5、  工程建好以后,你可以通過(guò)右鍵—>屬性來(lái)進(jìn)行更多的設(shè)置。


           


          6、  這樣一個(gè)Flex+Java的工程就建立完成。

          7、  編寫例子,測(cè)試在介紹完第三種方式以后統(tǒng)一介紹。

          第三種:由Web project反向加入Flex,也就是Java+Flex

          1、  先建立一個(gè)web工程:flexweb。(略)

          2、  向flexweb工程手工添加Flex需要的元素。

          1)首先將BlazeDS需要的jar文件拷到工程的lib目錄下。可以將上面建的那個(gè)flex工程的lib下的jar文件拷到該工程下的lib目錄下。

          2)然后要加入Flex BlazeDS需要的配置文件。在WEB-INF下新建一個(gè)名為flex的文件夾,然后將我們上面建立的那個(gè)firstFlex該文件夾下的四個(gè)xml文件拷到該文件夾下。

          3)最后,修改web.xml文件,加入Flex的配置。做法一個(gè)簡(jiǎn)單的把上面我們新建的那個(gè)flex工程的web.xml的部分代碼拷過(guò)來(lái)。

          <context-param>

                 <param-name>flex.class.path</param-name>

                 <param-value>/WEB-INF/flex/hotfixes,/WEB-INF/flex/jars</param-value>

              </context-param>

              <!-- Http Flex Session attribute and binding listener support -->

              <listener>

                  <listener-class>flex.messaging.HttpFlexSession</listener-class>

              </listener>

              <!-- MessageBroker Servlet -->

              <servlet>

                  <servlet-name>MessageBrokerServlet</servlet-name>

                  <display-name>MessageBrokerServlet</display-name>

                  <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>

                  <init-param>

                      <param-name>services.configuration.file</param-name>

                      <param-value>/WEB-INF/flex/services-config.xml</param-value>

                 </init-param>

                  <load-on-startup>1</load-on-startup>

              </servlet>

              <servlet-mapping>

                  <servlet-name>MessageBrokerServlet</servlet-name>

                  <url-pattern>/messagebroker/*</url-pattern>

              </servlet-mapping>

          3、  將該工程發(fā)布到tomcat下,并啟動(dòng)tomcat。(注:一定要啟動(dòng)tomcat,因?yàn)樵诤竺娴脑O(shè)置中,它要驗(yàn)證工程的路徑)

          4、  然后在該工程上右鍵àFlex Project NatureàAdd Flex Project Nature


           


           
           
           
           
           


          5、  設(shè)置完成后,會(huì)發(fā)現(xiàn)web工程的目錄結(jié)構(gòu)已經(jīng)發(fā)生了改變,如下圖。

          我們發(fā)現(xiàn)以這種形式建立的工程的目錄結(jié)構(gòu)和第二種方法有少許的不同,flex的mxml文件默認(rèn)的放在src文件夾中,和java文件共用一個(gè)目錄。并且沒(méi)有像上一個(gè)工程那樣自動(dòng)的編譯出可運(yùn)行的文件。


           


           

          6、  如果你對(duì)這個(gè)目錄結(jié)構(gòu)不太滿意,還想讓flex的文件放在flex_src目錄下,別急,我們可以通過(guò)右鍵à屬性來(lái)設(shè)置。如下圖


           


          在這里你可以重新設(shè)置你的flex源文件夾和輸出目錄

          7、  配置flex默認(rèn)的sdk。這樣配置完,還不行,程序可能還不能正常地運(yùn)行,還需要配置他使用的sdk。如下圖

           


          8、  馬上就大功告成了,讓我們來(lái)寫個(gè)程序測(cè)試一下吧。

          1)新建一個(gè)java類:Hello.java

          package com;

          public class Hello {

            public String hello(String name){

               System.out.println("flex調(diào)用我了,真好~~~~");

               return "hello "+name;

            }

          }

                  2)為flex配置這個(gè)要調(diào)用的對(duì)象,修改WEB-INF/flex下remoting-config.xml

          加入:

          <destination id="hello">

                  <properties>

                      <source>

                          com.Hello

                      </source>

                  </properties>

          </destination>

              3)編寫一個(gè)Flex程序

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

                  

                   function gg(evnet:ResultEvent):void{

                      var ff:String  = evnet.result as String;

                      ggg.text = ff;

                   }

                  

                   function remotingSayHello():void{

                       var sname:String = nameInput.text;

                      h.hello(sname);  

                   }

               ]]>

            </mx:Script>

           

            <mx:RemoteObject destination="hello" id="h"

               result="gg(event)" endpoint="http://localhost:8080/flexweb/messagebroker/amf" >

               

            </mx:RemoteObject>

           

             

            <mx:TextArea id="ggg"  x="109" y="122"/>

           

            <mx:Button label="say hello" click="remotingSayHello();" x="144" y="193"/>

            <mx:TextInput id="nameInput"  x="109" y="73"/>

            <mx:Label text="name" x="47" y="75"/>

          </mx:Application>

              4)重啟tomcat,運(yùn)行flexweb.mxml.

          第三種方法,在編譯完后,訪問(wèn)網(wǎng)頁(yè)會(huì)出現(xiàn)404異常。具體原因不詳。但是它仍會(huì)編譯出一個(gè)swf文件,訪問(wèn)這個(gè)swf即可。而第二種方式可以編譯出一個(gè)html文件。訪問(wèn)一下會(huì)出現(xiàn)一下界面:

          輸入dfdff,則輸出hello dfdff。說(shuō)明調(diào)用java類成功。不信我們可以看看java類在控制臺(tái)上的打印。


          控制臺(tái)上的打印


          配置成功,高興吧,o(∩_∩)o…哈哈。

          如果用lcds,則不需要預(yù)編譯,可以直接訪問(wèn)mxml文件,lcds會(huì)動(dòng)態(tài)編譯返回結(jié)果。哎,免費(fèi)的還是不行啊,誰(shuí)叫咱沒(méi)錢啊,只能用免費(fèi)的了,痛苦點(diǎn)就痛苦點(diǎn)吧。

          分享:狂淘購(gòu)物網(wǎng) www.kuangtao.net
          posted on 2010-01-10 20:28 狂淘 閱讀(162) 評(píng)論(0)  編輯  收藏 所屬分類: flex

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 和林格尔县| 普宁市| 赤水市| 古丈县| 乾安县| 图们市| 灌云县| 惠东县| 彭州市| 岑溪市| 肥东县| 怀宁县| 高台县| 盐亭县| 汪清县| 宜川县| 德州市| 曲松县| 庆元县| 邻水| 陈巴尔虎旗| 郓城县| 基隆市| 吉安市| 安西县| 陆丰市| 丹棱县| 吉木萨尔县| 榕江县| 涞源县| 柳林县| 嵊泗县| 邓州市| 乐陵市| 宜昌市| 武夷山市| 民县| 万载县| 宝山区| 龙泉市| 孟连|