我正在开发一个自动化框架,我经历过wsadmin
工具的奇怪行为。这个问题在was6.1、7.0和8.0中是可重复的(我还没有尝试过was8.5)。在
我想知道这是否是wsadmin中的一个bug(很奇怪,还没有人注意到它,可能是从5岁开始!)。。。在
示例脚本可以在任何WAS环境中安全地执行,而不会造成任何损害。在
try:
# this line throws WAS exception
AdminConfig.list('NonExistentType')
except:
# exception is being handled
print 'Handled wsadmin exception'
print 'Raising another exception'
# eventually the script throws a non-WAS exception
x = 1/0
如果我理解正确,上面的脚本在零除法上失败。但是wsadmin
输出有点混乱:
真正有趣的是,Jacl似乎也有同样的问题:
if [catch { puts [$AdminConfig list NonExistentType] } result] {
puts "Handled wsadmin exception"
}
puts "Raising another exception"
set x [expr 1 / 0]
wsadmin
也不打印终止脚本的实际异常的任何信息:
Handled wsadmin exception
Raising another exception
WASX7017E: Exception received while running file "ex.jacl"; exception information: com.ibm.websphere.management.exception.InvalidConfigDataTypeException
com.ibm.websphere.management.exception.InvalidConfigDataTypeException: ADMG0007E: The configuration data type NonExistentType is not valid.
在稍微更改两个脚本之后(为了避免抛出WAS异常),两个脚本的输出都是正确的。在
try:
# this line does not throw any exception
AdminConfig.list('Cell')
except:
# exception is being handled
print 'Handled wsadmin exception'
print 'Raising another exception'
# eventually the script throws a non-WAS exception
x = 1/0
如果脚本未引发/处理WAS exception,则输出看起来与预期的一样:
Raising another exception
WASX7017E: Exception received while running file "ex1.py"; exception information: com.ibm.bsf.BSFException: exception from Jython:
Traceback (innermost last):
File "<string>", line 9, in ?
ZeroDivisionError: integer division or modulo
与Jacl相同:
if [catch { puts [$AdminConfig list Cell] } result] {
puts "Handled wsadmin exception"
}
puts "Raising another exception"
set x [expr 1 / 0]
wsadmin
输出以下内容,这也是很值得期待的:
wdrCell(cells/wdrCell|cell.xml#Cell_1)
Raising another exception
WASX7017E: Exception received while running file "ex1.jacl"; exception information: com.ibm.bsf.BSFException: error while eval'ing Jacl expression:
divide by zero
while executing
"expr 1 / 0"
invoked from within
"set x [expr 1 / 0]"
我必须承认一点:我之所以问这个问题是因为我实际上向WebSphere支持人员报告了这个问题。不过,我对他们的答复并不完全满意。Wsadmin/Jython/Jacl/Python/Tcl专家:您对此有何看法?在
我做错什么了吗?在
它是wsadmin
中的错误吗?在
是预期行为吗???在
这个问题将在即将到来的wsas6.1、7.0、8.0和8.5的补丁包中修复。在
ibmsupport有点担心破坏与以前实现的兼容性(这是有争议的,但是有些脚本可能依赖于这个bug),因此需要使用
com.ibm.ws.scripting.exceptionPropagation=thrown
JVM属性显式地启用正确的行为。在我知道有两种方法可以将此属性传递给wsadmin的JVM:
javaOption
环境变量javaoption
选项环境变量方式:
命令行选项方式:
^{pr2}$该修复程序解决了Jython和Jacl的问题。在
官方文件链接:http://www-01.ibm.com/support/docview.wss?uid=swg1PM80400
相关问题 更多 >
编程相关推荐