WebSphere Service Registry and Repository API 簡介

CloudSpace發表於2009-04-09

引言

IBM® WebSphere® Service Registry and Repository(以下稱為 Registry and Repository)是面向服務的體系結構(Service-Oriented Architecture,SOA)環境中用於服務互動端點描述的主後設資料儲存庫。終端使用者可以使用基於 Web 的控制檯應用程式或基於 Eclipse 的外掛直接與 Registry and Repository 互動。此外,應用程式可以使用一個或多個應用程式程式設計介面(Application Programming Interface,API)與 Registry and Repository 進行全面互動。能夠使用基於 Web 的控制檯或 Eclipse 外掛執行的所有操作都可以由應用程式通過使用 API 執行。事實上,Web 控制檯和 Eclipse 外掛本身實際上都是使用 Registry and Repository API 編寫的應用程式。

本文將簡單介紹一些 Registry and Repository API 並通過全面的示例應用程式演示其使用。本文重點討論基於 J2EE 的 EJB API,不過還提供了一個 Web 服務 API 和基於 JMX 的管理 API。後續文章可能會進一步討論其餘的 API。

要求

如果您只想瀏覽示例應用程式,則沒有什麼特殊要求;這些只是一組 Java™ 程式,以原始碼的形式提供。

如果希望執行示例,則需要能夠訪問已安裝且正常執行的 Registry and Repository 伺服器,而且需要具有建立、更新和刪除註冊中心文件的許可權。還需要 J2EE 應用程式客戶端環境,以便從其中執行示例應用程式。

要修改示例來進一步分析原始碼,或者要在除錯環境中執行,則將需要 Rational Software Development Platform。

下載

本文提供的大部分資訊都與下載中提供的示例應用程式相關。示例應用程式中包含帶有全面註釋的 Java 原始碼,演示了大部分可用的基於 EJB 的 Registry and Repository API 的用法。本文提供了兩個下載內容:

  1. 應用程式 (WSRRSamplesEAR.ear)

    打包為 J2EE 客戶端應用程式 EAR 檔案,因此可以直接從 IBM WebSphere V6 應用程式客戶端環境執行。

  2. 原始碼 (WSRRSamplesSRC.zip)

    打包為兩個專案,能夠匯入到 IBM Rational Software Development Platform. 中,可方便地檢查、修改和執行應用程式的原始碼。

本文剩下的部分將說明如何安裝、執行和使用這些下載內容,並將簡單地介紹所提供的示例應用程式。

使用示例應用程式

可以通過下載關聯的 WSRRSamplesEAR.ear 檔案(請參見下載)獲得此應用程式。此應用程式設計為通過 launchClient 命令使用 IBM WebSphere V6 J2EE 應用程式客戶端容器執行,並已經過了測試。在 IBM WebSphere Application Server(以下稱為 Application Server)和 Registry and Repository 應用程式所執行的計算機上,可以通過從伺服器的 bin 目錄使用 launchClient 命令執行此應用程式,也可以通過安裝 Application Client for Application Server V6 從遠端客戶端計算機執行。

安裝示例應用程式

要安裝示例應用程式,請在計算機上建立一個目錄,以用於儲存示例程式碼。出於演示目的,我們假定您使用的是 Windows 並建立了名為 C:\WSRRSample 的目錄。

從本文下載部分下載 WSRRSamplesEAR.ear 檔案,並將此 EAR 檔案放入 C:\WSRRSample 目錄中。除了示例客戶端應用程式本身外,EAR 檔案還包含一些在執行示例前需要的額外資源。需要從 EAR 提取額外的資源,才能進行使用。為此,請使用 WinZip 或 Unzip 之類的程式將 EAR 檔案解壓到示例目錄中。此操作應該得到以下檔案(還有其他檔案):

C:\WSRRSample\sdo-int.jar
C:\WSRRSample\resources\StockQuote.wsdl
C:\WSRRSample\resources\StockQuoteService.wsdl
C:\WSRRSample\resources\StockQuoteBinding.wsdl
C:\WSRRSample\resources\StockQuoteInterface.wsdl
C:\WSRRSample\resources\PurchaseOrder.xsd
C:\WSRRSample\resources\PurchaseOrder.xml
C:\WSRRSample\resources\SampleFruit.owl

