我们可以在JMX bean中使用静态方法吗?

时间:2015-09-03 04:12:49

标签: java jmx jconsole

我的Web应用程序中有Constants类。

我想使用Constants来监控Jconsole课程。

@ManagedResource使用了Constants类的注释,@ManagedAttribute使用了setter方法。

如果我将@ManagedAttribute用于静态方法,那么它将不会显示在Jconsole中,对于非静态方法,它可以正常工作。

您能解释为什么它不能使用静态方法吗?

以下是我的常量课程。

@ManagedResource(
        objectName  = "Sample:name=ActivityQueueUtil",
        description = "Allows modifying all settings."
)
public class ActivityQueueUtil {

    private static volatile ActivityQueueUtil instance;

    public static ActivityQueueUtil getInstance() {
        if (instance == null ) {
            synchronized (Constants.class) {
                if (instance == null) {
                    instance = new ActivityQueueUtil();
                }
            }
        }

        return instance;
    }

    public void initInstance() {
        instance = this;
    }

    private int currentWorkerCount = 0;
    private int currentQueueSize = 0;
    private int currentRetryQueueSize = 0;

    @ManagedAttribute(description = "Current number of worker threads.")
    public static int getCurrentWorkerCount() {
    return currentWorkerCount;
    }

    public void setCurrentWorkerCount(int currentWorkerCount) {
    this.currentWorkerCount = currentWorkerCount;
    }

    @ManagedAttribute(description = "Number of activities in the queue")
    public int getCurrentQueueSize() {
    return currentQueueSize;
    }
}

此处适用于setCurrentWorkerCount,getCurrentQueueSize但不适用于getCurrentWorkerCount

0 个答案:

没有答案