Warum könnten diese inneren Klassen werden eines nicht konformen MBean?

Es scheint, dass die Tatsache, dass meine Klasse ist eine innere Klasse, die das Problem verursachen, das ist meine Vermutung - aber im Grunde ist es ansonsten das übliche Muster:

public class UserProvisionerProfiler implements UserProvisionerProfilerMBean {

    @Override
    public int getTotalNumberOfUsers() {
        return activeClients.size();
    }
}

Und die Schnittstelle (eingebettet in eine größere Klasse):

public interface UserProvisionerProfilerMBean {

public int getTotalNumberOfUsers();

}

Registriert in den code:

    UserProvisionerProfiler userProvisionerProfiler = new UserProvisionerProfiler();

    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    ObjectName name = new ObjectName(userProvisionerProfiler.getClass().getPackage().getName() + ":type=" + userProvisionerProfiler.getClass().getName());

    mbs.registerMBean(userProvisionerProfiler, name);

Und der Fehler:

   1356 [1;31mERROR[39m [main],            UserProvisioner  ; Unhandled exception caught in     main()
javax.management.NotCompliantMBeanException: MBean class UserProvisioner$UserProvisionerProfiler does not implement DynamicMBean, and neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class UserProvisioner$UserProvisionerProfiler is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: UserProvisioner$UserProvisionerProfiler: Class UserProvisioner$UserProvisionerProfiler is not a JMX compliant MXBean)
at com.sun.jmx.mbeanserver.Introspector.checkCompliance(Introspector.java:171)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:317)
at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:512)
UserProvisioner.registerThisAsMBean(UserProvisioner.java:734)
UserProvisioner.start(UserProvisioner.java:797)
UserProvisioner.main(UserProvisioner.java:844)

Ich habe wenig Erfolg bei der Suche nach einer strengeren definition von a-konformen MBean kurzen Lesen der JMX-Spezifikation oder-code, so Frage ich mich, ob ich retten können, die innere Klasse ist oder wenn ich um die beiden zu trennen, oder wenn es etwas anderes fehlt mir.

  • Ist Ihre innere Klasse statisch? Wenn es nicht ist, die innere Klasse kann nicht erstellt werden, ohne eine Instanz der äußeren Klasse. Das könnte darstellen, non-compliance.
InformationsquelleAutor djechlin | 2012-09-10
Schreibe einen Kommentar