Как получить правильное сообщение об ошибке в веб-сфере wsadmin jython?

Мне нужен код, который может обработать исключение и продолжить процесс. но процедура обработки ошибок не может получить правильное сообщение об ошибке:

без обработки исключений:

wsadmin>AdminControl.testConnection (SomeDataSource)

WAS7015E: Exception Running command: "AdminControl.testConnection (SomeDataSource)"
com.ibm.websphere.management.exception.AdminException
javax.management.MBeanException
java.lang.ClassNotFoundException: java.lang.ClassNotFoundException: DSRA8000E: Java archive (JAR) or compressed files do not exist in the path or the required access is not allowed.  Path: /ojdbc6.jar

с обработкой исключений:

wsadmin>try:
wsadmin>  AdminControl.testConnection (SomeDataSource)
wsadmin>except:
wsadmin>  typ,val,tb = sys.exc_info()
wsadmin>  print typ
wsadmin>  print val
wsadmin>  print tb

com.ibm.ws.scripting.ScriptingException
com.ibm.ws.scripting.ScriptingException: com.ibm.websphere.management.exception.AdminException: javax.management.MBeanException: Exception thrown in RequiredModelMBean while trying to invoke operation testConnection
<traceback object at -1765990050>

Другая версия (хотя я считаю, что должен быть более умный способ сделать это)

wsadmin>fname='${Server log folder}\SystemOut.log'
wsadmin>file=open(fname,'r')
wsadmin>junk=file.readlines()
wsadmin>file.seek(-1,1)
wsadmin>try:
wsadmin>  AdminControl.testConnection (SomeDataSource)
wsadmin>except:
wsadmin>  err='yes'
wsadmin>
wsadmin>file.seek(1,1)
wsadmin>if err='yes':
wsadmin>  msg=file.readlines()
wsadmin>  print 'Error: '.join(msg)

Кажется, я наконец-то получил то, что хотел, хотя это действительно уродливо, пропуская всю обработку ошибок, но непосредственно получая содержимое журнала ошибок.

1 ответ

Я не знаю, почему в wsadmin jython это происходит, но вы можете попробовать это:

    try:
     SomeDataSource = "Test"
     AdminControl.testConnection (SomeDataSource)
    except:
     typ,val,tb = sys.exc_info()[1]
     print typ
     print val
     print tb

Есть результаты:

    wsadmin>try:
    wsadmin> SomeDataSource = "Test"
    wsadmin> AdminControl.testConnection (SomeDataSource)
    wsadmin>except:
    wsadmin> typ,val,tb = sys.exc_info()[1]
    wsadmin> print typ
    wsadmin> print val
    wsadmin> print tb
    wsadmin>
    WASX7015E: Exception running command: ""; exception information:
     com.ibm.ws.scripting.ScriptingException: AdminControl service not available

Примечание sys.exc_info ()[1]

С уважением

Другие вопросы по тегам