【问题标题】:How do I determine if an application is running using wsadmin Jython script?如何确定应用程序是否正在使用 wsadmin Jython 脚本运行?
【发布时间】:2012-01-01 10:05:24
【问题描述】:

我可以获得已安装应用程序的列表,但如何使用 Jython 获得状态?

【问题讨论】:

  • 我还将扩展您的问题以查看每个应用程序服务器的应用程序状态。那么我们应该会得到一些更有趣的答案。

标签: websphere jython wsadmin


【解决方案1】:

我认为没有任何直接的方法可以获取应用程序运行状态,您可以使用以下代码从 AdminControl 中获取对象

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

如果serverstatus返回null,那么应用程序没有运行,如果应用程序正在运行,那么将打印应用程序的详细信息。

【讨论】:

  • 您可以添加其他参数,例如server=WPS00 或类似的东西吗?
  • 回答了我自己的问题。您在搜索字符串中包含 process=WPS00,它将查看特定的 AppServer。
【解决方案2】:

这是我根据 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
============================

【讨论】:

  • 所以,我的 Web 控制台说应用程序处于部分启动状态,但是当我使用 wsadmin 脚本时,它会返回其安装的所有 AppServer,实际上并未显示 NULL 或空白返回。这应该发生吗?
  • 如何运行这个文件?我收到错误 NameError: name 'AdminApp' is not defined
【解决方案3】:

以下 IBM 文档应该会有所帮助:

总而言之,如果应用程序在应用程序服务器上运行,则会注册一个Application MBean。为了确定应用程序是否正在运行,您可以查询这些 MBean 是否存在。

【讨论】:

    【解决方案4】:

    Cormier 的脚本 Matthieu 需要进行更多修改。

    我们开始吧。

    它适用于任何行分隔符。一般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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 2014-10-05
      • 2011-05-12
      • 2013-08-31
      • 2010-10-16
      • 2021-01-11
      相关资源
      最近更新 更多