執行示例應用程式

使用 Application Server V6 的 launchClient 命令執行示例應用程式。

在執行示例前,請更新計劃使用的 Application Server V6 或 Application Server V6 Application Client,以新增對 Registry and Repository 所需的較新的 SDO 的支援。為此,必須將 sdo-int.jar 檔案從示例目錄中複製到 Application Server 客戶端安裝(在不存在 classes 目錄的情況下,需要建立此目錄)中;通常此路徑將與“C:\Program Files\IBM\WebSphere\AppServer\classes”或“C:\Program Files\IBM\WebSphere\AppClient\classes”類似。如果使用的是安裝 Registry and Repository 本身的應用伺服器,則應該發現 classes 目錄下已經有了 sdo-int.jar 檔案。

其中一些示例應用程式需要將 SampleFruit.owl 檔案中的本體系統預載入到 Registry and Repository 中。進行此工作的最簡單方法是使用 Registry and Repository 控制檯應用程式從 C:\WSRRSample\resources 目錄載入 OWL 檔案。

要執行示例,請確保您當前的工作目錄為 C:\WSRRSample 併發出以下命令(這應該全部顯示在一行中):

\bin\launchClient WSRRSamplesEAR.ear
        -CCproviderURL=iiop:// EJB-SimpleDocument

位置:

  • was_install_base 是 Application Server 或客戶端安裝的根目錄。此目錄通常與“C:\Program Files\IBM\WebSphere\AppServer”或“C:\Program Files\IBM\WebSphere\AppClient”類似。
  • wsrr_host_server 是所希望訪問的 Registry and Repository 的主機名和名稱伺服器埠。如果名稱伺服器埠為預設埠 2809,可以將其忽略。為了訪問在本地計算機上執行的 Registry and Repository 的私有例項,可以指定 iiop://localhost:2809/
  • EJB-SimpleDocument 是希望執行的示例應用程式的名稱。這可以為下面的表 1 中列出的任意示例應用程式名稱。

如果示例應用程式成功執行,將會看到大量進度訊息寫到控制檯。如果不正常,將會看到報告的 Java 異常。

使用示例原始碼

可以對展開的應用程式 EAR 檔案中的 WSRRSamples.jar 檔案進行進一步解壓,以檢視應用程式的原始碼;不過,將關聯的原始碼專案安裝到 Rational Software Development Platform. 環境中的做法可能更為方便和有用。示例是使用 Rational Software Architect V6.0.1.1 開發和測試的,但應該與 IBM Rational Software Development Platform. 中支援 WebSphere J2EE 應用程式開發的產品相容,如 Rational Application Developer for WebSphere 等。

安裝示例原始碼

要安裝原始碼專案,請從本文的下載部分下載 WSRRSamplesSRC.zip 檔案。

從 Rational Software Development Platform. 中,選擇 File => Import 並選擇 Project Interchange,以匯入原始碼。在匯入對話方塊中,選擇之前下載的 WSRRSamplesSRC.zip 檔案,並將其匯入到工作區,其中將包含兩個專案:

  • WSRRSamples

    這是包含示例本身的原始碼的 Java 專案。

  • WSRRSamplesEAR

    這是企業應用程式專案,其中包含示例所需的其他資源,用於對最終的客戶端應用程式 EAR 檔案打包。

示例原始碼結構

WSRRSamples 專案是標準 J2EE 應用程式客戶端專案,所有原始碼都包含在 appClientModule 資料夾中。預設包中包含 Main 類,用於處理程式引數(在這種情況下,引數為要執行的示例的名稱),並建立和呼叫所需示例應用程式類的例項。

