2
@ManagedResource
@Component
public class MyBean {
   Map<String, Something> map = new HashMap<String, Something>();

   @ManagedAttribute
   public Collection<Something> getFoo() {
       return map.values();
   }
}

属性付きの foo は、visualvm mbeans タブで「使用不可」として表示されます。なんで?

4

3 に答える 3

1

SomethingJDK (文字列など) の一部である場合に機能します。

がカスタム クラスの場合Something、VisualVM はそれを認識しません。したがって、「利用できません」。

operationsタブに移動して をクリックすると、詳細情報を表示できますgetFoo()

試したことはありませんが、VisualVM のクラス パスに次のように追加できると思います。

jvisualvm -cp:a /path/to/Something/top/level/package

(または瓶)。

その後、うまくいくかもしれません。ただし、その場合でも、Something(およびそのフィールド) は である必要がありますSerializable

于 2012-12-13T09:29:50.393 に答える
0

Beanに@MXBeanの注釈を付けてから、CompositeData[]を返し、CompositeDataSupportのインスタンスを作成しました。

于 2012-12-13T14:07:21.133 に答える