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