示例本身都可以在 com.ibm.wsrr.samples.ejb 包中找到。每個示例都對名為 EJBSample 的基類進行擴充套件,此基類提供了呼叫框架和所有示例都可用的一些公用方法:

  • setUp()tearDown() 方法分別在每個示例的主 run() 方法執行前後執行。這些方法的主要目的是為了從註冊中心刪除與示例應用程式相關的任何文件和物件,以在嘗試執行示例前確定在乾淨的環境啟動,並在結束時進行清理。不過,如果在執行示例時引發了異常,則可能會在註冊中心中遺留一些文件和物件。

    此外,setUp() 方法可始終確保所有 Registry and Repository 資料型別都正確地向 SDO 註冊,這是所有 Registry and Repository 應用程式在呼叫任何 Registry and Repository API 前都應該進行的工作。

  • 三個方法 getServiceRegistrySession()getServiceRegistryGovernance()getServiceRegistryOntology() 供所有示例應用程式用於獲取對三個 Registry and Repository API EJB 的引用。請注意,為了示例的簡單明瞭,這些方法沒有關聯的異常處理。實際應用程式在嘗試建立 EJB 例項時將需要檢查和處理錯誤。

執行示例原始碼

為了從 Rational Software Development Platform. 內執行示例應用程式,必須建立合適的執行配置。

使用這些步驟執行示例:

  1. 從選單中選擇 Run => Run 選項。
  2. 從執行配置對話方塊中,選擇(左側)Application Server V6 Application Client 配置並單擊 New
  3. 對新配置進行適當命名。
  4. 按以下所示調整 ApplicationArgumentsClasspath 設定:

Application 選項卡中:

  • Enterprise application 部分中,單擊下拉箭頭並選擇 WSRRSamplesEAR
  • Application client module 部分中,單擊下拉箭頭並選擇 WSRRSamples
  • 選中標籤為 Enable application client to connect to a server 的核取方塊。
  • 在其下選擇 Use provider URL 選項,並在文字框中以 iiop://wsrr_host_server:port 的形式輸入 URL,其中 wsrr_host_server 是主機名,port 是希望連線的 Registry and Repository 伺服器示例的名稱伺服器埠。

Arguments 選項卡中:

  • Program arguments 框中輸入要執行的示例應用程式的名稱,例如,在其中輸入 EJB-SimpleDocument。這應該為最後一個引數,任何要使用的 launchClient "-CC" 引數都必須首先列出來。
  • Working directory 部分中,取消選中標籤為 Use default working directory 的核取方塊,單擊 Workspace 按鈕並選擇 WSRRSamplesEAR 作為新工作目錄。

Classpath 選項卡:

  • 突出顯示 User Entries 部分,並單擊 Add External JARs 按鈕。

    JAR 預設列表中已經給出了 j2ee.jar 的位置,請在 Jar Selection 對話方塊中導航到此位置並從同一位置新增兩個額外的 jar:emf.jar 和 wsdl4j.jar。

  • 突出顯示 Bootstrap Entries 部分並單擊 Add JARs 按鈕。

    在 JAR Selection 對話方塊上,展開 WSRRSamplesEAR 專案並將 sdo-int.jar 新增到引導類路徑。

執行配置現在應該準備好,可呼叫所選的 Registry and Repository 示例應用程式了。單擊 Run 並檢視控制檯輸出,以確定示例是否成功執行。

重要說明:如果嘗試連線到安全 Registry and Repository 伺服器,則應該在完成示例執行前看到出現彈出視窗,要求提供使用者 ID 和密碼。

可能的安全錯誤

使用 Rational Software Development Platform. 執行示例以訪問安全 Registry and Repository 伺服器時,有些人遇到了安全異常,包括以下錯誤訊息:“Reason: java.lang.SecurityException: The provider IBMJCE may not be signed by a trusted party”。這些訊息之所以出現,是因為 Rational 建立來執行應用程式的 JVM 環境在 JVM 引導類路徑上包括 IBMJCE 提供程式 jar,而這在從命令列啟動標準 JVM 時並不會發生。

如果看到此錯誤,將需要修改 Rational 所使用的 JRE 來執行應用程式,以從引導類路徑刪除此 jar。可以按照以下所述修改 JRE:

  1. 選擇 Windows => Preferences,展開 Java 部分並選擇 Installed JREs
  2. 選擇 WebSphere V6 JRE 並單擊 Edit
  3. 取消選中標籤為 Use default system libraries 的核取方塊。
  4. 向下滾動庫列表,以找到 ibmjceprovider.jar,選擇此庫並單擊 Remove

修改 JRE 只能將此 jar 從 JRE 引導類路徑刪除。修改 JRE 並不會從系統中刪除此 jar。jar 保留在正確的位置,可在需要時供 JVM 使用。

