You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bi...@apache.org on 2004/08/04 08:51:13 UTC

cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/mbeans MBeanFactory.java

billbarker    2004/08/03 23:51:13

  Modified:    catalina/src/share/org/apache/catalina/mbeans
                        MBeanFactory.java
  Log:
  Update the admin webapp to use the new Deployer.
  
  Revision  Changes    Path
  1.28      +65 -13    jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java
  
  Index: MBeanFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- MBeanFactory.java	30 Jul 2004 03:01:34 -0000	1.27
  +++ MBeanFactory.java	4 Aug 2004 06:51:13 -0000	1.28
  @@ -19,6 +19,7 @@
   import java.lang.reflect.Constructor;
   import java.lang.reflect.Method;
   import java.util.Vector;
  +import java.io.File;
   
   import javax.management.MBeanException;
   import javax.management.MBeanServer;
  @@ -70,6 +71,9 @@
   
   public class MBeanFactory extends BaseModelMBean {
   
  +    private static org.apache.commons.logging.Log log = 
  +        org.apache.commons.logging.LogFactory.getLog(MBeanFactory.class);
  +
       /**
        * The <code>MBeanServer</code> for this application.
        */
  @@ -632,6 +636,19 @@
               createStandardContext(parent,path,docBase,false,false,false,false);                                  
       }
   
  +    /**
  +     * Given a context path, get the config file name.
  +     */
  +    private String getConfigFile(String path) {
  +        String basename = null;
  +        if (path.equals("")) {
  +            basename = "ROOT";
  +        } else {
  +            basename = path.substring(1).replace('/', '#');
  +        }
  +        return (basename);
  +    }
  +
      /**
        * Create a new StandardContext.
        *
  @@ -665,14 +682,36 @@
   
           // Add the new instance to its parent component
           ObjectName pname = new ObjectName(parent);
  -        Service service = getService(pname);
  -        Engine engine = (Engine) service.getContainer();
  -        Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
  -        host.addChild(context);
  +        ObjectName deployer = new ObjectName(pname.getDomain()+
  +                                             ":type=Deployer,host="+
  +                                             pname.getKeyProperty("host"));
  +        if(mserver.isRegistered(deployer)) {
  +            String contextPath = context.getPath();
  +            mserver.invoke(deployer, "addServiced",
  +                           new Object [] {contextPath},
  +                           new String [] {"java.lang.String"});
  +            String configPath = (String)mserver.getAttribute(deployer,
  +                                                             "configBaseName");
  +            String baseName = getConfigFile(contextPath);
  +            File configFile = new File(new File(configPath), baseName+".xml");
  +            context.setConfigFile(configFile.getAbsolutePath());
  +            mserver.invoke(deployer, "manageApp",
  +                           new Object[] {context},
  +                           new String[] {"org.apache.catalina.Context"});
  +            mserver.invoke(deployer, "removeServiced",
  +                           new Object [] {contextPath},
  +                           new String [] {"java.lang.String"});
  +        } else {
  +            log.warn("Deployer not found for "+pname.getKeyProperty("host"));
  +            Service service = getService(pname);
  +            Engine engine = (Engine) service.getContainer();
  +            Host host = (Host) engine.findChild(pname.getKeyProperty("host"));
  +            host.addChild(context);
  +        }
   
           // Return the corresponding MBean name
           ObjectName oname = context.getJmxName();
  -    //            MBeanUtils.createObjectName(pname.getDomain(), context);
  +
           return (oname.toString());
   
       }
  @@ -942,20 +981,33 @@
           ObjectName oname = new ObjectName(contextName);
           String domain = oname.getDomain();
           StandardService service = (StandardService) getService(oname);
  -        if (!service.getObjectName().getDomain().equals(domain)) {
  -            throw new Exception("Service with the domain is not found");
  -        }        
  +
           Engine engine = (Engine) service.getContainer();
           String name = oname.getKeyProperty("name");
           name = name.substring(2);
           int i = name.indexOf("/");
           String hostName = name.substring(0,i);
           String path = name.substring(i);
  -        Host host = (Host) engine.findChild(hostName);
  +        ObjectName deployer = new ObjectName(domain+":type=Deployer,host="+
  +                                             hostName);
           String pathStr = getPathStr(path);
  -        Context context = (Context) host.findChild(pathStr);
  -        // Remove this component from its parent component
  -        host.removeChild(context);
  +        if(mserver.isRegistered(deployer)) {
  +            mserver.invoke(deployer,"addServiced",
  +                           new Object[]{pathStr},
  +                           new String[] {"java.lang.String"});
  +            mserver.invoke(deployer,"unmanageApp",
  +                           new Object[] {pathStr},
  +                           new String[] {"java.lang.String"});
  +            mserver.invoke(deployer,"removeServiced",
  +                           new Object[] {pathStr},
  +                           new String[] {"java.lang.String"});
  +        } else {
  +            log.warn("Deployer not found for "+hostName);
  +            Host host = (Host) engine.findChild(hostName);
  +            Context context = (Context) host.findChild(pathStr);
  +            // Remove this component from its parent component
  +            host.removeChild(context);
  +        }
   
       }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org