0

jmx get タスクを実行する ant スクリプトがあります。

<jmx:get
                name="java.lang:type=GarbageCollector,name=Copy" 
                attribute="LastGcInfo"
                resultproperty="CopyLastGcInfo"
                />

現在、LastGcInfo 属性には、memoryUsageBeforeGC と呼ばれるマップ Map があります。このマップには、「値」というキーを持つペアがあります。私はそれを引き出して印刷することはできませんが。私はそれを次のように達成しようとしました:

    <echo>${CopyLastGcInfo.memoryUsageBeforeGc.value.used}</echo>
    <echo>${CopyLastGcInfo.memoryUsageBeforeGc.0.used}</echo>
    <echo>${CopyLastGcInfo.memoryUsageBeforeGc.used}</echo>

それはうまくいきませんでした。この問題に取り組む方法について何か提案はありますか?

ありがとう。

4

1 に答える 1

1

次の例は私のために働いた:

<project name="Catalina Ant JMX" xmlns:jmx="antlib:org.apache.catalina.ant.jmx" default="jmx">

    <target name="jmx" description="Show JMX stats">
        <jmx:open host="localhost" port="9012" username="controlRole" password="tomcat"/>

        <jmx:get name="java.lang:type=GarbageCollector,name=Copy" 
                 attribute="LastGcInfo"
                 resultproperty="CopyLastGcInfo"
                 echo="false"
                 />

        <echo>
        memoryUsageBeforeGc
        ===================
        Perm Gen.used=${CopyLastGcInfo.memoryUsageBeforeGc.Perm Gen.used}
        Tenured Gen.used=${CopyLastGcInfo.memoryUsageBeforeGc.Tenured Gen.used}
        Eden Space.used=${CopyLastGcInfo.memoryUsageBeforeGc.Eden Space.used}
        Code Cache.used=${CopyLastGcInfo.memoryUsageBeforeGc.Code Cache.used}
        Survivor Space.used=${CopyLastGcInfo.memoryUsageBeforeGc.Survivor Space.used}
        </echo>
    </target>

</project>

出力例

jmx:
     [echo] 
     [echo]         memoryUsageBeforeGc
     [echo]         ===================
     [echo]         Perm Gen.used=9660888
     [echo]         Tenured Gen.used=8393792
     [echo]         Eden Space.used=4456448
     [echo]         Code Cache.used=2038016
     [echo]         Survivor Space.used=172784
     [echo]         

ノート

  • 「jmx:query」タスクの「echo」属性を使用して、タスクによって作成された ANT プロパティと値を確認できます。トラブルシューティングに役立ちます。
于 2012-08-27T20:30:37.890 に答える