如果針對非安全 Registry and Repository 伺服器進行測試,或者沒有看到這個特定的異常,則不需要進行這些更改。

瞭解包中包含的示例應用程式

下表給出了包中包括的示例應用程式的摘要。要執行示例,應該使用示例名稱 作為 launchClient 命令的最後一個引數。

您應該瞭解一下前兩個示例 SimpleDocumentSplitDocument 應用程式,因為大部分其他示例都重用其中之一的程式碼來在註冊中心建立文件和物件,以對其進行進一步的操作。

有些示例應用程式需要使用在一個或多個其他示例中使用的 API 和技術;在這種情況下,類 prolog 中的註釋將說明可以參考的所有其他相關示例。


表 1. 示例 Registry and Repository 應用程式
示例名稱和類 概述
EJB-SimpleDocument
com.ibm.wsrr.samples.ejb.SimpleDocument
簡單註冊中心文件的基本建立、檢索和刪除操作。
EJB-SplitDocument
com.ibm.wsrr.samples.ejb.SplitDocument
介紹已經拆分為三個標準部分並使用“import”語句引用和連線的 WSDL 文件的載入和處理。
EJB-ObjectProperties
com.ibm.wsrr.samples.ejb.ObjectProperties
說明如何檢視和操作與註冊中心中的物件關聯的後設資料屬性。說明標準 Registry and Repository 建模屬性和使用者定義的其他屬性。
EJB-ObjectRelationships
com.ibm.wsrr.samples.ejb.ObjectRelationships
說明如何檢視和操作與註冊中心中的物件間建立的後設資料關係。說明標準 Registry and Repository 建模關係和使用者定義的其他關係。
EJB-ObjectClassifications
com.ibm.wsrr.samples.ejb.ObjectClassifications
說明本體系統中的分類可如何用於對註冊中心中的物件進行分類和定位。

注意:此應用程式需要將 SampleFruit.owl 預載入到註冊中心中。

EJB-PredefinedQueries
com.ibm.wsrr.samples.ejb.PredefinedQueries
說明如何執行預先定義的查詢來定位註冊中心內容。
EJB-GraphQueries
com.ibm.wsrr.samples.ejb.GraphQueries
說明如何使用 XPATH 搜尋表示式執行圖表查詢來在註冊中心中定位和返回完整物件及相關物件的連線圖表。
EJB-PropertyQueries
com.ibm.wsrr.samples.ejb.PropertyQueries
說明如何使用 XPATH 搜尋表示式執行屬性查詢,以返回註冊中心中與物件關聯的後設資料屬性資訊子集。屬性查詢通常比圖表查詢執行速度快,返回的資訊相對較少。
EJB-GenericObjects
com.ibm.wsrr.samples.ejb.GenericObjects
說明如何建立、檢索和刪除用於表示註冊中心中儲存的任意概念的通用物件。
EJB-DocumentVersioning
com.ibm.wsrr.samples.ejb.DocumentVersioning
說明在將文件儲存在註冊中心時如何使用通用物件集合來解決與“import”語句相關的版本控制問題。
EJB-LogicalObjects
com.ibm.wsrr.samples.ejb.LogicalObjects
給出了自動從儲存在註冊中心的物理文件派生邏輯模型物件的一些示例。
EJB-ClassificationSystems
com.ibm.wsrr.samples.ejb.ClassificationSystems
說明如何瀏覽和導航儲存在註冊中心中的分類系統。

注意:此應用程式需要將 SampleFruit.owl 預載入到註冊中心。

EJB-DocumentGovernance
com.ibm.wsrr.samples.ejb.DocumentGovernance
說明如何驅動儲存在註冊中心的物件的簡單治理生命週期。
EJB-CollectionGovernance
com.ibm.wsrr.samples.ejb.CollectionGovernance
說明如何將物件集合作為單個實體進行治理以及如何驅動此類集合的治理生命週期。

結束語

本文對各個 Registry and Repository API 進行了簡單介紹,並通過圍繞基於 J2EE 的 EJB API 構建的一組全面的示例應用程式演示了其使用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-586923/,如需轉載,請註明出處,否則將追究法律責任。

相關文章