我的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