WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

 瞭解如何從傳統 Java 對象(Plain Old Java™ Object,POJO)開發服務組件,並在 IBM® WebSphere Enterprise Service Bus 中發佈。採用 Web 服務描述語言 (WSDL) 定義接口,並使用 Java™ 實現。瞭解如何將服務組件與獨立引用相關聯,以及如何使用獨立引用跨 ESB 訪問服務。

  先決條件

  本文假定您已經安裝了 IBM WebSphere ESB 6.0 和 IBM WebSphere Integration Developer 6.0。

  WebSphere Enterprise Service Bus 簡介

  WebSphere Enterprise Service Bus 是允許應用程序以靈活方式進行集成的平臺,可幫助企業實現其面向服務的體系結構(Service-Oriented Architecture,SOA)目標。ESB 允許服務使用者和服務提供者彼此進行交互,而其間沒有任何直接依賴關係。在 ESB 中,需要其他應用程序的服務的應用程序稱爲“服務使用者”,而提供服務的應用程序稱爲“服務提供者”。ESB 將服務使用者和服務提供者分離開,務必注意的是,您可以更改服務使用者或服務提供者的接口定義,而不用修改另一方。

  WebSphere Enterprise Service Bus 能夠執行以下主要任務,從而將服務提供者與服務使用者分離開來:

  請求和響應路由:服務提供者和服務使用者之間的全部通信都以消息的形式進行。服務使用者請求服務,並針對 ESB 創建請求消息。ESB 平臺將充當提供者和使用者之間的傳輸媒介。ESB 將標識實際的服務提供者並將請求傳遞給提供者。服務提供者完成操作後,將以消息格式生成響應,並隨後將其返回給 ESB。ESB 將響應傳輸回實際的使用者。在整個通信過程中,提供者和使用者都不會意識到彼此的存在。只有 ESB 知道將請求和響應消息路由到何處。

消息轉換:ESB 允許提供者和使用者使用自己的協議和消息傳遞格式。他們並沒有必要遵循相同的協議和消息格式——ESB 將負責處理不同的協議和不同的消息格式。它知道如何將一種消息格式轉換爲另一種消息格式,也知道如何將使用一種協議的消息轉換爲使用另一種協議的消息。

  下圖說明了 ESB 的角色:

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

  在 WSDL 中創建接口

  我們從將攝氏度轉換爲華氏度的示例服務組件着手進行演示。Temperature Converter 組件具有名爲convert的方法,該方法接受以攝氏度表示的給定溫度,並將返回對應的華氏度溫度作爲輸出。我們將使用 JavaServer Pages (JSP) 客戶機進行測試,此客戶機通過獨立引用訪問該服務組件。

  在 WebSphere ESB 中發佈的每個服務組件都具有一個定義良好的接口。我們可以在 WebSphere Integration Developer 中爲上述服務組件創建接口TemperatureConverterInterface:

  圖 2. 使用 New Java Interface Wizard 創建 WSDL 接口

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

  如下所示,向上述接口添加具有一個輸入和一個輸出的請求與響應操作。此處的操作名爲convert,輸入爲Celsius as double,輸出爲Fahrenheit as double。

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

從 WSDL 通過 Assembly Editor 將服務組件作爲 POJO 實現

  接下來,我們爲上述接口創建一個傳統 Java 對象 (POJO) 實現。我們可以在 Assembly Editor 的幫助下采用 Java 創建實現(服務組件),如下所示。Assembly Editor 屬於 WebSphere Integration Developer,允許開發人員通過接口(導入和導出)和綁定來連接 SCA 組件。我們將此實現命名爲“TemperatureConverterImpl.java”。

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

  接下來,我們需要通過“Add Interface”將接口TemperatureConverterInterface與此實現相關聯。

  圖 5. 將接口與生成的服務組件相關聯

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

  現在接口已與組件關聯。我們可以通過使用“Generate Implementation”選項生成實現的框架。

  圖 6. 爲新服務組件生成實現

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

  圖 7. 將實現添加到生成的框架中

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

  我們需要在上述類中添加convert方法的實現,如下所示:

  清單 1. Convert 方法實現

  public Double convert(Double celsius) {
  double dCelsius = celsius.doubleValue();
  double fahr;
  fahr = (((0.9/0.5) * dCelsius) + 32);
  return new Double(fahr);
  }

將服務組件與獨立引用關聯

  接下來,我們將創建獨立引用,並將其與服務組件相關聯,以便 JSP 客戶機能夠通過獨立引用訪問該組件。

  圖 8. 創建獨立引用

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

  我們可以通過“Add Reference”按鈕將TemperatureConverterInterface.wsdl與獨立引用相關聯。缺省情況下,獨立引用將被命名爲TemperatureConverterInterfacePartner。

  圖 9. 將獨立引用與服務組件連接

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

  創建客戶機,並通過獨立引用訪問服務

  接下來,我們需要開發客戶機 JSP 來測試服務組件。此 JSP 將允許用戶輸入攝氏度值。隨後 JSP 會將該值傳遞給服務,以將其轉換爲華氏度,並最後顯示結果。

  圖 10. 新 JSP 文件模板

WebSphere ESB 入門:創建 POJO 並將其作爲服務發佈

  將隨後使用下面所示的 ServiceManager 類通過 JSP 調用組件。

  清單 2. JSP 實現

  String cel = request.getParameter("celcius");
  if(cel != null && cel.length() > 0){
  try{
  ServiceManager serviceManager = new ServiceManager();
  Service service = (Service) serviceManager.locateService
  ("TemperatureConverterInterfacePartner");
  Double celDouble = Double.valueOf(cel);
  DataObject respObject = (DataObject) service.invoke("convert", celDouble);
  if(respObject!= null){
  out.println(respObject.getDouble("Fahrenheit"));
  }
  }catch(Exception e){
  //handele it
  }
  }

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章