0
春JMXためにThreadLocalで設定値IがgetManValue()を複数回呼び出す場合、結果はになり、setManValueの値を設定した後矛盾
@ManagedResource(objectName = "MAN-TEST:name=SetValue", description = "Set Value for JMX")
@Component
public class ValueSetJMX {
private static ThreadLocal<String> jmxValue = new ThreadLocal<String>();
@ManagedAttribute
public void setManValue(String valueJMX) {
jmxValue.set(valueJMX)
}
@ManagedAttribute
public String getManValue() {
return jmxValue.get();
}
}
動作
時にはヌルです。
この
getManValue()はすべてのJMX操作で使用されます(アスペクトを使用したグローバル値)2人のユーザーがこれらのBeanを操作して2つの異なる値を設定すると、問題が発生します。 –
JMX操作は個別です。ユーザーコードを追加することなく(そして入力データに基づいて状態にアクセスすることなく)呼び出し間に状態を格納することはできません。 'ThreadLocal'はそれをカットしません。 –