2013-05-25 3 views
0

Может ли кто-нибудь помочь мне разобраться с проблемой?JMX MXBean proxy InvalidObjectException

my 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 
~> 

ответ

0

Из документации

Концепция MXBean обеспечивает простой способ кодировать MBean, который только ссылки предопределенный набор типов, которые определены javax.management .openmbean. Таким образом, вы можете быть уверены, что ваш MBean будет использоваться любым клиентом, включая удаленные клиенты, без любого требования, чтобы клиент имел доступ к классам модели , представляющим типы ваших MBeans.

Очевидно, что com.acme.Acme и com.acme.AcmeObject пользовательские типы и они не определяют преобразование в/из opendata типов. См. OpenData type mapping rules для получения дополнительной информации.

Смежные вопросы