1

こんにちは、アプリケーションが部分的に実行されているかどうかを知る必要があります。次のコマンドを使用して、アプリケーションが実行されているかどうかの情報を取得できます。

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

アプリケーションの現在のステータスが部分的に実行されているかどうかを確認する他の方法はありますか??

よろしく スネハン・ソロモン

4

2 に答える 2

2

アプリケーションが部分的に開始または停止されているかどうかを正確に判別するには、最初にアプリケーションがデプロイされるデプロイメント ターゲットを判別し、次にアプリケーションがそのサーバーで実行されているかどうかを判別する必要があります。

def isApplicationRunning(applicationName, serverName, nodeName) :
    return AdminControl.completeObjectName("type=Application,name=%s,process=%s,node=%s,*" % (applicationName, serverName, nodeName)) != ""

def printApplicationStatus(applicationName) :

    servers = started = 0
    targets = AdminApplication.getAppDeploymentTarget(applicationName)
    for target in targets :
        type = AdminConfig.getObjectType(target)
        if (type == "ClusteredTarget") :
            clusterName = AdminConfig.showAttribute(target, "name")
            members = AdminUtilities.convertToList(AdminConfig.getid("/ServerCluster:%s/ClusterMember:/" % clusterName))
            for member in members :
                serverName = AdminConfig.showAttribute(target, "name")
                nodeName = AdminConfig.showAttribute(member, "nodeName")
                started += isApplicationRunning(applicationName, serverName, nodeName)
                servers += 1
        elif (type == "ServerTarget") :
            serverName = AdminConfig.showAttribute(target, "name")
            nodeName = AdminConfig.showAttribute(target, "nodeName")
            started += isApplicationRunning(applicationName, serverName, nodeName)
            servers += 1

    if (started == 0) :
        print "The application [%s] is NOT RUNNING." % applicationName
    elif (started != servers) :
        print "The application [%s] is PARTIALLY RUNNING." % applicationName
    else :
        print "The application [%s] is RUNNING." % applicationName

if (__name__ == "__main__"):
    printApplicationStatus(sys.argv[0]);

AdminApplicationスクリプト ライブラリは WAS 7+ 用にのみ存在するため、古いバージョンを実行している場合は、展開ターゲットを自分で取得する必要があることに注意してください。

于 2011-11-21T22:12:55.623 に答える
1

ノード数に基づいて、アプリケーションの部分的なステータスを取得することができました。ノードの数をハードコーディングしてから、返されたMBeanの数と比較しました。

import sys
appName = sys.argv[0]
appCount=0
nodeCount=2
appMBeans = AdminControl.queryNames('type=Application,name='+appName+',*').split("\n")
for mbean in appMBeans:
if mbean != "":
    appCount=appCount+1
print "Count of Applications is %s" %(appCount)
if appCount == 0:
    print "----!!!ALERT!!!!---- The Application "+appName+" is Not Running"
elif appCount > 0 and appCount < nodeCount:
    print "----!!!ALERT!!!!---- The Application "+appName+" is Partially Running"
elif appCount == nodeCount:
    print "The Application "+appName+" is Running"
于 2011-10-28T18:49:34.863 に答える