熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

使用Web服務和Ja.NET來實現互用性

2013-11-23 18:55:17  來源: Java核心技術 

  簡介
  第 在表示層集成 NET描述了如何集成 NET Framework 表示層和 JEE 業務層以及如何定義封裝 JEE 業務服務外觀的 Java 服務接口之後講述了 NET Framework 互用性適配器的設計以便 NET Framework 應用程序(如 ASPNET Web 窗體)可以調用 Java 服務接口
  
  本章和第 章內容相反本章描述了如何集成 JEE 表示層和 NET Framework 業務層其中包括定義不同的方法以完成該互用性的兩小節
  
  &#; 使用 Web 服務來實現互用性本節描述了如何定義 NET Framework Web 服務 (WS) 服務接口來封裝 NET Framework 業務服務外觀之後描述了如何設計 Java 互用性適配器來啟用 Java 代碼如 JEE 表示層調用 NET Framework WS 服務接口
  
  &#; 使用 JaNET 來實現互用性 本節描述了如何使用 JaNET 來啟用 JEE 表示層以通過使用 NET Remoting 來訪問 NET Framework 業務服務外觀
   
  圖 NET Framework 業務服務外觀實現 NET Framework 服務接口
  
  以下過程描述了 XBikes 開發人員如何創建 NET Framework Web 服務服務接口以公開 XBikes 的 NET Framework 版本業務層中的業務服務外觀
  
  開發人員創建一個名為 XBikesBLLWSServiceInterface 的新 ASPNET Web 服務項目
  
  他們刪除默認的 Serviceasmx 文件並將其替換為名為 BLLWSServiceInterfaceasmx 的新 Web 服務開發人員用如下的 [WebService] 屬性來批注該 Web 服務類
  
  [WebService(Namespace=)]
  public class BLLWSServiceInterface : SystemWebServicesWebService
  {
   // Members
  }
  該團隊將 Web 服務方法添加到 Web 服務類由現有的業務服務外觀公開的每種方法都具有正確的方法簽名但是開發人員將數據類型更改為字符串而不是每種方法將數據集作為參數接受或返回
  
  [WebService(Namespace=)]
  public class BLLWSServiceInterface : SystemWebServicesWebService
  {
   [WebMethod]
   public string AuthenticateCustomer(string email string password)
   {}
   [WebMethod]
   public string GetCategories()
   {}
   [WebMethod]
   public string GetProductsByCategory(int CategoryID)
   {}
   [WebMethod]
   public string GetSearchResults(string keyword)
   {}
   [WebMethod]
   public void PlaceOrder(string order)
   {}
   [WebMethod]
   public string GetCustomerOrders(int customerID)
   {}
  }
  該團隊將代碼添加到每種 Web 服務方法以調用業務服務外觀方法以下代碼示例顯示了如何對 Web 服務服務接口中的 GetCategories 方法執行操作開發人員調用自業務服務外觀返回的 CategoriesData 對象的 GetXml 方法從而將數據轉換成 XML 格式化字符串WS 服務接口將該字符串返回其調用方
  
  [WebMethod]
  public string GetCategories()
  {
   try
   {
  // Create a business service facade (BSF) object
  BusinessServiceFacade bsf = new BusinessServiceFacade();
  // Call the GetCategories method on the BSF object
  CategoriesData cd = bsfGetCategories();
  // Convert the CategoriesData dataset into XML and return it
  return cdGetXml();
   }
   catch (XBikesInteropException intExp)
   {
  // Error handling code
   }
  }
  根據 WSI Basic Profile Web 服務應該支持 SOAP 協議但不支持 HTTPGet 或者 HTTPPost 協議為了從 Web 服務中移除協議支持XBikes 開發人員將以下代碼添加到 Web 服務的 nfig 文件的 部分
  
  <webServices>
   <protocols>
  <remove name=HttpGet />
  <remove name=HttpPost />
   </protocols>
  </webServices>
  
  為了測試 Web 服務開發人員在 Visual?Studio NET 中建立並運行 Web 服務項目運行 ASPNET Web 服務項目時在浏覽器中會自動出現一張測試頁這張測試頁包含允許調用每種 Web 服務方法的超級鏈接如果必要該測試頁還有供您輸入值的文本框在調用完一個 Web 服務方法後另一個浏覽器窗口會打開顯示來自 Web 服務方法的 XML 響應
  
  注盡管 XBikes 示例應用程序不完全符合 WSI Basic Profile 的要求但開發人員使用工具包功能(開發時提供)來盡可能滿足 Basic Profile 的要求
  
  在 JEE 內創建互用性適配器
  前面部分描述了如何在 NET Framework 中創建 Web 服務服務接口創建之後可以繼續構建 JEE 互用性適配器本節內容即介紹了建立該適配器的步驟建立步驟如下所示
  
  &#; 根據 XML 架構建立 Java 數據類
  
  &#; 使用由 Web 服務堆棧提供的工具構建 Web 服務代理
  
  &#; 為整個服務接口創建一個適配器或者為每個用例創建一個適配器
  
  注在 Xbikes 中開發人員為每個用例創建一個適配器
  
  互用性適配器調用該代理然後代理調用 Web 服務該適配器還必須在任何 Java 數據和基於 XML 架構的正確字符串/XML格式之間進行轉換
  
  適配器的邏輯流如下所示
  
  應用程序調用適配器方法
  
  適配器方法將任何復雜數據轉換成 XML 字符串表示
  
  適配器方法創建 Web 服務代理的實例
  
  適配器方法調用 Web 服務代理中的適當方法
  
  如果代理返回數據則適配器方法將其轉換成正確的 Java 格式(如果必要)
  
  適配器方法將數據返回到調用應用程序
  
  
  圖 顯示了該操作過程
   educitycn/img_///gif>
  圖 帶有 JEE 應用程序的 Web 服務代理操作
  
  以下為構建 Java 適配器的任務
  
  從 XML 架構創建 Java 數據類型和 XML 映射
  
  為 NET Framework Web 服務從 WSDL 創建 Java Web 服務代理
  
  創建 Java 適配器以轉換 Java 數據並調用 NET Framework Web 服務
  
  以下部分描述了這些任務的執行步驟
  
  從 XML 架構創建 Java 數據類型和 XML 映射
  大多數 Java XML 產品提供工具以創建基於 XML 架構的 Java 數據類型通常這些工具還創建將 Java 類中的每個字段映射到 XML 架構中的元素或屬性的映射文件
  
  注如果現有的 Java 數據類型已經與 XML 架構一致則無須定義中間 Java 類只需定義將 Java 字段直接映射到 XML 架構中的元素和屬性的映射文件
  
  定義基於 XSD 的 Java 類之後下一步是編寫代碼將數據從原始的 Java 對象復制到基於 XSD 類的對象中然後必須編寫代碼以將基於 XSD 的對象序列化成 XML 格式化字符串
  
  將序列化代碼放入 Helper 類中是一個不錯的主意XBikes 開發人員就是這麼做的Helper 類要求希望寫入或讀取字符串的每種類型的數據有兩種方法這兩種方法接受要轉換的數據的單一參數以及返回轉換類型的單一值以下方法簽名顯示了 Order 對象和 XML 格式化字符串之間的轉換
  
  public static String orderToString(Order o);
  public static Order StringToOrder(String o);
  
  以下步驟闡釋了 XBikes 開發人員從本章之前所述的 CustomerDataxsd XML 架構創建基於 XSD 的 Java 類的過程XBikes 開發人員使用 GLUE 生成基於 XSD 的 Java 類並創建映射文件以便 GLUE 可以在 Java 對象和 XML 之間進行序列化和反序列化操作步驟是
  
  開發人員使用 GLUE 提供的 schemajava 工具創建基於 CustomerDataxsd 架構的 Java 類
  
  schemajava CustomerDataxsd g p mondataconverterscustomers
  
  schemajava 命令生成兩個 Java 文件CustomerData_TYPEjava 和 Customers_TYPEjavaXBikes 開發人員將這些文件添加到 Java 項目將它們放在公共軟件包中以便於訪問軟件包位於 mondataconverterscustomers
  
  schemajava 命令還生成一個 CustomerDatamap 文件GLUE 序列化程序用它將字段映射到正確的 XML 元素和屬性XBikes 開發人員將該映射文件復制到 文件夾中GLUE 可在此查找 XML 序列化的映射文件
  
  因為 GLUE 是選定的環境所以開發團隊將 Gluejar 文件添加到構建路徑
  
  接下來開發人員編寫 Helper 類以在 Java 數據和字符串間執行轉換他們將新類命名為 CustomerConverter並將其添加到軟件包 mondataconverters 中
  
  開發人員將兩種方法添加到 CustomerConverter 類一種將 XML 字符串轉換成 Java 對象另一種將 Java 對象轉換成 XML 字符串這些方法使用 GLUE 序列化程序從基於 XSD 的 CustomerData_TYPE 和 Customers
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25978.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.