在控制臺生成命令之后,它們將顯示在 Rational Application Developer 的 WebSphere Administration Command Assist 視圖中(圖 4)。在此視圖中顯示的命令可以插入任何 Jython 文件的任何部分,只需將光標置于文件中所需的位置,右鍵單擊該命令,并選擇 Insert 即可(圖 4)。
圖 4. Rational Application Developer 中的命令幫助窗口

![]() ![]() |
![]()
|
使用帶變量的命令幫助
在整個管理控制臺中生成的命令可提供在環境中創建和操作項目的正確 wsadmin 對象類型、函數、語法、屬性和示例值。如果您是編寫 wsadmin 腳本的新手,或者需要為新功能編寫腳本,則上述功能對您開始工作提供有力幫助。
圖 4 中用于列出和修改端口的示例命令源自需要與每臺服務器關聯的項目集清單(例如端口、應用程序、資源等等)的客戶。包含 70 多臺服務器的環境絕對需要腳本。為了向您介紹如何創建列出每臺服務器的所有資源(如 JDBC 驅動程序)的腳本,下面的步驟描述了為腳本文件生成命令的過程。盡管這是一個十分簡單的練習,但通過該練習可以了解如何將命令幫助創建的命令與 Jython 的基本功能合并在一起,以創建滿足特定需要的解決方案。
對于本例而言,您的需求是獲得列出所有 WebSphere Application Server 以及每臺服務器的所有 JDBC 驅動程序的命令。本例的計算單元由一臺部署管理器和三臺服務器構成。
在部署管理器的管理控制臺中:
- 導航到 Servers => Server Types => WebSphere application servers。面板的中央部分顯示了計算單元中此類服務器的列表。
- 如果既未啟用命令幫助日志記錄又未啟用通知,則請單擊 View administrative scripting command for last action 鏈接檢索、復制和保存該命令。
- 將顯示以下命令:
AdminTask.listServers('[-serverType APPLICATION_SERVER ]')
- 導航到 Resources => JDBC => JDBC providers。面板的中央部分顯示了計算單元中此類提供程序的列表。
- 將范圍更改為其中的一臺服務器:
Node=T60P-2007-CQ8Node03, Server=server1
- 如果既未記錄命令幫助又未啟用通知,則請單擊 View administrative scripting command for last action 鏈接檢索、復制和保存該命令。
- 這時將顯示與以下內容類似的命令:
AdminConfig.list('JDBCProvider', AdminConfig.getid( '/Cell:T60P- 2007-CQ8Cell01/Node:T60P-2007-CQ8Node03/Server:server1/'))
現在可以將這兩個命令與其他 Jython 代碼合并在一起,以便為每臺服務器生成所需 JDBC 提供程序的列表。要運行該腳本,請使用以下指定的文件選項和文件名啟動 wsadmin:
wsadmin -f c:\IBM\AppServer_list_jdbc.py.
清單 2 中顯示了示例腳本。(注意:Jython 不使用行號,但本例中嚴格顯示行號是為了便于說明。)
清單 2. 合并命令和 Jython 腳本語言的腳本文件內容
1 appServers = AdminTask.listServers('[-serverType APPLICATION_SERVER ]').splitlines()2 3 for appServ in appServers: 4 print appServ5 jdbc = AdminConfig.list('JDBCProvider', appServ) 6 print jdbc |
第 1 行使用一個字符串函數 splitlines() 分隔服務器列表,然后將這些值作為一個變量 appServers 進行存儲。在此列表中為每臺服務器存儲的值是唯一標識。第 3-6 行迭代該列表,并輸出每臺服務器的 ID(第 4 行),檢索該服務器范圍內所有 JDBC 提供程序的列表(第 5 行),然后輸出每個提供程序的屬性和值(第 6 行)。請參見清單 3 了解示例輸出。注意,在第 5 行中,為了更加通用,對命令幫助生成的命令稍微進行了修改;無需檢索特定服務器的 ID,現在可以為其提供 appServ 變量擁有的任何值。
清單 3. 腳本文件的部分輸出
server3(cells/T60P-2007-CQ8Cell01/nodes/T60P-2007-CQ8Node03/servers/server3|server.xml)"Derby JDBC Provider (XA)(cells/T60P-2007-CQ8Cell01/nodes/T60P-2007-CQ8Node03/servers/ server3|resources.xml#builtin_jdbcprovider)"[classpath ${DERBY_JDBC_DRIVER_PATH}/derby.jar][description "Built-in Derby JDBC Provider (XA)"][implementationClassName org.apache.derby.jdbc.EmbeddedXADataSource][isolatedClassLoader false][name "Derby JDBC Provider (XA)"][nativepath []][providerType "Derby JDBC Provider (XA)"][xa true]server1(cells/T60P-2007-CQ8Cell01/nodes/T60P-2007-CQ8Node03/servers/server1|server.xml) ... |
可以根據需要使用其他 wsadmin 命令(如 AdminConfig.showall())或 Jython 的其他各種功能和函數(如字符串操作函數)來檢索、修改或格式化命令幫助的輸出。
總結
本文的目的是為了提高對命令幫助功能的認識,命令幫助是 WebSphere Application Server 中的一種 Jython 腳本幫助工具,本文還提供了一些演示內置和外部解決方案的示例,以幫助您滿足管理需要。
管理大型環境和經常執行重復任務的人員會大量使用腳本。四種 wsadmin 命令對象的語法、函數和命名約定之間沒有大量的一致性。準確地確定命令來完成所需的操作以及為 wsadmin 構建腳本有時是一種極具挑戰性和非常耗時的任務,特別是對進行中級腳本開發的新手而言更是如此。命令幫助顯著地簡化了此過程同時提高了開發效率。
文章來源于領測軟件測試網 http://www.kjueaiud.com/