1

MXBean を JMX に発行しようとしていますが、プログラムを開始して Bean を発行すると、次のスタックが表示されます。

Caused by: java.io.InvalidObjectException: Do not know how to make a javax.management.openmbean.CompositeType from a CompositeData: no method from(CompositeData); no constructor has @ConstructorProperties annotation; does not have a public no-arg constructor; not an interface
        at com.sun.jmx.mbeanserver.OpenConverter.invalidObjectException(OpenConverter.java:1403)
        at com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter.makeCompositeBuilder(OpenConverter.java:891)
        at com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter.checkReconstructible(OpenConverter.java:897)
        at com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderCheckGetters.applicable(OpenConverter.java:1034)
        at com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter.makeCompositeBuilder(OpenConverter.java:868)
        ... 48 more

MXBeans はドキュメントjava.lang.Stringに従って OpenMbean タイプのみを使用することになっていますが、私のクラスはandのみを使用しjavax.management.openmbean.CompositeDataているため、なぜ失敗するのかわかりません。インターフェイスは次のとおりです。

import javax.management.MXBean;
import javax.management.openmbean.CompositeData;

@MXBean
public interface JmxAdministrationApi {

    String synchronize(CompositeData clientInfo);

}

CompositeDataパラメータを追加するまで(つまり、パラメータなしで) Bean が正しくパブリッシュされていたことに注意してください。その後、このエラーが発生しました。

これについての助けをいただければ幸いです。

前もって感謝します、

ロブ

編集:また、Spring JMXを使用しています

4

1 に答える 1

2

CompositeDataドキュメントがそうであるように聞こえても、直接使用するべきではありません。は、独自のデータ型をインスタンスMXBeanに変換し、自動的に元に戻します。CompositeData

ドキュメントで提供されているサンプルを見て、アノテーションを使用@ConstructorPropertiesしてデータ型を複合データや MXBean とうまく連携させる方法を確認してください。

-JB-

于 2013-08-15T09:56:42.910 に答える