天天看點

flex+java整合開發

  用Flash Builder 4 beta建立連接配接BlazeDS遠端端的Flex應用程式

  配置伺服器環境

  第一步,建立被Flex應用程式調用的Java類。本篇文章的應用程式使用了SimpleCustomerService類,這個類的方法被命名為getAllCustomers(),将在Flex應用程式中被調用:

  public class SimpleCustomerService

  {

  public ArrayList getAllCustomers()

  {

  ArrayList customers = null;

  //code to create ArrayList containing SimpleCustomer objects

  return customers;

  }

  }

  通過編譯/java_src檔案夾中的SimpleCustomerService.java和SimpleCustomer.java開始(或者你可以在/java_classes檔案夾中提前編譯類檔案)。

  用類檔案建立Web應用,步驟如下:

  1. 如果沒有安裝Tomcat,現在就請安裝Tomcat,到http://tomcat.apache.org/*尋找下載下傳資訊和更多的細節。

  2. 在Tomcat安裝目錄下找到webapps,在Windows作業系統中預設路徑是:C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps。

  3. 在webapps檔案夾下建立檔案夾,命名為samplewebapp,用來建立新的Web應用。

  4. 拷貝Java類檔案SimpleCustomerService.class和SimpleCustomer.class到webapps/samplewebapp/WEB-INF/classes下面。

  安裝BlazeDS

  在你從Flex應用程式調用Java類之前,你必須用BlazeDS顯示類作為遠端服務終端。要為你的Web應用程式配置BlazeDS,你必須在Web應用源路徑中部署BlazeDS JAR檔案。安裝BlazeDS步驟如下:

  1. 下載下傳最新nightly build of BlazeDS*二進制釋出版本,它包含你需要的JAR檔案和其他配置檔案。如果你使用早期的BlazeDS或者LiveCycle Data Services ES版本,那麼你需要執行除上述之外的步驟,在我的部落格*中有關于這個話題的詳述。

  2. 解壓你下載下傳的zip檔案,在檔案夾中有blazeds.war,它包含配置BlazeDS 所需要的Jar檔案和其他配置檔案,blazeds-bin-readme.htm包含合同、條件和證書等細節。

  3. 提取blazeds.war的内容到單獨命名為blazeds的檔案夾中(你可以用WinZip或者類似的工具解壓WAR檔案中的内容)。

  4. 從blazeds/WEB-INF/lib中拷貝所有的JAR檔案到samplewebapp/WEB-INF/lib。

  5. 拷貝blazeds/WEB-INF/flex檔案夾到samplewebapp/WEB-INF

  這個檔案夾包含BlazeDS配置檔案。這個配置檔案被用來配置遠端、消息和代理服務。

  6. 如果沒有你想用的web.xml檔案,拷貝blazeds/WEB-INF/web.xml到samplewebapp/WEB-INF

  。

  下面,你需要為BlazeDS Servlet添加 Servlet mapping命名為:MessageBrokerServlet,以便于當你用任一管道支援向遠端、消息或者代理服務發送請求時調用BlazeDS。

  如果你正在使用你自己的web.xml檔案,那麼就需要添加以下代碼,或者你可以從blazeds/WEB-INF/web.xml拷貝這段代碼。

  Flex Session attribute and binding listener support -->

  

  flex.messaging.HttpFlexSession

  

  

  

  MessageBrokerServlet

  MessageBrokerServlet

  flex.messaging.MessageBrokerServlet

  

  services.configuration.file

  /WEB-INF/flex/services-config.xml

  

  1

  

  

  MessageBrokerServlet

  /messagebroker/*

  

  Flash Builder 4用RDSDispatchServlet(綁定BlazeDS和LiveCycle Data Services ES2)來獲得在Web應用中的服務端細節。如果你正在使用你自己的web.xml檔案,那麼就需要在你的Web應用中為RDSDisptachServlet添加Servlet mapping,通過拷貝下面的XML片段到節點下的samplewebapp/WEB-INF/web.xml檔案中。

  

  RDSDispatchServlet

  RDSDispatchServlet

  flex.rds.server.servlet.FrontEndServl et

  

  useAppserverSecurity

  false

  

  10

  

  

  RDSDispatchServlet /CFIDE/main/ide.cfm 建立遠端目标

  要顯示Java 類作為遠端目标你需要在節點下的samplewebapp/WEB-INF/flex/remoting-config.xml檔案中添加節點,如下面所示。(在/config檔案夾中你會找到remoting-config.xml和services-config.xml檔案被用于應用程式。)

  

  

  com.adobe.services.SimpleCustomerService

  

  

  當你啟動你的Web服務時,BlazeDS将暴露你的Java類作為一個遠端終端,将SimpleCustomerServiceDestination作為id。

  開發用戶端應用程式

  由于伺服器已建立,你該準備用Flash Builder 4 來産生為消耗遠端服務目标産生成代碼。Flex應用程式将調用你在終端建立的getAllCustomers()

  方法。

  生成可以消耗遠端服務終端的ActionScript代碼,Flash Builder将向BlazeDS或者Adobe LiveCycle Data Services ES2發送請求以激活你在項目伺服器設定中配置的Web應用程式并且檢索外端伺服器終端的細節。

  以下是建立新的Flex項目的步驟:

  1. 選擇檔案 > 建立 > Flex 項目。

  圖1.設定項目屬性

  2. 為項目命名為BlazeDSSample。

  3. 選擇Web (Runs In Adobe Flash Player)作為應用類型。

  4. 選擇J2EE作為應用服務類型。

  5. 選擇Use Remote Object Service,然後再選擇BlazeDS(如圖1所示)。

  6. 點選Next繼續。

  圖2.配置伺服器設定

  因為你在項目屬性視窗中設定伺服器的類型是J2EE,Flash Builder将提示你伺服器設定。

  7. 配置J2EE伺服器,設定Root Folder(根檔案夾):你在BlazeDS 中已經配置的Web應用中的根檔案夾的路徑。

  8. 設定Root URL(根URL)為Web應用的URL的根目錄;例如:http://localhost:9191/samplewebapp。

  9. 設定Context Root(上下文根目錄):Web應用的上下文根目錄;例如:/samplewebapp。

  10. 保留伺服器上Output Folder(輸出檔案夾)的預設值。

  11.點選Validate Configuration(驗證配置)以檢查伺服器配置是否生效,如果沒有生效,調整你的設定,再重新試一下。

  12. 當你的配置生效後,點選Finish(完成)新項目的建立。

  建立一個新的服務

  在Flash Builder 4中建立一個新的服務,步驟如下:

  1. 查找Flash Builder 4中Data/Services視圖;如果視圖沒有打開,選擇Window > Data/Services。

  2. 點選Connect to Data/Service(連結到資料/服務)(或者choose Data > Connect to Data/Service), Flash Builder 4則顯示一列從目前的Flex項目中可以被消耗的服務類型。

  圖3.選擇服務類型

  3. 在這個例子中,使用BlazeDS服務,是以如圖3 所示選擇BlazeDS。

  4. 點選Next。

  5. 如果Flash Builder 4提示RDS密碼,選擇不需要密碼然後點選OK。(這個工作因為在web.xml中RDSDispatchServlet的useAppSecurity參數被設定為false。)

  Flash Builder與伺服器通信,顯示一列外部服務目标清單,如圖4 所示。

  圖4.有效終端清單

  6. 從清單中選擇SimpleCustomerServiceDestination并點選完成,如果你的應用不隻一個目标,你可以選擇清單中的任一目标,生成你想要的代碼。

  Flash Builder 4生成ActionScript類,這個類代表與選擇的遠端服務目标相關的Java類。在這個例子中,Flash Builder 4産生的類名為SimpleCustomerServiceDestination,它在SimpleCustomerService.java中顯示的每個公用方法的參數。在伺服器上調用SimpleCustomerService.java方法,你隻需調用SimpleCustomerServiceDestination.as中相應的函數。你可以看到服務 (SimpleCustomerServiceDestination.as)和它的操作(代表伺服器類的函數)列在Data/Services視圖中。你也可以用Package浏覽器看到代碼。

  如果任何自定義資料類型作為傳回類型或者作為Java類方法的參數,Flash Builder 4将生成一個ActionScript類來代表與服務類檔案一起的自定義資料類型。在這個例子中,getAllCustomers()傳回一個含有 SimpleCustomer對象類型的ArrayList。ArrayList是建立資料類型并在預設下在用戶端被轉換成ArrayCollection。而SimpleCustomer,不是建立資料類型,是以Flash Builder 4在SimpleCustomer.java中為每個公用屬性生成SimpleCustomer.as屬性來代表從伺服器傳回的 SimpleCustomer對象。注意操作傳回服務類型也要在基于Java類中傳回類型的方法的Data/Services視圖中恰當的被配置。

  既然消耗遠端服務目标所需的代碼已經生成,下段中的步驟将顯示在UI控件中來自服務請求的響應。

  給UI元件綁定服務請求結果

  Flash Builder 4也可以生成代碼來調用服務請求并綁定服務請求結果給UI元件。在這個例子中,你将綁定getAllCustomers()操作結果給DataGrid。

  1. 在應用程式設計視圖中添加DataGrid元件。

  2. 右擊DataGrid選擇綁定資料。

  圖5.選擇服務和操作

  3. 彈出綁定資料對話框,選擇"新的服務請求(New service call)"。

  4. 從"服務(service)"清單中,選擇SimpleCustomerServiceDestination;從"操作(Operation)"清單中選擇getAllCustomers():SimpleCustomer[],如圖5所示。

  5. 點選"完成(OK)"。

  因為你選擇了"新的服務請求(New service call)", Flash Builder 4将建立一個新的SimpleCustomerServiceDestination類的執行個體,并在目前MXML檔案中建立一個 CallResponder類。如果SimpleCustomerServiceDestination執行個體已經存在,唯一的CallResponder 執行個體将被建立。CallResponder類幫助你管理asynchronous請求結果給RPC-based 服務。你會在Flex語言參數中發現更多關于CallResponder的細節。

  注意:如果你在目前的MXML檔案中已經有了服務請求并且你想綁定結果到UI元件上,那麼在"綁定資料(Bind To Data)"對話框中選擇現有的請求結果,并選擇現有的服務請求。 儲存你的應用程式并運作它。Flex應用程式在Web浏覽器中釋出後,它将調用伺服器上的SimpleCustomerService Java類中的getAllCustomers()>loading... AddFeedbackCountStack("5816307") ) | 舉報| 收藏