我可以获取已安装应用程序的列表,但如何使用 Jython 获取状态?
我认为没有任何直接的方法可以获取应用程序的运行状态,您可以使用以下代码从 AdminControl 获取对象
serverstatus = AdminControl.completeObjectName('type=Application,name='your_application_name',*')
print serverstatus
如果
serverstatus
返回 null,则应用程序未运行,如果应用程序正在运行,则将打印应用程序的详细信息。
这是我根据 Snehan 的回答使用的。
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 是否存在。
Matthieu、Cormier 的剧本还需要一些修改。
我们开始吧。
它适用于任何行分隔符。一般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()