本Blog所有內容不得隨意轉載,版權屬于作者所有。如需轉載請與作者聯系(
fastzch@163.com
)。
未經許可的轉載,本人保留一切法律權益。
一直以來,發現有某些人完全不尊重我的勞動成果,隨意轉載,提醒一下那些人小心哪天惹上官司。
there are two types of tasks: the operational task and the configurational task.
wsadmin
支持兩種腳本語言:
jacl(Java Command Language
,
deprecated) & Jython
。
WAS6.1
提供了工具轉換
Jacl
腳本為
Jython
,工具名為:
Jacl2Jython
。這個工具能轉換
95-98%
的內容,但是開發人員必須手動的檢查所有的轉換。
?
wsadmin.bat(or wsadmin.sh)
在每個應用服務器的
profile
,
DM
,被管理的節點實例的
bin
目錄下,所以當你啟動
wsadmin
的時候,必須注意選擇正確的位置。
要想得到
wsadmin
語法相關的幫助,可以輸入
wsadmin.bat -?
,以下是幫助的詳細內容:
----------------------------------------------------------------------
WASX7001I: wsadmin
是用于
WebSphere
腳本編制的可執行文件。
語法:
?
wsadmin
??????? [ -h(elp)? ]
??????? [ -?]
??????? [ -c <command> ]
??????? [ -p <properties_file_name>]
??????? [ -profile <profile_script_name>]
??????? [ -f <script_file_name>]
??????? [ -javaoption java_option]
??????? [ -lang? language]
??????? [ -wsadmin_classpath? classpath]
??????? [ -profileName profile]
??????? [ -conntype
??????????????? SOAP
??????????????????????? [-host host_name]
??????????????????????? [-port port_number]
??????????????????????? [-user userid]
??????????????????????? [-password password] |
????
???????????RMI
??????????????????????? [-host host_name]
??????????????????????? [-port port_number]
??????????????????????? [-user userid]
??????????????????????? [-password password] |
??????????????? NONE
??????? ]
??????? [ -jobid <jobid_string>]
????
???[ -tracefile <trace_file>]
??????? [ -appendtrace <true/false>]
??????? [ script parameters ]
?
其中
???
“
command
”是要傳遞給腳本處理程序的命令;
???????
“
properties_file_name
”是要使用的
java
屬性文件;
???????
“
profile_script_name
”是在主命令或文件前要執行的腳本文件;
???????
“
script_file_name
”是要傳遞給腳本處理程序的命令;
???????
“
java_option
”是要傳遞給
Java
程序的
java
標準或非標準選項;
???????
“
language
”是要用于解釋腳本的語言;受支持的值為“
jacl
”和“
jython
”。
???????
“
classpath
”是附加到內置路徑中的類路徑;
???????
“
-conntype
”指定要使用的連接類型;
???????????????
缺省參數是“
SOAP
”
??????????????? conntype
為“
NONE
”意味著沒有建立服務器連接
???????????????
且某些操作會以本地方式執行;
???????
“
host_name
”是用于
SOAP
或
RMI
連接的端口;
???????????????
缺省值是本地主機;
???
????
“
port_number
”是用于
SOAP
或
RMI
連接的端口;
???????
“
userid
”是服務器以安全方式運行時
???????????????
所需的用戶標識;
???????
“
password
”是服務器以安全方式運行時
???????????????
所需的密碼;
???????
“
script parameters
”是命令行上的任何其他內容。它們
???????????????
在
argv
變量中傳遞給腳本;參數的數目
???????????????
可在
argc
變量中獲得。
???????
“
jobid_string
”是要用來審計
wsadmin
的每個調用的
???????????????
作業標識字符串;
???????
“
trace_file
”是
wsadmin
跟蹤輸出定向至的
???????????????
日志文件名和位置;
?
如果未指定命令或腳本,將創建一個解釋器
shell
以供交互使用。要離開交互式腳本編制會話,
使用“
quit
”或“
exit
”命令。
?
可以在單個命令行上指定幾個命令、屬性文件和
概要文件。它們是按照其指定的順序處理和執行的。
----------------------------------------------------------------------
?
?
配置
wsadmin
有三種方式:
1
,使用
Profile
或系統默認的屬性文件:
?????? <profile_home>/properties/wsadmin.properties
?????? or
?????? <was_home>/properties/wsadmin.properties
2
,使用自定義的環境變量去替換原來的配置文件的位置,環境變量為:
WSADMIN_PROPERTIES,
可以
Copy
默認的屬性文件到你指定的位置,然后修改它。
3
,在執行
wsadmin
命令時使用
-p
參數來設置屬性文件的位置
?
Wsadmin
屬性列表
Property
|
Value
|
com.
ibm.ws.scr
ipting.con
nectionTyp
e
|
SOAP, RMI or NONE
|
com.
ibm.script
ing.port
|
TCPport of targetsystem
|
com.
ibm.script
ing.host
|
Host name oftarget system
|
com.
ibm.ws.scr
ipting.def
aultLang
|
Jython or Jacl
|
com.
ibm.ws.scr
ipting.ech
oparams
|
Determineswhether parametersor argumentsare outputto STDOUTorto the wsadmintrace file
|
com.
ibm.ws.scr
ipting.tra
ceFile
|
File for trace information
|
com.
ibm.ws.scr
ipting.val
i
dationOutput
|
Location ofvalidation reports
|
com.
ibm.ws.scr
ipting.tra
ceString
|
=
com.ibm.*=all=enabled
|
com.
ibm.ws.scr
ipting.app
endTrace
|
Appends tothe end ofthe existing log file
|
com.
ibm.ws.scr
ipting.pro
files
|
List ofprofiles to be run before running user commands, scripts,oran interactive shell
|
com.
ibm.ws.scr
ipting.emi
tWarningFo
rC
usto
mSecurityP
olicy
|
ControlswhethermessageWASX7207W is emitted when custom permissions are found
|
com.
ibm.ws.scr
ipting.tem
pdir
|
Store temporary fileswhen installing applications
|
com.
ibm.ws.scr
ipting.val
idationLev
el
|
Levelof validation to use when configurationchangesaremadefromthe scripting interface
|
com.
ibm.ws.scr
ipting.cro
ssDocument
Va
lida
tionEnable
d
|
Determineswhether thevalidation mechanismexamines other documents whenchangesaremadetoonedocument
|
com.
ibm.ws.scr
ipting.cla
sspath
|
List ofpathsto search for classes and resources
|
?
Wsadmin
的調用有三種不同的方式:
使用單行命令方式
(-c)
?????? wsadmin –c AdminControl.getNode()
使用交互方式
?????? wsadmin
運行腳本文件,使用
-f
參數
?????? wsadmin –f myScript.py
?
使用
-profile
參數,表示要執行的一些預先執行的腳本。
使用
-p
可以定義屬性文件的位置。
?
Wsadmin
管理的對象包括:
AdminControl
:用于操作控制。通過
MBean
來進行通訊,包含查詢在在的運行中的對象和其屬性,并在這些對象上調用操作。另外,支持關于連接服務的查詢,客戶端跟蹤的方便命令,重新連接至服務器,啟動和停止服務器。
AdminConfig
:管理存儲在倉庫中的配置信息。通過
WAS
的配置服務組件來查詢和更改配置。可以使用它來查詢存在的配置對象,創建配置對象,修改存在的對象和移除配置對象。在分布式的環境中,此命令僅僅能用于連接到
DM
,不能連接到
Node Agent
或管理某一
Application Server
,因為這些服務器的進程配置僅僅是保存在
DM
上的一個
Copy(
副本
)
。
AdminApp
:能更新應用的元數據,映射虛擬主機到
Web
模塊,映射已安裝的模塊至服務器。對一個應用程序進行更改,比如為應用程序指定一個共享庫,設置會話管理的配置屬性。
AdminTask
:用于訪問面向任務的管理命令。這些命令用于訪問配置命令和運行時對象管理命令。當腳本客戶端運行時,可以自動發現管理命令。可用的管理命令以用于安裝
WAS
的版本。
Help
:
?????? print Help.AdminControl()
運行環境:
AdminConfig
,
AdminTask
,
AdminApp
對象都是處理配置功能。可以在連接或不連接至服務器的環境下運行,但
AdminControl
需要連接到服務器才能運行,因為他是通過調用正在運行的
JMX MBean
來執行的。
?
?
AdminControl.queryNames(*)
查詢當前運行在
MBean Server
上的所有
MBean
的對象名。
如果客戶端隸屬于一個單獨的
Server
,這個列表中僅包含運行在這個
Server
上的
MBean
。
如果客戶端隸屬于一個
Node Agent
,這個列表包含運行在此節點上所有
Server
的
MBean
。
如果客戶端隸屬于一個
DM
,這個列表中則包含運行在這個
DM
上的所有
Node Agent
,所有
Server
的
MBean
。
?
一個列出所有
MBean
對象的腳本:
file?
=
?
"
mbean.txt
"
logFile?
=
?open(?file,?
"
a
"
?)
mbStr?
=
?AdminControl.queryNames(
"
*:*
"
)
mbList?
=
?mbStr.split(java.lang.System.getProperty(
"
line.separator
"
))
for
?item?
in
?mbList:
????????
if
?(item?
!=
?
""
):
????????????????
print
?
>>
logFile,?
"
ObjectName:?
"
+
item
????????
#
endIf
#
endFor
會得到如下形式的內容:
ObjectName:?WebSphere:name
=
wasportlet.war,process
=
server1,Application
=
isclite,platform
=
dynamicproxy,J2EEApplication
=
isclite,node
=
starNode01,J2EEName
=
isclite
#
wasportlet.war,j2eeType=WebModule,J2EEServer=server1,Server=server1,version=6.1.0.0,type=WebModule,mbeanIdentifier=null,cell=starNode01Cell,spec=1.0
你可以通過關鍵字來縮小查找范圍,如:
wsadmin>AdminControl.queryNames('WebSphere:type=Server,node=starNode01,*')
另外,也可以通過
completeObjectName
命令來獲得其完整的對象名。如:
wsadmin>AdminControl. completeObjectName ('WebSphere:type=Server,node=starNode01,*')
但這個命令如果遇到多個匹配項的時候會提示并只會返回第一項。
?
可以通過如下方法得到一個對象的屬性:
wsadmin>serv=AdminControl. completeObjectName ('WebSphere:type=Server,*')
wsadmin>print Help.attributes(serv)
得到如下結果:
屬性??????????????????????????????類型??????????????????????????????訪問
name????????????????????????????java.lang.String????????????????RO
shortName???????????????????????java.lang.String????????????????RO
threadMonitorInterval???????????int?????????????????????????????RW
threadMonitorThreshold??????????int?????????????????????????????RW
threadMonitorAdjustmentThreshold??int?????????????????????????????RW
pid?????????????????????????????java.lang.String????????????????RO
cellName????????????????????????java.lang.String????????????????RO
cellShortName???????????????????java.lang.String????????????????RO
deployedObjects?????????????????[Ljava.lang.String;?????????????RO
javaVMs?????????????????????????[Ljava.lang.String;?????????????RO
nodeName????????????????????????java.lang.String????????????????RO
nodeShortName???????????????????java.lang.String????????????????RO
processType?????????????????????java.lang.String????????????????RO
resources???????????????????????[Ljava.lang.String;?????????????RO
serverVersion???????????????????java.lang.String????????????????RO
serverVendor????????????????????java.lang.String????????????????RO
state???????????????????????????java.lang.String????????????????RO
platformName????????????????????java.lang.String????????????????RO
platformVersion?????????????????java.lang.String????????????????RO
internalClassAccessMode?????????java.lang.String????????????????RO
objectName??????????????????????java.lang.String????????????????RO
stateManageable?????????????????boolean?????????????????????????RO
statisticsProvider??????????????boolean?????????????????????????RO
eventProvider???????????????????boolean?????????????????????????RO
eventTypes??????????????????????[Ljava.lang.String;?????????????RO
每一個屬性都有可讀寫性,RO代表只讀,RW代表可讀可寫。
我們可以通過
AdminControl
的
getAttribute
和
setAttribute
方法來對這些屬性進行操作,如:
AdminControl.getAttribute(serv,'pid')
?
同時,
operations
命令也可以為我們列出某一
MBean
支持的操作,如下:
print Help.operations(serv)
?
MBean
支持的操作可以用
invoke
命令來進行調用,如:
print AdminControl.invoke(serv,'getVersionsForAllProducts')
?
另外,有一個圖形化的工具
MBI
(
MBeanInspector
)可以查看和調用
MBean
的這些屬性。目前
IBM
的網站上提供的版本是為
WAS5.x
的版本開發的,但是在
WAS6.x
中也可以使用。
MBI
并不是與
profile
相關的,可以使用
WAS
安裝目錄
profile
下的
sas.proerties
文件替換到
WAS
根目錄下面的
sas.properties
文件,以此來允許安全的連接。其網址為:
http://www.alphaworks.ibm.com/tech/mbeaninspector
?
?
AdminConfig and AdminTask Objects are used to managed configuration information.
AdminConfig
通過
WAS
的配置服務查詢和更新配置。所有通過
AdminConfig
的命令的
modifications
都被存儲到臨時的工作空間,直到調用
save
命令。
注意:使用
AdminConfig
配置
WAS
,需要對
WAS
的
XML
配置文檔和配置目錄內容有很好的理解。
Types
命令
WAS
的配置在一組
XML
文檔中由
types
和
attribute names
組成。在
wsadmin
中,每一個元素類型被作為一個具有唯一配置
ID
的配置對象管理。所有可用的配置對象都可以用
types
命令列出。命令為:
AdminConfig.types()
同時,也可以用
AdminConfig
的
attributes
命令來列出某一對象的屬性,如:
wsadmin>print AdminConfig.attributes('WorkManagerInfo')
?
一個對象可以包含另一個對象,因此,父子關系在配置中也存在。可以通過
parents
命令來獲得其父對象,如:
wsadmin>AdminConfig.parents('ApplicationServer')
?
getid
命令返回一個配置對象的配置名。配置對象被命名為對象及其配置
ID
的組合。
?
list
命令返回給定類型的一個對象列表。例如,可以將
DataSource
對象列出。如:
wsadmin>AdminConfig.list('DataSource')
?
defaults
命令顯示一個對象的屬性的默認值列表。如:
wsadmin>print AdminConfig.defaults('DynamicCache')
?
配置對象的
input
和
output
屬性
AdminConfig
的
attributes
命令是
wsadmin
在線幫助的一部分。
?
?
使用
AdminConfig
和
AdminControl
需要一些
JMX
框架和
WebSphere XML
配置結構的一些知識。為了執行一系列的腳本管理任務,而又沒有底層架構的知識,
AdminTask
對象將給你一些引導。
AdminTask
對象的命令更像是一個向導,提供一步一步的向導去執行管理操作。同時,也可以交互式的調用,會提示給用戶一些需要的參數,或者是像批次調用一樣,所有的輸入作為調用的一部分。
AdminTask
對象提供很多命令來執行簡單或復雜的管理任務,為了某一特定的任務找到一個命令,這些命令被按照邏輯進行了分組。
用如下命令可以列出所有的分組:
wsadmin>print AdminTask.help('-commandGroups')
會得出所有的分組。然后,可以對其中的某一組命令進行查詢,如:
wsadmin>print AdminTask.help('AdminReports')
可得出如下結果:
WASX8007I:?命令組的詳細幫助:AdminReports
描述:管理配置報告
命令:
reportConfigInconsistencies?
-
?檢查配置庫并報告任何結構不一致性
reportConfiguredPorts?
-
?生成單元中配置的端口的報告
此時,可進一步查詢某一命令的用法,如下:
wsadmin>print AdminTask.help('reportConfiguredPorts')
調用其中某一命令的方法為:
wsadmin>print AdminTask.reportConfiguredPorts()
此命令可得到如下結果:
單元?starNode01Cell?中配置的端口
節點?starNode01?/服務器?server1
????star:
2809
?BOOTSTRAP_ADDRESS
????star:
8880
?SOAP_CONNECTOR_ADDRESS
????star:
9401
?SAS_SSL_SERVERAUTH_LISTENER_ADDRESS
????star:
9403
?CSIV2_SSL_SERVERAUTH_LISTENER_ADDRESS
????star:
9402
?CSIV2_SSL_MUTUALAUTH_LISTENER_ADDRESS
????
*
:
9060
?WC_adminhost
????
*
:
9080
?WC_defaulthost
????
*
:
9353
?DCS_UNICAST_ADDRESS
????
*
:
9043
?WC_adminhost_secure
????
*
:
9443
?WC_defaulthost_secure
????
*
:
5060
?SIP_DEFAULTHOST
????
*
:
5061
?SIP_DEFAULTHOST_SECURE
????
*
:
7276
?SIB_ENDPOINT_ADDRESS
????
*
:
7286
?SIB_ENDPOINT_SECURE_ADDRESS
????
*
:
5558
?SIB_MQ_ENDPOINT_ADDRESS
????
*
:
5578
?SIB_MQ_ENDPOINT_SECURE_ADDRESS
????star:
9100
?ORB_LISTENER_ADDRESS
根據前面所說,我們可以使用交互式的方式來調用,如下:
wsadmin>print AdminTask.reportConfiguredPorts('-interactive')
會出現如下提示:
單元?{0}?中配置的端口
生成單元中配置的端口的報告
節點名?(node):
此時,我們輸入節點名,如:starNode01
單元?{0}?中配置的端口
F(完成)
C(取消)
選擇?[F,?C]:[F]
再輸入F或直接回車,表示參數輸入完成,即可得到starNode01所有的端口報表,由于我的實驗環境中只有一個節點,所以結果跟上面的命令相同。
posted on 2008-09-18 21:04
Robin's Programming World 閱讀(9384)
評論(4) 編輯 收藏 所屬分類:
Java 、
讀書 、
Webshere