1 Reply Latest reply on Sep 25, 2008 9:44 AM by Daniele Stroppa

    NotCompliantMBeanException: Class does not expose a manageme

    Daniele Stroppa Newbie

      Hi All,

      I'm trying to deploy a .sar containing an MBean on JBoss 4.2.3.GA, but I keep on getting the following exception:

      2008-09-24 15:02:38,250 DEBUG [org.jboss.deployment.SARDeployer] create operation failed for package file:/D:/workspace/TestBench/JBossESB/jboss-4.2.3.GA/server/myserver/deploy/my_sar.sar
      org.jboss.deployment.DeploymentException: Class does not expose a management interface: java.lang.Object; - nested throwable: (javax.management.NotCompliantMBeanException: Class does not expose a management interface: java.lang.Object)
       at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:196)
       at org.jboss.system.ServiceController.install(ServiceController.java:226)
       at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source)
       ...
      Caused by: javax.management.NotCompliantMBeanException: Class does not expose a management interface: java.lang.Object
       at org.jboss.mx.metadata.MBeanCapability.of(MBeanCapability.java:102)
       at org.jboss.mx.metadata.MBeanCapability.of(MBeanCapability.java:100)
       at org.jboss.mx.metadata.MBeanCapability.of(MBeanCapability.java:100)
       at org.jboss.mx.metadata.MBeanCapability.of(MBeanCapability.java:100)
       at org.jboss.mx.server.registry.BasicMBeanRegistry.registerMBean(BasicMBeanRegistry.java:182)
       ... 33 more


      This is my jboss-service.xml, that is placed in a META-INF folder inside the sar
      <server>
      
       <mbean code="my.package.ServerInitializationService" name="my.package:service=ServerInitialization"/>
      
      </server>


      And these are the MBean interface and class
      package mypackage.interfaces;
      
      import org.jboss.system.ServiceMBean;
      
      public interface ServerInitializationServiceMBean extends ServiceMBean
      {
       public void init();
      }
      

      package my.package;
      
      import java.util.logging.Logger;
      
      import org.jboss.annotation.ejb.Management;
      import org.jboss.annotation.ejb.Service;
      import org.jboss.system.ServiceMBeanSupport;
      
      import my.package.interfaces.ServerInitializationServiceMBean;
      
      
      @Service(objectName = "my.package:service=ServerInitialization")
      @Management(ServerInitializationServiceMBean.class)
      public class ServerInitializationService extends ServiceMBeanSupport implements ServerInitializationServiceMBean
      {
       private static final String BEAN_NAME = "Server Initialization";
      
       private final Logger LOGGER = Logger.getLogger(ServerInitializationService.class.getName());
      
       public ServerInitializationService()
       {
       super();
       }
      
       public void init()
       {
       ...
       }
      
       public void createService()
       {
       ...
       }
      
       public void destroyService()
       {
       ...
       }
      
       public String getName()
       {
       return BEAN_NAME;
       }
      
       public int getState() {
       // TODO Auto-generated method stub
       return 0;
       }
      
       public String getStateString() {
       // TODO Auto-generated method stub
       return null;
       }
      
       public void jbossInternalLifecycle(String arg0) throws Exception {
       // TODO Auto-generated method stub
      
       }
      
       public void startService() throws Exception
       {
       init();
       }
      
       public void stopService() {
       // TODO Auto-generated method stub
       ...
       }
      }
      


      I've searched the net and the JBoss wiki and doc, but couldn't find anything wrong with the code (see http://wiki.jboss.org/wiki/ExampleHelloWorldService)
      Is there something I'm doing wrong?

      Thanks for your help

      Daniele