How do I determine if an application is running using wsadmin Jython script?

19,320

Solution 1

I dont think there is any direct method to get the application running status, You can get the object from the AdminControl using the following code

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

If serverstatus returns null, then the application is not running, if the application is running then the details of the applications would be printed.

Solution 2

Here is what I use based on Snehan's answer.

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()

Sample output

============================
 Status |    Application
============================
Running | DefaultApplication
Running | IBMUTC
Stopped | some-ear
Running | another-ear
============================

Solution 3

The following IBM documentation should help:

To summarize, if the application is running on an application server, an Application MBean will be registered. In order to determine if the application is running, you can query for the presence of these MBeans.

Solution 4

There is some more modification required in Matthieu, Cormier's script.

Here we go.

It will work in any line separator. Generally AdminApp.list() will use "\" as the line seperator

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()
Share:
19,320
blank
Author by

blank

...

Updated on July 28, 2022

Comments

  • blank
    blank almost 2 years

    I can get a list of instlled applications but how do I get the status using Jython?

  • FilBot3
    FilBot3 over 8 years
    So, my web console says the application is in a partial start, but when I use wsadmin scripting, it returns all the AppServers that its installed on, not actually showing a NULL, or blank return. Should that be happening?
  • FilBot3
    FilBot3 over 8 years
    Can you add in other arguments like server=WPS00 or anything like that?
  • FilBot3
    FilBot3 over 8 years
    Answered my own question. You include in the search string process=WPS00 and it'll look at specific AppServers.
  • Zachary Loughridge
    Zachary Loughridge over 7 years
    How do I run this file? I am getting error NameError: name 'AdminApp' is not defined