前一段時(shí)間一直在郁悶Flex與Java的交互問(wèn)題,找了好多書(shū),也在網(wǎng)上搜索了好多內(nèi)容。關(guān)于這個(gè)問(wèn)題的解決辦法可謂五花八門(mén)。主要還是Flex進(jìn)行數(shù)據(jù)交互的三種方式:通過(guò)Html傳遞,其中可以直接獲取消息參數(shù)、或者通過(guò)傳遞XML文件來(lái)實(shí)現(xiàn)消息傳遞,但是這只限于字符串等簡(jiǎn)單類(lèi)型的數(shù)據(jù),無(wú)法傳遞自定義類(lèi)的對(duì)象;通過(guò)遠(yuǎn)程調(diào)用對(duì)象方式實(shí)現(xiàn)傳遞,這種傳遞方法支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu)類(lèi)型;以調(diào)用WebService的方式傳遞參數(shù),即把Java類(lèi)所實(shí)現(xiàn)的功能看成是一個(gè)WebService,通過(guò)發(fā)送調(diào)用消息與必須的參數(shù)來(lái)調(diào)用Java類(lèi)中的方法,從而得到返回值。(關(guān)于調(diào)用Web服務(wù)的相關(guān)例子參見(jiàn)《使用AXIS調(diào)用WSDL描述的Web服務(wù)》和《使用AXIS調(diào)用WSDL描述的Web服務(wù)(續(xù))》)。
下面主要對(duì)RemoteObject方式與Java交互方式進(jìn)行一下總結(jié)。RemoteObject方式需要有數(shù)據(jù)服務(wù)工程來(lái)實(shí)現(xiàn)交互。而于Java交互的數(shù)據(jù)服務(wù)工具主要有LCDS和BlazeDS兩種(實(shí)際上是一種,BlazeDS是LCDS的子集)。
LCDS(LiveCycle Data Service)之前叫做FDS(Flex Data Service),他是基于java(也有ColdFusion版的)后端的數(shù)據(jù)服務(wù)工程,功能包括映射Java對(duì)象到Flex對(duì)象(包括調(diào)用Java類(lèi)的方法)、RTMP(Real Time Message Protocol)、代理、服務(wù)端生成PDF等等功能,詳細(xì)請(qǐng)參考LCDS里的說(shuō)明。官方有下載,需要注冊(cè)會(huì)員(免費(fèi))。
其實(shí)BlazeDS可以看成是LCDS的簡(jiǎn)化版,它少了后者的Data Management Service高級(jí)功能,目前不支持RTMP(Real Time Message Protocol)協(xié)議。
如果使用的是BlazeDS,一種簡(jiǎn)單的環(huán)境設(shè)置方式就是:把BlazeDS.war解壓,放在Tomcat的發(fā)布目錄下,并且修改其中的配置文件,以聲明要用到的Java類(lèi),然后再編寫(xiě)Flex頁(yè)面時(shí)就可以直接調(diào)用該Java類(lèi)了,前提是要把涉及到的Java類(lèi)的編譯后的.Class文件(即/bin/目錄下)放在Class目錄中。
使用LCDS的原理與BlazeDS是一樣的。但是這樣來(lái)開(kāi)發(fā)工程會(huì)很繁瑣,每次都要把更新后的.Class文件復(fù)制到Tomcat下才能更新。所以需要利用Eclipse的WTP插件來(lái)實(shí)現(xiàn)工程的自動(dòng)部署,而這樣問(wèn)題的關(guān)鍵就在于如何整合一個(gè)Flex工程和一個(gè)WTP工程,或者說(shuō)是如何時(shí)一個(gè)工程同時(shí)具有Flex和WTP工程的特性。當(dāng)然,這對(duì)于Eclipse來(lái)說(shuō)是可以勝任的。
WTP與Flex整合開(kāi)發(fā)環(huán)境搭建步驟參見(jiàn):
http://www.scribd.com/doc/2369653/Flex-LCDS-Java- 很不錯(cuò)~~~
posted on 2008-09-29 23:35
胖胖泡泡 閱讀(2680)
評(píng)論(0) 編輯 收藏