You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2003/10/25 00:41:56 UTC

cvs commit: incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/service GeronimoMBean.java

dain        2003/10/24 15:41:56

  Modified:    modules/kernel/src/java/org/apache/geronimo/kernel/service
                        GeronimoMBean.java
  Log:
  Moved initialization code to postRegister, so we are not initializing
  if the registrtion process fails.
  Put doStop call in postDeregister in a try catch block to assure all
  targets are notified of a stop.  Exceptions are simply logged and ignored.
  
  Revision  Changes    Path
  1.2       +24 -5     incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/service/GeronimoMBean.java
  
  Index: GeronimoMBean.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/service/GeronimoMBean.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- GeronimoMBean.java	8 Sep 2003 04:38:35 -0000	1.1
  +++ GeronimoMBean.java	24 Oct 2003 22:41:56 -0000	1.2
  @@ -108,6 +108,17 @@
               throw new DeploymentException("No MBean info set for Geronimo MBean");
           }
   
  +        context = new GeronimoMBeanContext(server, this, name);
  +        return this.objectName;
  +    }
  +
  +    public void postRegister(Boolean registrationDone) {
  +        super.postRegister(registrationDone);
  +        if(!registrationDone.booleanValue()) {
  +            context = null;
  +            return;
  +        }
  +
           ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
           try {
               Thread.currentThread().setContextClassLoader(classLoader);
  @@ -125,25 +136,33 @@
                   operationInfoMap.put(new MethodKey(operationInfo.getName(), operationInfo.getParameterTypes()), operationInfo);
               }
   
  -            context = new GeronimoMBeanContext(server, this, name);
               for (Iterator i = mbeanInfo.targets.values().iterator(); i.hasNext();) {
                   Object target = i.next();
                   if (target instanceof GeronimoMBeanTarget) {
  -                    ((GeronimoMBeanTarget) target).setMBeanContext(context);
  +                    try {
  +                        ((GeronimoMBeanTarget) target).setMBeanContext(context);
  +                    } catch (RuntimeException e) {
  +                        log.warn("Ignoring RuntimeException from setMBeanContext(context): objectName" + context.getObjectName(), e);
  +                    }
                   }
               }
           } finally {
               Thread.currentThread().setContextClassLoader(oldClassLoader);
           }
  -        return this.objectName;
       }
   
       public void postDeregister() {
           super.postDeregister();
  +        ObjectName objectName = context.getObjectName();
  +        context = null;
           for (Iterator i = mbeanInfo.targets.values().iterator(); i.hasNext();) {
               Object target = i.next();
               if (target instanceof GeronimoMBeanTarget) {
  -                ((GeronimoMBeanTarget) target).setMBeanContext(null);
  +                try {
  +                    ((GeronimoMBeanTarget) target).setMBeanContext(null);
  +                } catch (RuntimeException e) {
  +                    log.warn("Ignoring RuntimeException from setMBeanContext(null): objectName" + objectName, e);
  +                }
               }
           }
       }