Я могу получить список установленных приложений, но как мне получить статус с помощью Jython?
Как определить, запущено ли приложение с помощью сценария wsadmin Jython?
Ответы (4)
Я не думаю, что есть какой-либо прямой способ получить статус работы приложения. Вы можете получить объект из AdminControl, используя следующий код.
serverstatus = AdminControl.completeObjectName('type=Application,name='your_application_name',*')
print serverstatus
Если serverstatus
возвращает значение null, то приложение не запущено, если приложение запущено, будут напечатаны сведения о приложениях.
server=WPS00
или что-то в этом роде?
- person FilBot3; 12.02.2016
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
============================
Следующая документация IBM должна помочь:
Информационный центр WAS: Запрос состояния приложения с помощью сценариев wsadmin
Техническая заметка IBM: отображение состояния корпоративных приложений с помощью сценария wsadmin
Подводя итог, если приложение работает на сервере приложений, Application
MBean будет зарегистрирован. Чтобы определить, запущено ли приложение, вы можете запросить наличие этих компонентов MBean.
В сценарии Матье, Кормье, требуется еще одна модификация.
Вот так.
Он будет работать в любом разделителе строк. Как правило, 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()