You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2002/02/15 10:40:39 UTC

cvs commit: jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service AddServiceAction.java AddServiceForm.java

manveen     02/02/15 01:40:39

  Modified:    webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service
                        AddServiceAction.java AddServiceForm.java
  Log:
  Cleaned up validation code and creation and addition of a new service.
  
  Revision  Changes    Path
  1.2       +111 -55   jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service/AddServiceAction.java
  
  Index: AddServiceAction.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service/AddServiceAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AddServiceAction.java	4 Feb 2002 17:59:19 -0000	1.1
  +++ AddServiceAction.java	15 Feb 2002 09:40:39 -0000	1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service/AddServiceAction.java,v 1.1 2002/02/04 17:59:19 manveen Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/02/04 17:59:19 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service/AddServiceAction.java,v 1.2 2002/02/15 09:40:39 manveen Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/02/15 09:40:39 $
    *
    * ====================================================================
    *
  @@ -63,7 +63,9 @@
   
   import java.util.Iterator;
   import java.io.IOException;
  +import java.util.Locale;
   import javax.servlet.ServletException;
  +import javax.servlet.http.HttpSession;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
   import org.apache.struts.action.Action;
  @@ -75,7 +77,6 @@
   import javax.management.MBeanServer;
   import javax.management.MBeanServerFactory;
   import javax.management.QueryExp;
  -import javax.management.Query;
   import javax.management.ObjectInstance;
   import javax.management.ObjectName;
   import javax.management.JMException;
  @@ -89,12 +90,13 @@
    * add service actions.
    *
    * @author Manveen Kaur
  - * @version $Revision: 1.1 $ $Date: 2002/02/04 17:59:19 $
  + * @version $Revision: 1.2 $ $Date: 2002/02/15 09:40:39 $
    */
   
   public final class AddServiceAction extends Action {
       
       private static MBeanServer mBServer = null;
  +    private static MessageResources resources = null;
       
       // --------------------------------------------------------- Public Methods
       
  @@ -120,80 +122,134 @@
       HttpServletResponse response)
       throws IOException, ServletException {
           
  -        try{
  -            
  -            // front end validation and checking.
  -            // ===================================================
  -            MessageResources messages = getResources();
  -            
  -            // Validate the request parameters specified by the user
  -            ActionErrors errors = new ActionErrors();
  -            
  -            // Report any errors we have discovered back to the original form
  -            if (!errors.empty()) {
  -                saveErrors(request, errors);
  -                return (new ActionForward(mapping.getInput()));
  -            }
  -            
  -            if(mBServer == null) {
  -                ApplicationServlet servlet = (ApplicationServlet)getServlet();
  -                mBServer = servlet.getServer();
  -            }
  +        // Look up the components we will be using as needed
  +        if (mBServer == null) {
  +            mBServer = ((ApplicationServlet) getServlet()).getServer();
  +        }
  +        if (resources == null) {
  +            resources = getServlet().getResources();
  +        }
  +        HttpSession session = request.getSession();
  +        Locale locale = (Locale) session.getAttribute(Action.LOCALE_KEY);
  +        
  +        // Validate the request parameters specified by the user
  +        ActionErrors errors = new ActionErrors();
  +        
  +        // Report any errors we have discovered back to the original form
  +        if (!errors.empty()) {
  +            saveErrors(request, errors);
  +            return (new ActionForward(mapping.getInput()));
  +        }
  +        
  +        String serviceName = request.getParameter("serviceName");
  +        String engineName = request.getParameter("engineName");
  +        String debugLvlText = request.getParameter("debugLvl");
  +        String defaultHost = request.getParameter("defaultHost");
  +        
  +        ObjectInstance mBeanFactory = null;
  +        
  +        // unique mBean name of the new service that is created.
  +        String newService = null;
  +        
  +        // Get hold of the parent server.
  +        ObjectName server = null;
  +        try {
  +            Iterator serverItr =
  +            mBServer.queryMBeans(new ObjectName(TomcatTreeBuilder.SERVER_TYPE +
  +            TomcatTreeBuilder.WILDCARD), null).iterator();
               
  -            String serviceName = request.getParameter("serviceName");
  +            ObjectInstance objInstance = (ObjectInstance)serverItr.next();
  +            server = (objInstance).getObjectName();
               
  -            Iterator serviceItr =
  -            mBServer.queryMBeans(new ObjectName(
  -            TomcatTreeBuilder.ENGINE_TYPE +
  -            ",service=" + serviceName),
  -            null).iterator();
  -            
  -            ObjectName serviceObjName =
  -            ((ObjectInstance)serviceItr.next()).getObjectName();
  -            
  -            String engineName = request.getParameter("engineName");
  -            String debugLvlText = request.getParameter("debugLvl");
  -            String defaultHost = request.getParameter("defaultHost");
  +        } catch (Exception e) {
  +            throw new ServletException("Error getting server mBean", e);
  +        }
  +        
  +        // invoke createStandardService operation on the mBean factory.
  +        try {
  +            mBeanFactory = TomcatTreeBuilder.getMBeanFactory();
  +            ObjectName factory = mBeanFactory.getObjectName();
  +            
  +            Object[] params = new Object[2];
  +            // mBean name of the parent server
  +            params[0] = new String(server.toString());
  +            // name of the new service to be added
  +            params[1] = new String(serviceName);
  +            
  +            String[] types = new String[2];
  +            types[0]= "java.lang.String";
  +            types[1]= "java.lang.String";
  +            
  +            newService = (String)
  +            mBServer.invoke(factory, "createStandardService", params, types);
  +            
  +        } catch (Exception e) {
  +            getServlet().log
  +            (resources.getMessage(locale, "users.error.invoke","createStandardService"), e);
  +            response.sendError
  +            (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
  +            resources.getMessage(locale, "users.error.invoke","createStandardService"));
  +            return (null);
  +        }
  +        
  +        // add the newly created service to the server mBean.
  +        try {
  +            Object[] params = new Object[1];
  +            params[0] = new String(newService);
  +            
  +            String[] type = new String[1];
  +            type[0]= "java.lang.String";
  +            
  +            mBServer.invoke(server, "addService", params, type);
  +            
  +        } catch (Exception e) {
  +            getServlet().log
  +            (resources.getMessage(locale, "users.error.invoke",
  +            "addService"), e);
  +            response.sendError
  +            (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
  +            resources.getMessage(locale, "users.error.invoke",
  +            "addService"));
  +            return (null);
  +        }
  +        
  +        // set the attributes read from the form to this newly created service.
  +        String attribute = null;
  +        try{
  +            ObjectName serviceObjName = new ObjectName(newService);
               
               if (engineName != null) {
  -                
                   mBServer.setAttribute(serviceObjName,
  -                new Attribute(SetUpServiceAction.NAME_PROP_NAME,
  +                new Attribute(attribute=SetUpServiceAction.NAME_PROP_NAME,
                   engineName));
               }
               
               if(debugLvlText != null) {
                   Integer debugLvl = new Integer(debugLvlText);
                   mBServer.setAttribute(serviceObjName,
  -                new Attribute(SetUpServiceAction.DEBUG_PROP_NAME,
  +                new Attribute(attribute=SetUpServiceAction.DEBUG_PROP_NAME,
                   debugLvl));
               }
               
               if(defaultHost != null) {
  -                
  -            /*
  -                if ((" ").equals(defaultHost)) {
  -                 // no default host value set.
  -                // remove this attribute.
  -                 TBD: FIX ME - if needed.
  -                }
  -             */
                   mBServer.setAttribute(serviceObjName,
                   new Attribute(SetUpServiceAction.HOST_PROP_NAME,
                   defaultHost));
  -                
               }
  -            
  -        }catch(Throwable t){
  -            t.printStackTrace(System.out);
  -            //forward to error page
  +        }catch(Exception e){
  +            getServlet().log
  +            (resources.getMessage(locale, "users.error.set.attribute",
  +            attribute), e);
  +            response.sendError
  +            (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
  +            resources.getMessage(locale, "users.error.set.attribute",
  +            attribute));
  +            return (null);
           }
           
           if (servlet.getDebug() >= 1)
               servlet.log(" Forwarding to success page");
  -        // Forward back to the test page
           return (mapping.findForward("Save Successful"));
  -        
       }
       
   }
  
  
  
  1.3       +44 -81    jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service/AddServiceForm.java
  
  Index: AddServiceForm.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service/AddServiceForm.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AddServiceForm.java	8 Feb 2002 01:13:42 -0000	1.2
  +++ AddServiceForm.java	15 Feb 2002 09:40:39 -0000	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service/AddServiceForm.java,v 1.2 2002/02/08 01:13:42 manveen Exp $
  - * $Revision: 1.2 $
  - * $Date: 2002/02/08 01:13:42 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/service/AddServiceForm.java,v 1.3 2002/02/15 09:40:39 manveen Exp $
  + * $Revision: 1.3 $
  + * $Date: 2002/02/15 09:40:39 $
    *
    * ====================================================================
    *
  @@ -59,7 +59,6 @@
    *
    */
   
  -
   package org.apache.webapp.admin.service;
   
   import javax.servlet.http.HttpServletRequest;
  @@ -73,33 +72,18 @@
   import javax.management.MBeanServer;
   import javax.management.ObjectInstance;
   import javax.management.ObjectName;
  -import javax.management.InstanceAlreadyExistsException;
  -import javax.management.modelmbean.ModelMBean;
   
  +import javax.servlet.ServletException;
   import org.apache.webapp.admin.ApplicationServlet;
   import org.apache.webapp.admin.TomcatTreeBuilder;
   
  -import javax.management.MBeanAttributeInfo;
  -import javax.management.MBeanOperationInfo;
  -import javax.management.MBeanInfo;
  -
  -import javax.management.modelmbean.ModelMBean;
  -import javax.management.modelmbean.ModelMBeanInfo;
  -
  -import org.apache.commons.modeler.ManagedBean;
   import org.apache.commons.modeler.Registry;
   
  -import javax.management.RuntimeOperationsException;
  -import javax.management.MBeanException;
  -import java.lang.RuntimeException;
  -
  -//import org.apache.catalina.mbeans.MBeanUtils;
  -
   /**
    * Form bean for the add service page.
    *
    * @author Manveen Kaur
  - * @version $Revision: 1.2 $ $Date: 2002/02/08 01:13:42 $
  + * @version $Revision: 1.3 $ $Date: 2002/02/15 09:40:39 $
    */
   
   public final class AddServiceForm extends ActionForm {
  @@ -265,80 +249,59 @@
           
           ActionErrors errors = new ActionErrors();
           String submit = request.getParameter("submit");
  -        ObjectInstance mBeanFactory = null;
           
           if (submit != null) {
               
               if ((serviceName == null) || (serviceName.length() < 1)) {
                   errors.add("serviceName",
                   new ActionError("error.serviceName.required"));
  -            } else {
  -                
  -                // try to create a new service.
  -                try {
  -                    
  -                    ApplicationServlet servlet = (ApplicationServlet)getServlet();
  -                    mBServer = servlet.getServer();
  -                    
  -                    // Get hold of the parent server.
  -                    Iterator serverItr =
  -                    mBServer.queryMBeans(new ObjectName(TomcatTreeBuilder.SERVER_TYPE +
  -                    TomcatTreeBuilder.WILDCARD), null).iterator();
  -                    
  -                    ObjectInstance objInstance = (ObjectInstance)serverItr.next();
  -                    ObjectName server = (objInstance).getObjectName();
  -                    
  -                    mBeanFactory = TomcatTreeBuilder.getMBeanFactory();
  -                    ObjectName factory = mBeanFactory.getObjectName();
  -                    
  -                    Object[] params = new Object[2];
  -                    // mBean name of the parent server
  -                    params[0] = new String(server.toString());
  -                    // name of the new service to be added
  -                    params[1] = new String(serviceName);
  -                    
  -                    String[] types = new String[2];
  -                    types[0]= "java.lang.String";
  -                    types[1]= "java.lang.String";
  -                    
  -                    // get a unique service name for the new service.
  -                    String newService = (String)
  -                    mBServer.invoke(factory, "createStandardService", params, types);
  -                    
  -                    // add this newly created service to the server mBean.
  -                    Object[] serviceParam = new Object[1];
  -                    serviceParam[0] = new String(newService);
  -                    
  -                    String[] type = new String[1];
  -                    type[0]= "java.lang.String";
  -                    
  -                    // System.out.println("Created Service " + newService);
  -                    mBServer.invoke(server, "addService", serviceParam, type);
  -                    
  -                } catch (RuntimeOperationsException ex) {
  -                    RuntimeException e = ex.getTargetException();
  -                    // print the root exception
  -                    if (e instanceof RuntimeOperationsException){
  -                        ((RuntimeOperationsException)e).getTargetException().printStackTrace();
  -                    } else {
  -                        e.printStackTrace();
  -                    }
  -                } catch (Throwable t) {
  -                    t.printStackTrace();
  -                }
  -                
               }
               
  -            if ((engineName == null) || (engineName.length() < 1))
  +            if ((engineName == null) || (engineName.length() < 1)) {
                   errors.add("engineName",
                   new ActionError("error.engineName.required"));
  +            }
               
  -            if ((defaultHost == null) || (defaultHost.length() < 1))
  +            if ((defaultHost == null) || (defaultHost.length() < 1)) {
                   errors.add("defaultHost",
                   new ActionError("error.defaultHost.required"));
  +            }
  +            
  +            Iterator serviceItr  = null;           
  +            // service name must be unique.
  +            try {
  +                
  +                ApplicationServlet servlet = (ApplicationServlet)getServlet();
  +                mBServer = servlet.getServer();
  +                
  +                serviceItr =
  +                mBServer.queryMBeans(new ObjectName(
  +                TomcatTreeBuilder.SERVICE_TYPE + TomcatTreeBuilder.WILDCARD),
  +                null).iterator();
  +                
  +            } catch (Exception e) {
  +               getServlet().log("Error getting service mBean", e);
  +            }
  +            
  +            try {
  +                // check if a service with this name already exists
  +                while(serviceItr.hasNext()){
  +                    ObjectInstance service = (ObjectInstance)serviceItr.next();
  +                    
  +                    String name =
  +                    (String)mBServer.getAttribute(service.getObjectName(),"name");
  +                    
  +                    // error service name already exists
  +                    if (name.equalsIgnoreCase(serviceName)) {
  +                        errors.add("serviceName",
  +                        new ActionError("error.serviceName.exists"));
  +                    }
  +                }
  +            } catch (Exception e) {
  +               getServlet().log("Error getting attribute name", e);
  +            }
           }
  -        
           return errors;
       }
  -    
   }
  +
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>