自動化フレームワークを開発していますが、wsadmin
ツールの奇妙な動作を経験しました。この問題は、WAS 6.1、7.0、および8.0で再現可能です(8.5で試したことはありません)。
これがwsadminのバグかどうか疑問に思っています(おそらくWAS 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
出力は少し紛らわしいです:
Handled wsadmin exception
Raising another exception
WASX7017E: Exception received while running file "ex.py"; exception information: com.ibm.websphere.management.exception.InvalidConfigDataTypeException
com.ibm.websphere.management.exception.InvalidConfigDataTypeException: ADMG0007E: The configuration data type NonExistentType is not valid.
本当に興味深いのは、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例外をスロー/処理しない場合、出力は期待どおりになります。
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
ですか?
予想される動作ですか?