Как определить, запущено ли приложение с помощью сценария wsadmin Jython?

Я могу получить список установленных приложений, но как мне получить статус с помощью Jython?


person blank    schedule 18.11.2011    source источник
comment
Я бы также расширил ваш вопрос, чтобы узнать, каков статус приложения на сервере приложений. Тогда мы должны получить еще несколько интересных ответов.   -  person FilBot3    schedule 12.02.2016


Ответы (4)


Я не думаю, что есть какой-либо прямой способ получить статус работы приложения. Вы можете получить объект из AdminControl, используя следующий код.

serverstatus = AdminControl.completeObjectName('type=Application,name='your_application_name',*')
print serverstatus

Если serverstatus возвращает значение null, то приложение не запущено, если приложение запущено, будут напечатаны сведения о приложениях.

person Snehan Solomon    schedule 19.11.2011
comment
Можете ли вы добавить другие аргументы, такие как server=WPS00 или что-то в этом роде? - person FilBot3; 12.02.2016
comment
Ответил на мой собственный вопрос. Вы включаете в строку поиска process=WPS00, и он будет искать определенные серверы приложений. - person FilBot3; 12.02.2016

Вот что я использую на основе ответа Снехана.

import string

def getAppStatus(appName):
    # If objectName is blank, then the application is not running.
    objectName = AdminControl.completeObjectName('type=Application,name=' + appName + ',*')
    if objectName == "":
        appStatus = 'Stopped'
    else:
        appStatus = 'Running'
    return appStatus

def appStatusInfo():
    appsString = AdminApp.list()
    appList = string.split(appsString, '\r\n')

    print '============================'
    print ' Status |    Application   '
    print '============================'

    # Print apps and their status
    for x in appList:
        print getAppStatus(x) + ' | ' + x

    print '============================'



appStatusInfo()

Пример вывода

============================
 Status |    Application
============================
Running | DefaultApplication
Running | IBMUTC
Stopped | some-ear
Running | another-ear
============================
person Matthieu Cormier    schedule 08.01.2014
comment
Итак, моя веб-консоль говорит, что приложение находится в частичном запуске, но когда я использую сценарий wsadmin, он возвращает все серверы приложений, на которых он установлен, фактически не показывая NULL или пустой возврат. Это должно происходить? - person FilBot3; 14.01.2016
comment
Как запустить этот файл? Я получаю сообщение об ошибке NameError: имя «AdminApp» не определено - person Zachary Loughridge; 21.03.2017

Следующая документация IBM должна помочь:

Подводя итог, если приложение работает на сервере приложений, Application MBean будет зарегистрирован. Чтобы определить, запущено ли приложение, вы можете запросить наличие этих компонентов MBean.

person shelley    schedule 18.11.2011

В сценарии Матье, Кормье, требуется еще одна модификация.

Вот так.

Он будет работать в любом разделителе строк. Как правило, AdminApp.list() будет использовать "\" в качестве разделителя строк.

import string

def getAppStatus(appName):
    # If objectName is blank, then the application is not running.
    objectName = AdminControl.completeObjectName('type=Application,name='+ appName+',*')
    if objectName == "":
        appStatus = 'Stopped'
    else:
        appStatus = 'Running'
    return appStatus

def appStatusInfo():
    Apps=AdminApp.list().split(java.lang.System.getProperty("line.separator"))

    print '============================'
    print ' Status |    Application   '
    print '============================'

    # Print apps and their status
    for x in Apps:
        print "X value", x
        print getAppStatus(x) + ' | ' + x

    print '============================'



appStatusInfo()
person SaravAK    schedule 26.11.2015