0

誰でも問題を解決するのを手伝ってもらえますか?

com.intel.esg.ecp.cli.Command を JMX に接続し、MXBean com.acme.AcmeManager を見つけて、createObject を呼び出して AcmeObject を作成することを想定しています。

AcmeManager と AcmeObject はどちらも MXBean として設計されており、問題なく公開できました。

スタックは、AcmeObject が MXBean 標準を確認していないこと、または AcmeManager が MXBean 標準を確認していないことを意味しますか? 私は JMX MXBean を初めて使用します。役に立つ資料を教えてもらえますか?

ありがとう

Executing 'createObject' ...
ERROR: Cannot make MXBean proxy for com.acme.AcmeManager: java.io.InvalidObjectException: Do not know how to make a com.acme.Acme from a CompositeData: no method from(CompositeData); no constructor has @ConstructorProperties  
annotation; does not have a public no-arg constructor; contains methods other than getters (getStatus)

java.lang.IllegalArgumentException: Cannot make MXBean proxy for com.acme.AcmeManager: java.io.InvalidObjectException: Do not know how to make a com.acme.AcmeObject from a CompositeData: no method from(CompositeData); no 
constructor has @ConstructorProperties annotation; does not have a public no-arg constructor; contains methods other than getters (getStatus)
        at javax.management.MBeanServerInvocationHandler.findMXBeanProxy(MBeanServerInvocationHandler.java:323)
        at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:247)
        at $Proxy18.createObject(Unknown Source)
        at com.acme.cli.commands.tenant.CreateTenantCommand.implExecute(CreateTenantCommand.java:71)
        at com.intel.esg.ecp.cli.Command.execute(Command.java:64)
        at com.intel.esg.ecp.cli.CLI.execute(CLI.java:332)
        at com.acme.cli.commands.Main.main(Main.java:174)

Caused by: java.io.InvalidObjectException: Do not know how to make a com.acme.AcmeObject from a CompositeData: no method from(CompositeData); no constructor has @ConstructorProperties annotation; does not have a public no-arg   
constructor; contains methods other than getters (getStatus)
        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$CollectionConverter.checkReconstructible(OpenConverter.java:663)
        at com.sun.jmx.mbeanserver.ConvertingMethod.checkCallToOpen(ConvertingMethod.java:94)
        at com.sun.jmx.mbeanserver.MXBeanProxy$Visitor.visitAttribute(MXBeanProxy.java:53)
        at com.sun.jmx.mbeanserver.MXBeanProxy$Visitor.visitAttribute(MXBeanProxy.java:48)
        at com.sun.jmx.mbeanserver.MBeanAnalyzer.visit(MBeanAnalyzer.java:53)
        at com.sun.jmx.mbeanserver.MXBeanProxy.<init>(MXBeanProxy.java:45)
        at javax.management.MBeanServerInvocationHandler.findMXBeanProxy(MBeanServerInvocationHandler.java:319)
        ... 6 more
~>
4

1 に答える 1

0

ドキュメントから

MXBean の概念は、javax.management.openmbean によって定義された型の定義済みセットのみを参照する MBean をコーディングする簡単な方法を提供します。このようにして、クライアントが MBean のタイプを表すモデル固有のクラスにアクセスする必要がなく、リモート クライアントを含むすべてのクライアントが MBean を使用できるようになります。

明らかに、com.acme.Acmecom.acme.AcmeObjectはカスタム型であり、opendata 型との間の変換を定義していません。詳細については、OpenData 型のマッピング規則を参照してください。

于 2013-05-26T15:12:10.217 に答える