簡介 第
章
在表示層集成
NET
描述了如何集成
NET Framework 表示層和 J
EE 業務層
以及如何定義封裝 J
EE 業務服務外觀的 Java 服務接口
之後講述了
NET Framework 互用性適配器的設計
以便
NET Framework 應用程序(如 ASP
NET Web 窗體)可以調用 Java 服務接口
本章和第
章內容相反
本章描述了如何集成 J
EE 表示層和
NET Framework 業務層
其中包括定義不同的方法以完成該互用性的兩小節
; 使用 Web 服務來實現互用性本節描述了如何定義
NET Framework Web 服務 (WS) 服務接口來封裝
NET Framework 業務服務外觀
之後描述了如何設計 Java 互用性適配器來啟用 Java 代碼
如 J
EE 表示層調用
NET Framework WS 服務接口
; 使用 Ja
NET 來實現互用性 本節描述了如何使用 Ja
NET 來啟用 J
EE 表示層
以通過使用
NET Remoting 來訪問
NET Framework 業務服務外觀
圖
為
NET Framework 業務服務外觀實現
NET Framework 服務接口
以下過程描述了 XBikes 開發人員如何創建
NET Framework Web 服務服務接口以公開 XBikes 的
NET Framework 版本業務層中的業務服務外觀
開發人員創建一個名為 XBikes
BLL
WSServiceInterface 的新 ASP
NET Web 服務項目
他們刪除默認的 Service
asmx 文件並將其替換為名為 BLLWSServiceInterface
asmx 的新 Web 服務
開發人員用如下的 [WebService] 屬性來批注該 Web 服務類
[WebService(Namespace=
)]
public class BLLWSServiceInterface : System
Web
Services
WebService
{
// Members
}
該團隊將 Web 服務方法添加到 Web 服務類
由現有的業務服務外觀公開的每種方法都具有正確的方法簽名
但是
開發人員將數據類型更改為
字符串
而不是每種方法將數據集作為參數接受或返回
[WebService(Namespace=
)]
public class BLLWSServiceInterface : System
Web
Services
WebService
{
[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 = bsf
GetCategories();
// Convert the CategoriesData dataset into XML
and return it
return cd
GetXml();
}
catch (XBikesInteropException intExp)
{
//
Error handling code
}
}
根據 WS
I 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 服務項目
運行 ASP
NET Web 服務項目時
在浏覽器中會自動出現一張測試頁
這張測試頁包含允許調用每種 Web 服務方法的超級鏈接
如果必要
該測試頁還有供您輸入值的文本框
在調用完一個 Web 服務方法後
另一個浏覽器窗口會打開顯示來自 Web 服務方法的 XML 響應
注盡管 XBikes 示例應用程序不完全符合 WS
I Basic Profile
的要求
但開發人員使用工具包功能(開發時提供)來盡可能滿足 Basic Profile 的要求
在 J
EE 內創建互用性適配器
前面部分描述了如何在
NET Framework 中創建 Web 服務服務接口
創建之後
可以繼續構建 J
EE 互用性適配器
本節內容即介紹了建立該適配器的步驟
建立步驟如下所示
; 根據 XML 架構建立 Java 數據類
; 使用由 Web 服務堆棧提供的工具構建 Web 服務代理
; 為整個服務接口創建一個適配器
或者為每個用例創建一個適配器
注在 Xbikes 中
開發人員為每個用例創建一個適配器
互用性適配器調用該代理
然後代理調用 Web 服務
該適配器還必須在任何 Java 數據和基於 XML 架構的正確字符串/XML格式之間進行轉換
適配器的邏輯流如下所示
應用程序調用適配器方法
適配器方法將任何復雜數據轉換成 XML 字符串表示
適配器方法創建 Web 服務代理的實例
適配器方法調用 Web 服務代理中的適當方法
如果代理返回數據
則適配器方法將其轉換成正確的 Java 格式(如果必要)
適配器方法將數據返回到調用應用程序
圖
顯示了該操作過程
educity
cn/img_
/
/
/
gif>
圖
帶有 J
EE 應用程序的 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 開發人員從本章之前所述的 CustomerData
xsd XML 架構創建基於 XSD 的 Java 類的過程
XBikes 開發人員使用 GLUE 生成基於 XSD 的 Java 類
並創建映射文件以便 GLUE 可以在 Java 對象和 XML 之間進行序列化和反序列化操作
步驟是
開發人員使用 GLUE 提供的 schema
java 工具創建基於 CustomerData
xsd 架構的 Java 類
schema
java CustomerData
xsd
g
p mon
dataconverters
customers
schema
java 命令生成兩個 Java 文件
CustomerData_TYPE
java 和 Customers_TYPE
java
XBikes 開發人員將這些文件添加到 Java 項目
將它們放在公共軟件包中以便於訪問
軟件包位於 mon
dataconverters
customers
schema
java 命令還生成一個 CustomerData
map 文件
GLUE 序列化程序用它將字段映射到正確的 XML 元素和屬性
XBikes 開發人員將該映射文件復制到 文件夾中
GLUE 可在此查找 XML 序列化的映射文件
因為 GLUE 是選定的環境
所以開發團隊將 Glue
jar 文件添加到構建路徑
接下來
開發人員編寫 Helper 類以在 Java 數據和字符串間執行轉換
他們將新類命名為 CustomerConverter
並將其添加到軟件包 mon
dataconverters 中
開發人員將兩種方法添加到 CustomerConverter 類
一種將 XML 字符串轉換成 Java 對象
另一種將 Java 對象轉換成 XML 字符串
這些方法使用 GLUE 序列化程序從基於 XSD 的 CustomerData_TYPE 和 Customers
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25978.html