本Blog所有内容不得随意转载,版权属于作者所有。如需转载请与作者联系( [email protected] )。
未经许可的转载,本人保留一切法律权益。
一直以来,发现有某些人完全不尊重我的劳动成果,随意转载,提醒一下那些人小心哪天惹上官司。
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 对象的脚本:
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
会得到如下形式的内容:
你可以通过关键字来缩小查找范围,如:
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')
可得出如下结果:
描述:管理配置报告
命令:
reportConfigInconsistencies - 检查配置库并报告任何结构不一致性
reportConfiguredPorts - 生成单元中配置的端口的报告
此时,可进一步查询某一命令的用法,如下:
wsadmin>print AdminTask.help('reportConfiguredPorts')
调用其中某一命令的方法为:
wsadmin>print AdminTask.reportConfiguredPorts()
此命令可得到如下结果:
节点 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')
会出现如下提示:
生成单元中配置的端口的报告
节点名 (node):
此时,我们输入节点名,如:starNode01
F(完成)
C(取消)
选择 [F, C]:[F]
再输入F或直接回车,表示参数输入完成,即可得到starNode01所有的端口报表,由于我的实验环境中只有一个节点,所以结果跟上面的命令相同。