使用IBM Rational Application Framework for WebSphere進行資源自動化部署,第1部分
IBM® Rational® Application Framework for WebSphere® 為對 IBM® WebSphere® Application Server 與 IBM® WebSphere® Portal Server 自動化安裝與補丁,配置管理與程序部署提供了一個基礎。本文提供了對一些基本資源管理概念的介紹,例如資源配置如何存儲在 XML 文件中,命令行語法與資源協同工作的方式,操作模式的概念等等。
引言
IBM® Rational® Application Framework for WebSphere® 為對 IBM® WebSphere® Application Server 與 IBM® WebSphere® Portal Server 自動化安裝與補丁,配置管理與程序部署提供了一個基礎。本文使您可以仔細查看怎樣使用該工具來管理數據源,Java™ Message Service (JMS)查詢,郵件或者 URL 資源。您有很多種方式可以使用該 Rational 框架:
性能調試:性能調試的一個重要方面是調試資源。例如,管理員可以決定數據庫連接的最大數量,以及處理實際工作負荷應該所用的預備狀態緩存空間的最優數量。在性能測試環境得到調試之後,您就可以使用 Rational 框架來從性能測試環境中復制所有的環境,並對產品環境應用這些測試環境。
資源的自動化部署:大多數的公司擁有單獨的團隊,來部署程序,以及安裝並管理它們的 WebSphere 基礎。這些公司都面臨一個問題:開發團隊怎樣讓管理性團隊了解程序需要什麼 資源,以及怎樣為之提供需要的信息?他們要不發送關於所有細節信息的電子郵件,有些人可以手動作出所有的更改,或者他們可以使用 IBM® Rational® Build Forge® 加上 Rational Application Framework for WebSphere,以創建一個基於 Web 的工作流程,開發團隊或者基礎團隊可以使用它來創建資源。
發布管理:大多數的公司使用開發環境或者集成式測試環境,來將不同團隊所開發的代碼集成起來,因此創建不同程序所需要的資源,以確定每一個部分都能協調工作。當集成測試成功時,您就可以使用 Rational Application Framework for WebSphere 來將版本從一種環境移動到另一種環境。例如,您可以將發布從開發進行到 QA(質量認證),並最終進行生產。
創建資源作為安裝過程的一部分:您可能想要創建資源作為安裝的一部分。例如,您可能想要創建指向中央數據庫的數據源,或者創建一系列的 JMS 查詢作為安裝新環境的一部分。您可以使用 Rational Application Framework for WebSphere,來將資源的安裝與創建都進行自動化,作為安裝的一部分。
Rational Application Framework for WebSphere 是一種命令行工具,它為自動化私人資源提供了一種命令。例如,您可以使用命令來控制 Java™ Database Connectivity (JDBC)提供者,另一個命令可以控制一個 JDBC 數據源等等。軟件與 Rational Build Forge 綁定到一起,就是構建與發布管理軟件。您可以使用 Build Forge 來創建一個工作流程,該工作流程會定義創建數據源所需的步驟,而且它可以調用一些 Rational Application Framework for WebSphere 命令。例如:
首先,創建 Java™ 認證與授權服務(JAAS)條目。
然後創建一個 JDBC 提供者,並為 WebSphere 變量設置一個值。
然後創建一個數據源等等。
本文是兩篇文章所組成專題的第一部分,文中論及了怎樣使用該框架來自動化部署 WebSphere Application Server 中的資源。本文涵蓋了 Rational Application Framework for WebSphere 中資源管理的基本方面,第二部分是一些具體的指南,涉及到了怎樣使用 Rational Application Framework for WebSphere 與 Rational Build Forge 之間的聯合,以自動化部署資源。您會學到資源配置是如何存儲的,怎樣創建不同范圍的資源,以及怎樣應用 操作模式 的概念然後您可以創建一個可以使用的 Build Forge 項目,來將數據源的部署工作自動化,從而將理論轉化為實踐工作。
四個基本的構件
Rational Application Framework for WebSphere 工具為控制資源提供了命令。它提供了 rafw.bat 或者 rafw.sh 文件作為條目點,而且您可以使用以下的命令行格式來調用它:
清單 1. Rational Application Framework for WebSphere 命令行格式
rafw.bat/.sh -e <environment>
<Scope> <actionmode> <action>
rafw.bat 文件命令行信息可以分為以下四個基本部分:
Action:Action 命令行參數用於指定您想要執行的操作。您可以使用 was_common_configure_jdbc_data sources 參數來控制數據源。重點:注意所有資源配置操作的名字都以 was_common_configure 開始。
Resource Configuration:框架得到了設計,這樣就可以使用一個 Rational Application Framework for WebSphere 服務器來管理多種環境了。例如,您可以管理開發以及來自某個服務器的產品環境了。 提示:您要一直使用 -e 命令行參數來指定想要執行環境的名字。
Action Scope:您可以使用 Rational framework 來在 WebSphere 范圍內以不同的層次執行命令。例如,如果您有一個擁有三個節點和三個服務器的集成式環境,那麼 Rational Application Framework for WebSphere 就可以在單元、節點、集團或者服務器層次上運行命令了。您必須通過命令行來發送范圍信息,這樣軟件就可以檢測到命令行應該執行的范圍了。
Action 模式:程序框架工具使用 Action 模式來降低了操作的數量。例如,除了創建單獨的操作,以導出運行服務器的數據源配置,並將數據源配置導入到運行的服務器中,該軟件會引入 Action 模式的概念,它只是一種命令行之間的切換。例如,was_common_configure_jdbc_datasources 操作用於控制數據源。您可以使用它來將一個正在運行的 WebSphere Application Server 的配置導出到一個 XML 文件中,添加一個 -i (導入)命令行開關。但是如果您將 -i 命令配置替換為 -t (執行),框架工具會從 XML 文件中讀取數據源配置,並應用它以運行服務器。
Action
Action 代表了您想要在目標系統上運行的自動化工作流程。Rational Application Framework for WebSphere 框架支持以下三種類型的操作:
安裝與補丁:用於安裝 WebSphere 產品的 Actions,並對那些產品應用補丁和補丁包。這些類型的操作以它們的名字來 安裝,例如:
was_61_install_was
配置變更管理:用於配置和管理 WebSphere 服務器的 Actions。配置操作工作流程一般情況下以下面的內容開頭:
was_common_configure。
企業程序部署:用於管理企業程序部署的操作。該目錄之下的操作一般會管理 WebSphere 企業程序或者 WebSphere 端口、portlet 以及頁面配置。
您可以使用 -l 命令行切換以得到給定范圍層次上 Rational 框架所支持的操作列表。該列表是基於服務器類型與拓撲結構來動態計算的。因此,如果您試著得到給定 WebSphere Application Server 層次支持的操作列表,那麼它與服務器層次上 Websphere Portal Server 所支持的操作列表不同。同樣,單元層次上支持的操作列表會發生變化,這取決於它是獨立的還是 Network Deployment (ND)安裝。例如,在 ND 安裝中,有啟動的操作,終止 DMGR 的操作,管理工作流程的操作等等。圖 1 顯示了一個屏幕截圖,該截圖代表了 WebSphere Application Server 6.1 版本環境中單元層次 Rational Application Framework for WebSphere 所支持的操作列表。
圖 1. 單元層次上支持的操作列表
資源配置
WebSphere Application Server 提供了一種對用戶十分友好的方式來管理資源。例如,當您試著配置數據源以連接到一個 Apache Derby 服務器上時,它所詢問的唯一一件事便是數據庫名,而該信息已經足夠您開始操作了。但是如果您是一名高級用戶的話,它向您提供了機會去在 Connection pool 層次上配置超過 10 個不同的屬性,並在 數據源 層次上配置超過 10 個不同的屬性。對數據源您也會有更精細的控制。
因為它是一個命令行工具,所以使用 Rational Application Framework for WebSphere 來提供所有的配置屬性或者參數是不可能的了。現在開發員想要給您靈活精細調試 WebSphere Application Server 所提供的所有屬性的功能,這樣 Rational 框架使用資源配置文件。資源配置文件是以一種特定 Rational 框架的方式存儲資源配置的 XML 文件。通常來說,在資源配置與操作之間有一種一對一的映射。例如,JAAS 配置存儲在 JAAS.xml 文件,而 WebSphere 變量配置存儲在 variable.xml 文件中,但是也與一些例外情況的存在。jdbc.xml 文件包含有 JDBC 提供者與數據源的配置。您可以找到 Help 話題中資源配置文件完全合格的名字。
讓我們先仔細查看一下 Rational Application Framework for WebSphere 資源配置文件的概念。首先,我們會查看一下 WebSphere Application Server Configuration (在我自己的機器上),然後我們會看一下該配置是怎樣存儲在框架的資源配置文件中的。
圖 2 是本地機器上 WebSphere Application Server 管理員操控台的屏幕截圖。正如您看到的那樣,我擁有單元層次上定義的兩個變量:一個變量是 WAS_CELL_NAME,而另外一個是 DERBY_JDBC_DRIVER_PATH。
圖 2. 單元層次上支持的操作列表
該 WebSphere 配置(圖 1)是由使用 Rational Application Framework for WebSphere 環境樹中代碼行 2 中所示以下 variables.xml 文件所代表的。
清單 2. Rational Application Framework for WebSphere 環境樹中的 variable.xml
<?xml version="1.0"?>
<Variables>
<!-- BEGIN variables -->
<VariableSubstitutionEntry symbolicName="WAS_CELL_NAME" value="LENOVO-4CB078C9Cell01">
</VariableSubstitutionEntry> <VariableSubstitutionEntry
symbolicName="DERBY_JDBC_DRIVER_PATH" value="C:/software/db-derby-10.5.3.0-bin/lib" >
</VariableSubstitutionEntry>
<!-- END variables -->
</Variables>
正如您所看到的那樣,variable.xml 文件擁有 Variables 作為一個頂級的元素,而且它擁有兩個 VariableSubstitutionEntry 元素,該元素需要兩個 WebSphere 變量。symbolicName 屬性的值代表了 WebSphere 變量的名字,而 value 屬性的值則代表了 WebSphere 變量的值。您並不需要記住任意文件的格式。您可以使用 Rational Application Framework for WebSphere 或者查看 BuildForge\rafw\samples\xml\was 目錄,來一直將當前服務器的配置導出到 XML 文件中,對於每一個資源它都有一個范例的 XML 配置文件。您可以使用模板文件作為起始點。
Rational Application Framework for WebSphere 框架工具是嚴格以配置文件為中心的。如果您想要創建一個新的變量,您可以打開 variable.xml 文件並添加一個帶有適當值的 VariableSubstitutionEntry 元素,然後將其導入到 WebSphere Application Server。與之類似,如果您想要更新 WebSphere 變量的值,您可以編輯 variable.xml 文件以設置適當的值,然後使用 Rational Application Framework for WebSphere 來將其導入到 WebSphere Application Server。您可以刪除 VariableSubstitutionEntry 元素來刪除一個變量,然後使用 Rational 框架來將其導入到 WebSphere Application Server。在討論操作模式時您可以仔細查看它。但是在您這樣做之前,您必須先了解一下操作范圍的概念。
注意:
在 hood 下面,WebSphere Application Server 還會使用 .xml 文件來存儲資源配置。資源配置 XML 文件存儲在 profiles_home/<profilename>/config/ 目錄中。這就是 variable.xml 文件,如代碼行 3 所示 。
清單 3. WebSphere Application 服務器配置目錄中的 variable.xml
<?xml version="1.0" encoding="UTF-8"?>
<variables:VariableMap xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:variables="http://www.ibm.com/websphere/appserver/schemas/5.0/variables.xmi"
xmi:id="VariableMap_1">
<entries
xmi:id="VariableSubstitutionEntry_1261708415953" symbolicName="WAS_CELL_NAME"
value="LENOVO-4CB078C9Cell01"/> <entries
xmi:id="VariableSubstitutionEntry_1261760108343" symbolicName="DERBY_JDBC_DRIVER_PATH"
value="C:/software/db-derby-10.5.3.0-bin/lib"/>
</variables:VariableMap>
正如您可以從代碼行 3 所示的那樣,存儲兩個變量還有一些條目。與 WebSphere Application Server 存儲配置的方式相比,Rational Application Framework for WebSphere 存儲配置的方式有一些不同:
第一個是 Rational 框架中的配置文件對於用戶來說更加友好,因為假定用戶會直接處理這些文件。在 WebSphere Application Server 的條件下,並不認為用戶去關注配置存儲的方式。相反,他們會使用 WebSphere Application Server 管理員操控台或者 WSAdmin 腳本來編輯資源。
第二個差異是 WebSphere Application Server 與 Rational Application Framework for WebSphere 中的 .xml 文件有一個工作流程一對一的映射。例如,WebSphere Application Server 會為 .xml 文件中多種資源類型(例如 JDBC、JMS、郵件以及 URL 資源)存儲資源配置,但是 Rational Application Framework for WebSphere 對於每一種類型的資源類型都有一個單獨的 .xml 文件,但是在 WebSphere Application Server 中,JAAX 條目會存儲在 security.xml 文件中,以及其他一些安全性相關的配置文件中。
Action 范圍
范圍 的 WebSphere Application Server 概念用於資源的控制器可視性。例如,如果您在單元層次上創建一個數據源的話,那麼對於在該單元上運行的所有程序來說,都可以訪問該數據源。但是如果您是在服務器層次上創建一個數據源的話,那麼只有該特定服務器內部運行的程序才能夠訪問這些數據源。不是所有的資源都支持范圍的概念。例如,JAAS 條目總是會在單元層次之上創建,但是數據源,WebSphere 變量,支持多種范圍,WebSphere Application Server 管理員操控台會在頁面的頂部顯示一個 Scope 選擇框,並且會要求您在創建資源之前選擇一個范圍。
Rational framework 還使用 環境樹 的概念來支持范圍,它是一種用於存儲資源配置文件的目錄結構。框架在適當的范圍層次上存儲了資源配置文件。例如,我在單元層次上擁有一個 jdbc.xml 文件,在單元層次上有一個,在服務器層次上也有一個;盡管如此,服務器層次上的 jdbc.xml 文件擁有服務器層次上數據源的定義。圖 3 顯示了環境樹在本地機器上會是什麼樣子。
圖 3. 不同范圍層次上的配置文件
在執行任意命令的同時您就需要指定完全合格的范圍信息。例如,您可以使用以下的語法來運行單元層次上的 was_common_configure_jdbc_data sources 命令:
rafw.bat -e env -c <cellname> -t was_common_configure_jdbc_data sources
您可以使用以下的語法來在服務器層次上運行相同的命令:
rafw.bat -e env -c <cellname> -n <nodename>
-s <servername> -t was_common_configure_jdbc_data sources
基本的想法是使服務器名字完全合格,您必須知道單元名,節點和服務器名,所以您必須在命令行上指定這些值。Rational Application Framework for WebSphere 框架支持以下的四個范圍層次:
單元層次:您可以使用以下的語法來執行單元層次上的操作:
rafw.bat -e <env_name> -c <cell_name> -t <action_name>
當您這樣做時,Rational Application Framework for WebSphere 將會使用存儲在 user\environments\<env_name>\cells\<cell_name> 目錄下的資源配置文件。
節點層次:您可以使用以下的語法來執行節點層次上的操作:
rafw.bat -e <env_name> -c
<cell_name> -n <node_name> -t
<action_name>
當您這樣做時,框架將會使用存儲在以下目錄下的資源配置文件:
user\environments\<env_name>\cells\<cell_name>\work flowdes\<node_name>
服務器層次:您可以使用以下的語法來執行服務器層次上的操作:
rafw.bat -e <env_name> -c <cell_name> -n
<nodede_name> -s <server_name> -t
<action_name>
當您這樣做時,Rational Application Framework for WebSphere 將會使用存儲在以下目錄中的資源配置文件:
user\environments\<env_name>\cells\<cell_name>
\nodes\<node_name>\servers\<server_name>
集團層次:您可以使用以下的語法來執行集團層次上的操作:
rafw.bat -e <env_name> -c <cell_name> -u
<cluster_name> -t <actionaname>
當您這樣做時,Rational Application Framework for WebSphere 將會使用存儲在以下目錄中的資源配置文件:
user\environments\<env_name>\cells\<
cell_name>\clusters\<cluster_name>
注意:
如果您查看本地機器上的 WebSphere Application Server 安裝文件,那麼您就會注意到在 profiles\<profilename>\config 目錄的結構內部也包含有拓撲結構的信息。在頂級的層次上,對於單元中的每一個工作流程每一個單元目錄都有一個節點目錄。您將會找到每一個層次中 resources.xml and variables.xml 文件的多種版本。如果您定義了單元層次上的數據源,那麼數據源配置將會存儲在單元層次目錄中的 resources.xml 文件中。
Action 模式
將當前系統的配置導出到 XML 配置文件中,以及將配置從 XML 配置文件導入到一個目標系統中的概念,組成了 Rational Application Framework for WebSphere 框架中資源管理的基礎。例如,如果您想要在單元層次上創建一個 WebSphere 變量,您可以按照下面的操作進行。
在單元范圍內將目標系統的 WebSphere 變量導入到 variable.xml 文件中。
您可以向 variable.xml 配置文件添加一個 VariableSubstitutionEntry 元素來編輯它。
然後您可以從 XML 配置文件中將配置導出到目標系統中。此時,Rational Application Framework for WebSphere 框架會添加,更新或者刪除目標系統中的變量,以確定它們與 variables.xml 文件保存同步化。
導入與導出的概念用於管理每一種類型的資源。Rational Application Framework for WebSphere 不是為導入與導出操作創建一個單獨的操作,而是使用 操作模式 的概念,它是基本的命令行開關。例如,was_common_configure_variables 操作用於控制 WebSphere 變量。您可以使用 -i 命令行開關,來將目標系統中的配置導入到 Rational Application Framework for WebSphere,這也叫做 導入 模式中的運行操作。但是如果您想要將當前的 Rational Application Framework for WebSphere 配置導出到一個目標系統中,那麼您可以使用 -t 開關。正像您所猜到的那樣,它叫做 導入 模式。除了導入與導出,Rational 框架還有 比較 模式,在這種模式中 Rational Application Framework for WebSphere 並不會對配置作出什麼更改,而只是將框架配置與目標 WebSphere Application Server 配置進行比較。讓我們仔細查看一下以下的每種模式。
Help 模式
您可以使用 -d 開關來在 Help 模式下執行一項操作。當您執行這種操作時,Rational Application Framework for WebSphere 將會為該項操作提供具體的幫助。圖 4 顯示了 was_common_configure_jdbc_data sources 的幫助界面會是什麼樣子。
圖 4. Help 模式
操作幫助會分為以下的幾個部分:
描述:這個部分提供了該操作會做些什麼的動態描述。屏幕截圖呈現了單元范圍內的幫助,所以它會說“當前支持的所有 Compare 版本支持操作並取決於單元范圍環境樹中的 jdbc.xml 文件”。該幫助信息基於范圍會發生變化。
需要的數據:需要的數據部分顯示了一系列需要的數據,這些數據在各種配置文件中必須得到設置以運行該操作。它可以分為兩個部分:
環境數據:第一部分顯示了環境層次需要的一系列數據。像 configure.properties 這樣的事情必須擁 WAS_USERNAME, WAS_PASSWORD 屬性的值。
配置數據:需要數據的第二部分包含了資源配置文件完全合格路徑的信息。這取決於 D:\IBM\BuildForge\rafw/user/environments/dev/cells/LENOVO-4CB078C9Cell01/jdbc.xml 文件中已存在的條目,以及用於呈現數據源元素的 XML 元素:JDBCDataSources
支持的模式:這一部分列出了該操作支持什麼樣的模式。
注意:這一部分提供了關於該操作工作的重要信息。在屏幕截圖中,它會描述什麼時候執行 was_common_configure_jdbc_data sources,它會在 jdbc.xml 文件上進行迭代,並為該文件中的每一個 JDBCDataSources 創建一個數據源。
Execute 模式
您可以使用 -t 命令行開關來執行執行或者導出模式下的操作。在執行模式下,Rational Application Framework for WebSphere 框架會讀取 XML 配置文件,並對目標服務器應用配置。當您在 Execute 模式下執行 was_common_configure_jdbc_data sources 操作時,Rational 框架首先會為當前的范圍層次而搜索適當的 jdbc.xml 文件。接下來,它會刪除掉適當層次中服務器中的所有數據源,然後它會通過 jdbc.xml 文件中所有的 JDBCDataSources 元素來進行迭代,並使用元素中指定的值來為每一個 JDBCDataSources 元素來創建一個數據源。結果,在 Execute 模式的結尾,運行服務器的配置與 jdbc.xml 文件的配置相同。
Import 模式
您可以指定 -i 命令行開關,來使用導入模式中的 Execute。例如,當您在執行導入模式中的 was_common_configure_jdbc_data sources 操作,Rational Application Framework for WebSphere 將會連接到運行的服務器上,以決定在指定范圍層次下它擁有什麼數據源。例如,如果您是在單元范圍內運行該操作,那麼您就會發現服務器在單元范圍內擁有什麼數據源,然後它就會為單元層次下 jdbc.xml 中找到的每個數據源元素創建一個 JDBCDataSources。
Compare 模式
您可以指定 -r 命令行開關來在 Compare 模式下執行一項操作(見於圖 5)。該模式會比較 Rational Application Framework for WebSphere 環境樹中的配置數據,與特定范圍層次您所指定的實際 WebSphere 配置數據之間的差異。Compare 模式只適用於配置操作。比較的結果會顯示環境樹與 WebSphere 數據之間配置數據之間的差異。
圖 5. Rational Application Framework for WebSphere Compare 模式
圖 5 中的屏幕截圖呈現了當我試著在本地機器上 Compare 模式下運行The screen capture in Figure 5 represents the output when I tried to run the was_common_configure_jdbc_data sources 操作時的輸出。當我想要執行操作時,WebSphere Application Server 數據中數據源的配置與 jdbc.xml 文件之間存在一定的差異。jdbc.xml 文件中擁有 sampleAlias2 數據源的定義,但是該數據源在 WebSphere Application Server 中卻沒有定義,所以系統會給出一個“對象不能匹配,差異在於。。。”的錯誤報告,因為有一個丟失的對象。
在我指出這些差異之後,我就可以按照下面的幾種方式來將其校正:
通過運行執行模式中的 was_common_configure_jdbc_data sources 操作,來編輯 WebSphere Application Server 配置,在這種情況下 SampleAlias2 對象將會在運行的 WebSphere Application Server 中得到創建。
或者在導入模式下運行 was_common_configure_jdbc_data sources 操作,在這種情況下 SampleAlias2 對象將會從 jdbc.xml 文件中刪除掉。
Preview 標志
您可以指定 -z 開關來執行概述標志中的一個操作。Preview 模式並不是一個單獨的模式。相反,它不僅僅是一個調試工具。當您添加 -z 命令行開關時,Rational Application Framework for WebSphere 工具將會為指定的范圍與操作顯示出語法,但是它並不會運行操作。這條信息會作為操作輸出的一部分而顯示出來。當我試著執行執行模式下的 was_common_configure_jaas 操作並添加 -z 命令行開關時,圖 5 顯示了界面。
圖 6. Preview 模式
正如您所看到的那樣,當我在運行 Preview 模式中的 was_common_configure_jaas 操作時,它會顯示關於執行模式操作的具體信息。例如,首先,它會給密碼解碼,設置變量,然後使用 jaas.xml 作為輸入來訪問 jaas.py。您可以找到 jaas.xml 完全符合要求的路徑名,以及用於編輯 WebSphere Application Server 配置的 WSAdmin 腳本。概述模式是一種非常好用的工具,您可以使用它來學習 Rational Application Framework for WebSphere 的內部結構,或者調試您所遇到的錯誤。
總結
本文涉及到了使用 Rational Application Framework for WebSphere 來管理資源的基本方面。我最喜歡這款軟件的一點在於,在您學習資源管理的這些基本方面,以及使用它來控制一種類型的資源,例如數據源之後,您就可以將學到的知識投入應用到其他類型的資源中,例如 JMS 查詢,郵件以及 URL 資源。您可以使用 Help 模式來找到怎樣管理一種特定資源的信息,例如應該使用什麼操作名,該操作支持什麼模式,或者在什麼地方為特定類型的資源找到一個模板文件。在這部分兩篇文章組成的系列專題的第二篇中,您可以將該概念應用到數據源資源的自動化部署中。