wsadmin 脚本编制工具的管理问题
如果启动或使用 wsadmin 工具时有问题,请使用此信息。
- WASX7016E、WASX7017E 或 WASX7209I: Jython 脚本语言错误
- 尝试启动 wsadmin 命令行实用程序时出现“WASX7023E: 创建到主机的“SOAP”连接时发生错误”或类似错误。
- 从 wsadmin 命令返回“com.ibm.bsf.BSFException: 对 Jacl 表达式求值时出错:类 com.ibm.ws.scripting.AdminConfigClient 中没有此方法“<command name>””。
- 从运行的“wsadmin -c ...”命令返回 WASX7022,表明该命令无效。
- com.ibm.ws.scripting.ScriptingException: WASX7025E: 字符串 "" 格式不正确;无法创建 ObjectName。
在 Windows 平台上从 wsadmin 命令返回“输入行太长”错误。
- WASX701E: 当运行文件“scriptName.jacl”时接收到异常;异常信息:com.ibm.bsf.BSFException: 当对 Jacl 表达式求值时发生错误:缺少右方括号
WASX7015E: 运行命令“source c: ...”时出现异常;异常信息:com.ibm.bsf.BSFException: 当对 Jacl 表达式求值时发生错误:未能读取文件“c: ...”
- 在删除出站服务之后,WebSphere 日志中出现意外错误 CWSIV0806E
- 分隔符异常
- 在文件传输服务中启用认证
- 在 V6.0 中,“$AdminConfig list”的输出格式已更改
- 如果使用现有 6.0 概要文件,那么在您应用 V6.0.2 服务之后,不会提示您输入用户标识和密码
- 当运行带有消息目标的 Java 命名和目录接口 (JNDI) 名称的 $AdminApp searchJNDIReferences 命令时,未返回消息目标引用
- AWXJR0006E: 未找到文件 {0}。
WASX7022E: 运行命令“import sys”时出现问题 - 异常信息:com.ibm.bsf.BSFException: 无法装入语言
WASX7017E: 当运行文件“<application stopping script>”时接收到异常;异常信息:javax.management.MBeanException com.ibm.ws.exception.RuntimeWarning: 未启动应用程序 <appname>
如果您无法进入 wsadmin 命令方式,请尝试运行 wsadmin -c “$Help wsadmin”,以获取有关验证您是否正确地输入了命令的帮助。
如果您无法进入 wsadmin 命令方式,请尝试运行 wsadmin -c “\$Help wsadmin”,以获取有关验证您是否正确地输入了命令的帮助。
- 如果您可以获取 wsadmin 命令提示符,那么输入 $Help help 以验证您是否正确使用了特定命令。
- wsadmin 命令是 Jacl(Java 命令语言)的超集,Jacl 又是 Tcl 命令语言的基于 Java 的实现。有关除 wsadmin 命令以外的 Jacl 语法的详细信息,请参阅 Tcl developers' Xchange。有关与 Tcl 的 Java 实现相关的具体详细信息,请参阅 The Tcl/Java Project。
- 浏览 install_dir/profiles/profile_name/logs/wsadmin.traceout 文件以获取线索。
- 记住,每当新的 wsadmin 会话启动时,wsadmin.traceout 都会被刷新(现有日志记录将被删除)。
- 如果 wsadmin 返回的错误似乎不适用于您输入的命令,例如,您接收到 WASX7023E,指出无法创建与主机“myhost”的连接,但您未在命令行中指定“-host myhost”,请检查 wsadmin 使用的属性文件以确定指定了哪些属性。如果您不知道装入了什么属性文件,在 wsadmin.traceout 文件中查找 WASX7326I 消息;对于装入的每个属性文件都存在一个这样的消息。
如果这些步骤都不能修正您的问题,通过查看可用在线支持(提示与技巧、技术说明和修订),检查是否已标识和记录了此问题。如果您发现问题未在此处列出,请联系 IBM 支持机构。
WASX7016E、WASX7017E 或 WASX7209I: Jython 脚本语言错误
在运行此 Jython 脚本时,可能出现以下错误:
Jython 脚本
“profile_root/bin/wsadmin.sh -lang jython -profile profile_name -host host_name -f script_file.py”
错误消息
WASX7209I: 使用 SOAP 连接器连接到节点 node_name 上的进程“server1”;进程类型为:UnManagedProcess
WASX7016E: 读取文件“script_file.py”时接收到异常;
异常信息:sun.io.MalformedInputException
WASX7017E: 运行文件“script_file.py”时接收到异常;
异常信息:com.ibm.bsf.BSFException: 来自 Jython 的异常:Traceback
(innermost last): File "<string>" line 89, in ? NameError: log
- 对文件打开新的文本阅读器。
- 一次读取文件的一个字符。
- 输出无效的字符。
- 当按后面的字符时,如果出现异常,那么就可以知道是哪个字符导致了错误。
- 移除任何无效的字符,然后再次运行脚本
尝试启动 wsadmin 命令行实用程序时发生“WASX7023E: 与主机创建“SOAP”连接时发生错误”或类似错误
缺省情况下,wsadmin 实用程序尝试在启动时连接到应用程序服务器。这是因为某些命令是在运行的应用程序服务器上执行的。此错误表明无法建立连接。
如果您不确定应用程序服务器是否处于运行状态,请从命令提示符输入 startserver servername 将其启动。如果服务器已处于运行状态,您将看到类似于“ADMU3027E: 服务器的一个实例已在运行中”的错误。
如果您不确定应用程序服务器是否处于运行状态,请从命令提示符输入 startserver.sh server short name 将其启动。如果服务器已处于运行状态,您将看到类似于“ADMU3027E: 服务器的一个实例已在运行中”的错误。
如果您运行的是 WebSphere Application Server Network Deployment 配置,那么必须先通过从 install_dir/bin 目录中运行“startManager”或“startManager.sh”来启动 Deployment Manager。然后您可以立即启动 wsadmin 以连接到 Deployment Manager,或启动要连接到的节点和应用程序服务器。
如果您在运行 z/OS 配置,将首先需要通过从 MVS 控制台上的命令提示符发出以下命令来启动 Deployment Manager:
START dmgr_proc_name,JOBNAME=server_short_name, ENV=cell_short_name.node_short_name.server_short_name
注: 必须在一行上输入此命令。出于显示目的,在这里将它分割开了。然后您可以立即启动 wsadmin 以连接到 Deployment Manager,或启动要连接到的节点和应用程序服务器。
- 如果应用程序服务器正在运行,而您仍获得此错误:
- 如果您以远程方式运行(即,您并非处于运行 WebSphere Application Server 的机器上),那么必须使用 wsadmin 命令的 -host hostname 选项将 wsadmin 定向到正确的物理服务器。
- 如果使用了 -host 选项,那么在您尝试启动 wsadmin 的机器上从命令行 ping 服务器,以验证没有连接性问题(如,防火墙)。
- 验证是否使用了正确的端口号来连接到 WebSphere Application Server 进程:
- 启动 wsadmin 工具时,如果未使用 -port 选项来指定端口号,那么 wsadmin 工具将使用 install_dir/profiles/profile_name/properties/wsadmin.properties 文件中指定的缺省端口,此端口由名为 com.ibm.ws.scripting.port 的属性指定,其缺省值为 8879。
wsadmin 进行发送的端口取决于 wsadmin 尝试连接的服务器进程。
对于单个服务器安装,缺省情况下,wsadmin 尝试连接到应用程序服务器进程。要验证端口号:- 在文件 profile_root/config/cells/“cell_name”/nodes/node_name/serverindex.xml 中查找包含属性 serverType=“APPLICATION_SERVER” 的标记。
- 在此标记中,查找具有属性 endPointName=“SOAP_CONNECTOR_ADDRESS” 的条目。
- 在此标记中,查找“port”属性。这是 wsadmin 用于进行发送的端口。
在 WebSphere Application Server Network Deployment 安装中,缺省情况下,从 WebSphere Application Server Network Deployment 安装中的 bin 目录中启动的 wsadmin 将尝试向 Deployment Manager 发送请求。要验证端口号:- 获取安装 Deployment Manager 的节点的主机名。
- 通过使用该主机名,在 profile_root/config/cells/cell_name/nodes/node_name/serverindex.xml 文件中查找包含属性 serverType=“DEPLOYMENT_MANAGER” 的标记。
- 在此标记中,查找具有属性 endPointName=“SOAP_CONNECTOR_ADDRESS” 的条目。
- 在此标记中,查找 “port” 属性。这是 wsadmin 工具用于进行发送的端口。
如果启用了安全性,请验证对脚本客户机进行调用的 TSO 或 telnet 用户标识具有特定的密钥环,其名称是在 ssl.client.props 文件中指定的名称。该密钥环必须正确,才能建立 SSL 连接。该密钥环的缺省名称是 WASKeyring。此密钥环包含管理服务器的认证中心证书。
wsadmin 命令返回“com.ibm.bsf.BSFException: 对 Jacl 表达式进行求值时出错:在类 com.ibm.ws.scripting.AdminConfigClient 中没有 command name 方法”。
此错误通常由拼错的命令名引起。使用 $AdminConfig help 命令获取有关哪些命令可用的信息。注意,命令名是区分大小写的。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
运行 wsadmin -c ... 命令返回了 WASX7022E,指示该命令无效
如果跟在 -c 后的命令看似有效,那么产生该问题的原因可能是由于在 Unix 上使用 wsadmin -c 调用的命令中包含美元符号,导致 shell 尝试进行变量替换。要确认问题是否如此,请检查该命令以确定它是否包含未转义的美元符,例如:wsadmin -c “$AdminApp install ....”。
要更正此问题,使用反斜杠转义此美元符号。例如:wsadmin -c “\$AdminApp install ...”。
![[z/OS]](../images/ngzos.gif)
运行 “wsadmin -c ...” 命令返回了 WASX7022E,指示该命令无效
如果跟在 -c 后的命令看似有效,那么问题可能是由于 shell 尝试进行变量替换引起的。在 UNIX 系统服务上,如果 wsadmin -c 调用的命令带有双引号并包含美元标记,那么可能发生变量替换。要确认问题是否如此,请检查该命令以确定它是否包含未转义的美元符,例如:wsadmin -c “$AdminApp install ....”。
com.ibm.ws.scripting.ScriptingException: WASX7025E: 字符串 “”“” 格式不正确;无法创建 ObjectName
此错误的一个可能的原因是为对象名指定了空字符串。如果您使用一个脚本编制语句来创建对象名,然后在下一个语句(可能是“invoke”或“getAttribute”命令)中使用该名称,但未检查第一个语句是否确实返回了对象名,那么可能会发生此错误。例如(以下样本使用基本 Jacl 命令及 wsadmin Jacl 扩展来创建样本脚本):
#let's misspell "Server"
set serverName [$AdminControl queryNames type=Srever,*]
$AdminControl getAttributes $serverName
要更正此错误,确保要使用的对象名字符串具有值。例如:
set serverName[$AdminControl queryNames node=mynode,type=Server,name=server1,*]
if {$serverName == """"} {puts "queryNames returned empty - check query argument"}
else {$AdminControl getAttributes $serverName}
有关 wsadmin 命令以外的 Jacl 语法的详细信息,请参阅 Tcl 开发者站点 http://www.tcl.tk。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
在 Windows 平台上,wsadmin 命令返回了“输入行过长”错误
此错误表明已超过 Windows 命令行 2048 个字符的限制,这可能是由于在 wsadmin.bat 命令中使用了长概要文件路径。当在 Windows 命令提示符中运行 wsadmin 或从 .bat 文件、ant 构建文件或 Profile Management Tool 调用 wsadmin 时,可能会发生此错误。如果此错误导致以不同于 Profile Management Tool 的方式运行 wsadmin,那么可使用 Windows subst 命令(使您能将整个路径映射到虚拟驱动器)来避免此问题。要查看 subst 命令的语法,从 Windows 命令提示符输入 help subst。
SET CUR_DIR=%cd%
cd /d "%~dp0.."
SET WAS_HOME=%cd%
cd /d "%CUR_DIR%"
@REM add the following two lines to workaround Windows 2K command line length limit
subst w: %WAS_HOME%
set WAS_HOME=w:
...
...
SET WAS_USER_PROFILE=...
SET USER_INSTALL_ROOT=...
SET WAS_HOME=app_server_root
SET JAVA_HOME=app_server_root\java
@REM add the following three lines to workaround Windows 2K command line length limit
subst w: %WAS_HOME%
set WAS_HOME=w:
set JAVA_HOME=%WAS_HOME%\java
...
...
运行 Profile Management Tool 时,如果发生此错误,那么必须重新运行 Profile Management Tool ,才能提供较短的概要文件路径和较短的概要文件名。如果这无法解决此问题,请按上面的指示信息编辑 WebSphere Application Server 安装的 bin 目录中的 setupCmdLine.bat 文件。编辑此文件之后,重新运行 Profile Management Tool。如果此问题仍存在,请使用较短的安装根目录路径重新安装 WebSphere Application Server。
IBM 技术支持提供的文档能节省您在收集解决问题所需信息上花费的时间。在打开 PMR 前,请参阅 IBM 技术支持页面。
WASX701E: 运行文件“scriptName.jacl”时接收到异常;异常信息:com.ibm.bsf.BSFException: 对 Jacl 表达式进行求值时出错:缺少右方括号
此错误是由于混淆了脚本客户机期望看到的代码页和写 Jacl 脚本所用的代码页引起的。
- 如果脚本是在使用 OEDIT 编辑器的 OMVS 界面中撰写的,那么代码页是 IBM-037。在这种情况下,将此选项设为以下代码页:-Dscript.encoding=Cp037
- 如果脚本是在到使用 VI 编辑器的 OMVS 界面的 telnet 会话中撰写的,那么代码页是 IBM-1047。在这种情况下,将此选项设为以下代码页:-Dscript.encoding=Cp1047
- 如果脚本是在个人计算机或任何其他 ASCII 机器上撰写的,并且作为文本文件传送到主机,那么代码页为 IBM-1047。在这种情况下,请将此选项设置为:-Dscript.encoding=Cp1047
- 如果脚本是在个人计算机或任何其他 ASCII 机器上撰写的,并且以二进制格式传送到主机,那么代码页为 ISO-8859-1 (ASCII)。在这种情况下,您不需要设置此选项,这是因为缺省值为 ASCII。您应该复审此错误其他可能的原因。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
WASX7015E: 运行命令“source c: ...”时出现异常;异常信息:com.ibm.bsf.BSFException: 对 Jacl 表达式求值时发生错误:未能读取文件“c: ...”
此错误是由在运行 wsadmin 命令以在 Windows® 环境中将 Jacl 脚本作为数据源时使用反斜杠 (\) 而不是正斜杠 (/) 导致的。文件路径不能包含反斜杠 (\);例如,
。文件路径必须使用正斜杠 (/) 作为路径分隔符,例如, 。要解决此问题,在使用 wsadmin 命令在 Windows 环境中将 Jacl 脚本作为数据源时,请在文件路径中使用正斜杠 (/):
app_server_root\bin>wsadmin
WASX7209I: Connected to process "dmgr" on node sunCellManager01
using SOAP connector; The type of process is:
DeploymentManager WASX7029I: For help, enter: "$Help help"
wsadmin>source c:/temp/test.jacl
在删除出站服务之后,WebSphere 日志中出现意外错误 CWSIV0806E
对于端点激活,在为消息传递引擎 trueliesNode01.server1-FVTSIBus01 和总线 FVTSIBus01 上的目标 MPOutBoundServicePortDestination 发出异常时,会出现此错误:
com.ibm.websphere.sib.exception.SINotPossibleInCurrentConfigurationException: CWSIP0111E: 正在从消息传递引擎 {1} 中删除名为 MPOutBoundServicePortDestination 的目标。
可以忽略此错误;它是开始。
分隔符异常
必须将正斜杠 (/) 用作路径分隔符。反斜杠 (\) 将不起作用。
在文件传输服务中启用认证
文件传输服务提供了基于角色的认证。提供了两个版本的文件传输 Web 应用程序。缺省情况下,会安装不对调用者进行认证的版本。此缺省行为支持 WebSphere Application Server Network Deployment V5.0 与 V5.0.1 或更高版本之间兼容。建议将文件传输认证打开,以防止未经授权就使用文件传输应用程序的情况发生。但是,如果 WebSphere Application Server Network Deployment 环境中存在任何 V5.0 客户机,那么在开启了全局安全性的情况下,它们无法与受保护的文件传输应用程序通信。
在 WebSphere Application Server V6.x 中,支持混合单元,且文件传输应用程序已成为系统应用程序。如果单元中的所有节点都是 V5.0.1 或更高版本的,那么通过在 Deployment Manager 上重新部署文件传输应用程序,可以在文件传输服务中激活认证。在 ${app_server_root}/systemApps/filetransfer.ear 目录中,提供了兼容的版本。在 ${app_server_root}/systemApps/filetransferSecured.ear 目录中提供了受保护的版本。
提供了一个 wsadmin Jacl 脚本来帮助您重新部署文件传输。该脚本是 redeployFileTransfer.jacl,可以在 ${app_server_root}/bin 目录中找到它。如果 Deployment Manager 和所有节点都是 V5.0.1 或更高版本的,那么可以通过运行该脚本来部署受保护的文件传输服务。用于从 bin 目录中运行该脚本的语法包括以下内容:
wsadmin -profile redeployFileTransfer.jacl -c "fileTransferAuthenticationXxx
cell_name node_name server_name
其中“Xxx”是“On”或“Off”。
wsadmin -profile redeployFileTransfer.jacl -c
"fileTransferAuthenticationOn managedCell managedCellManager dmgr"
或
wsadmin -profile redeployFileTransfer.jacl -c
"fileTransferAuthenticationOn baseCell base server1"
wsadmin -profile redeployFileTransfer.jacl -c
"fileTransferAuthenticationOff managedCell managedCellManager dmgr"
或
wsadmin -profile redeployFileTransfer.jacl -c
“fileTransferAuthenticationOff baseNodeCell baseNode server1”
在 V6.0 中,“$AdminConfig list”的输出格式已更改
如果您使用一个脚本来解析 $AdminConfig 列表(例如,$AdminConfig list Node)的输出,那么可能会发生一些错误,例如“找不到节点”。脚本不应该对 $AdminConfig 的输出进行解析;但是,如果您的脚本执行此解析,那么必须针对 WebSphere Application Server V6.0 更新该脚本,以反映输出格式的更改。
如果使用现有 6.0 概要文件,那么在您应用 V6.0.2 服务之后,不会提示您输入用户标识和密码
如果启用了安全性,那么执行 .bat 文件需要用户标识和密码。在 V6.0.2 中引入了新的功能部件,在命令行中不提供用户标识和密码的情况下,将提示您输入它们。但是,对于在 6.0 级别创建的概要文件,没有提供此功能部件。
在应用 V6.0.2 更新包之后,未对在 V6.0 级别创建的概要文件的属性文件进行更新。
- 在应用 V6.0.2 服务之后,创建新概要文件。此新的概要文件包含所有已更新的属性文件,并且将提示您输入用户标识和密码。
- 如果需要保留现有 V6.0 概要文件并且使用新的提示功能部件,那么必须手动更新三个文件:
- 对于 app_server_root/properties/soap.client.props,请添加下行:
com.ibm.SOAP.loginSource=prompt
- 对于 app_server_root/properties/wsjaas_client.conf,请添加以下几行:
WSAdminClientLogin { com.ibm.ws.security.common.auth.module.proxy.WSLoginModuleProxy required del egate=com.ibm.ws.security.common.auth.module.WSAdminClientLoginModuleImpl; };
- 对于 app_server_root/bin/setupCmdLine.bat,请添加下行:
SET JAASSOAP=-Djava.security.auth.login.config=app_server_root/properties/wsjaas_client.conf
- 对于 app_server_root/properties/soap.client.props,请添加下行:
当使用消息目标的 Java 命名和目录接口 (JNDI) 名运行 $AdminApp searchJNDIReferences 命令时,未返回消息目标引用
当使用消息目标的 JNDI 名称运行命令 $AdmnApp searchJNDIReferences 时,会发生此问题。该命令不能收集应用程序部署描述符中定义的消息目标引用。在两个而不是一个元素上,随消息目标链路一起定义了为应用程序服务器配置的消息目标,这两个元素为:消息驱动的 Bean (MDB) 和消息目标引用。
当前,对于此问题,没有变通方法。$AdmnApp searchJNDIReferences 命令不能为在两个元素上定义的消息目标返回引用。
AWXJR0006E: 未找到文件 {0}。
[12/7/05 17:09:51:266 CST] 0000000a SystemOut O AWXJR0006E 找不到文件
C:\cc_was602\WebSphere\AppServer\profiles\AppSrv01\etc\tam\amwas.t54Node01_.amjacc.properties。[12/7/05 17:09:51:266 CST] 0000000a distSecurityC E SECJ0391E: 当将
Policy 对象设为提供程序策略实现 {0} 时发生错误。The exception is
{1}.
[12/7/05 17:09:51:281 CST] 0000000a distSecurityC E SECJ0324E: Java 2 安全性和动态策略初始化期间发生错误。
wsadmin.bat -user wsadmin -password pw1 -f enableTAM.jacl "*" TAMHostName:7135
“"TAMHostName:7136:1"” "cn=wsadmin,o=ibm,c=us" "o=ibm","c=us sec_master"
sec_master pw1 "9990:9999"
![[AIX HP-UX Solaris]](../images/unix.gif)
WASX7022E: 运行命令“import sys”时发生问题 - 异常信息:com.ibm.bsf.BSFException: 无法装入语言
此问题可能是由尝试使用 Jython 语言时某些 Unix 平台(例如,Linux)上的局限性导致的。
- 检查允许在机器上打开的文件数,例如:ulimit -a
- 检查在机器上设置的打开文件数。缺省值为 1024。
- 将它更改为更大的数字,例如:ulimit -n 2048
- 再次尝试将 wsadmin 工具与 Jython 语言配合使用。
![[z/OS]](../images/ngzos.gif)
WASX7017E: 运行“<application stopping script>”文件时接收到异常
WASX7017E: 运行文件“<application stopping script>”时接收到异常;异常信息:javax.management.MBeanException com.ibm.ws.exception.RuntimeWarning: 未启动应用程序 <appname>
在使用脚本时,如果停止已经停止的应用程序或启动已经运行的应用程序,那么会发出此错误。