Как получить текущее состояние приложения из консоли wsadmin для WebSphere 7.0

близкие,

Как я могу получить текущий статус приложения, развернутого в веб-сфере (например, запущено/остановлено)? Я знаю, что могу использовать AdminControl.completeObjectName('type=Application,name=myApplication,*'), но если я только что запустил start, очень вероятно, что следующая команда ничего не вернет, так как приложение еще не запущено. Точно так же, когда я только что вызвал остановку, я хочу показать, что приложение фактически остановлено, чтобы я ничего не менял, пока приложение все еще работает. Любые идеи, как я могу это сделать? Спасибо.


person RomanB    schedule 28.03.2012    source источник
comment
Разве это не дублирующий вопрос? stackoverflow.com/questions/8185866/   -  person Manglu    schedule 29.03.2012
comment
Нет, это не то же самое. Мне нужен немедленный статус. С этим решением я не могу частично запустить статус.   -  person RomanB    schedule 09.04.2012


Ответы (2)


Вы можете попробовать это сделать. Это немного работы, но это возможно.

  1. Используйте имя приложения, чтобы получить цель развертывания. Поскольку вы упомянули несколько узлов, я предполагаю, что целью развертывания будет кластер.
  2. Используйте кластер, чтобы найти членов кластера, которые будут серверами.
  3. Используйте имена серверов, чтобы проверить состояние каждого отдельного сервера.

Если все серверы этого кластера запущены, то приложение запускается. Если все серверы этого кластера остановлены, приложение останавливается. Если какие-то запущены, а какие-то остановлены, то приложение частично запущено.

Надеюсь, это поможет.

person MD6380    schedule 17.04.2012
comment
Спасибо, это то, что я в итоге сделал! - person RomanB; 28.04.2012

что касается меня, я получаю статус приложения в websphere 6.1 таким образом:

#--------------------------------------------------------------
# get app object name
#--------------------------------------------------------------

appObjectNames = AdminControl.queryNames('type=Application,cell=' + cellName + 
    ',node=' + nodeName + ',process=' + serverName + ',name=' + appName + ',*')

lineSeparator = java.lang.System.getProperty('line.separator')
appObjectName = appObjectNames.split(lineSeparator)[0]
appObjectName = appObjectName.strip()

#--------------------------------------------------------------
# get application status
#--------------------------------------------------------------

if len(appObjectName) == 0:
    tprint(prefix + 'application ' + appName + ' is stopped')
else:        
    tprint(prefix + 'application ' + appName + ' is started')

Думаю, это должно работать и в WebSphere 7.0.

person temp_    schedule 03.04.2012
comment
Он не будет работать в кластерной среде (где у вас есть несколько узлов). Когда я развернулся в dmanager и вызвал startApplicationOnCluster, для запуска приложения на всех узлах требуется некоторое время. Мне нужно убедиться, что приложение работает на всех узлах. - person RomanB; 09.04.2012