- - PR -
カスタムMXBean
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-22 14:52
Java SE 6よりMXBeanのカスタム開発が可能になりましたが、どなたかこれが意味するところを、もう少し詳しく解説していただけないでしょうか?
つまり、Java SE 5.0からMBeanがサポートされていましたが、「(普通の)MBeanではできなくて、MXBeanならできること」がいまいちよく分からないのです。 | ||||||||
|
投稿日時: 2007-01-22 16:42
調べて書いているのでないので、正しくないかも知れませんが、
MXBeanはMBeanをほかのプロセスやマシンから呼び出すためのインタフェースだと思っています。 端的にはjconsole操作で呼び出せるかどうかということでしょうか。 | ||||||||
|
投稿日時: 2007-01-22 21:45
・アノテーションによってPOJOをMXBeanとすることができる
・複合型を簡単に扱うことが出来る というところでしょうか。 特に複合型を扱うときにはMBeanでは苦労しますが、 MXBeanでは特に意識する必要がないみたいですね。 JDK5.0ではjavax.management.openmbean.CompositeTypeを使う必要があります。 ちなみに複合型とは
のような型です。 他にも色々特徴・新機能があると思うのですが、 私の理解はこの辺までなので、識者の方よろしくお願いします。 | ||||||||
|
投稿日時: 2007-01-23 10:31
もう少し自分の疑問を整理してみました。
MXBean=プラットフォームMBeanは、JVMを監視・管理するためのMBeanです。つまりMXBeanは、MBeanのサブクラスなわけですね(概念的に)。 で、JVM以外(自分のアプリケーション等)を監視・管理するためには、「普通のMBean」を作ればよいわけです。 ここである用途のために「カスタムMXBean」を作るとき、 - その用途は「JVMを監視・管理する」必要があるのか? (そんなわきゃねー!) - それを「普通のMBean」として作成できない場合はあるのか?
普通のMBeanもプラットフォームMBeanサーバに登録すれば、jconsoleで参照・操作できるようです。
なるほど・・・作り方において違いがあるというわけですね。 機能的・意味的な違いの有無も気になります。 私はこれからJMXをベースとしたサーバソフトウェアを作るのですが、インタフェースはMXBeanにするのがいいのか、ただのMBeanでいいのか・・・。 どうぞよろしくお願いします。 | ||||||||
|
投稿日時: 2007-01-23 11:09
単純なMBeanと概念を間違えてたので、この件についてこれ以上コメントはありません。
ただ、Documentを見るとMBeanをパラメタにしたインタフェースにしたい場合はMXBeanの方が楽だろうなという気がします。 | ||||||||
|
投稿日時: 2007-01-23 11:19
これ読んでちょっと理解できました。
http://java.sun.com/developer/technicalArticles/J2SE/mxbeans/ http://java.sun.com/javase/6/docs/api/javax/management/MXBean.html#MXBean-spec どうやらかつのりさんご指摘の、
が本質に近いようです。 以下、私の理解の概要です。ツッコミがあればお願いします。 MBean(の特にGetterメソッド)がアプリケーション固有のクラスのオブジェクトを返す場合、JMXマネージャ(jconsoleのような)はそのクラスを知らないかもしれない。つまり、そのマネージャのCLASSPATHにそのクラス定義がなければ、ClassNotFoundExceptionが発生し、オブジェクト内部の様子を知ることはできない。 MXBeanではそのようなクラスは全てCompositeDataSupport(implements CompositeData)というクラスに変換され、マネージャはそこから各要素を個別に取り出すことができる。 なので、MXBeanはjconsoleのような対象を限定しない汎用的なマネージャによる監視・管理の用途に向く。 | ||||||||
|
投稿日時: 2007-01-23 11:32
おまけですが、
という定義は http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/management/overview.html#mxbeans からなんですが、Java SE 6からは当てはまらなくなった、と考えるのがよさそうですね。 |
1