amyroh      02/05/01 19:03:16

  Modified:    catalina/src/share/org/apache/catalina/mbeans
                        ConnectorMBean.java MBeanFactory.java
                        StandardServerMBean.java
  Log:
  SSL connector mbean fixes.  Needs an error page in case if a user wants to
  create SSL connector before configuring with keytool.
  
  ResourceParams and other components are now written out to new server.xml
  
  Revision  Changes    Path
  1.4       +16 -15    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/ConnectorMBean.java
  
  Index: ConnectorMBean.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/ConnectorMBean.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ConnectorMBean.java       1 May 2002 00:38:09 -0000       1.3
  +++ ConnectorMBean.java       2 May 2002 02:03:15 -0000       1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/ConnectorMBean.java,v
 1.3 2002/05/01 00:38:09 amyroh Exp $
  - * $Revision: 1.3 $
  - * $Date: 2002/05/01 00:38:09 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/ConnectorMBean.java,v
 1.4 2002/05/02 02:03:15 amyroh Exp $
  + * $Revision: 1.4 $
  + * $Date: 2002/05/02 02:03:15 $
    *
    * ====================================================================
    *
  @@ -76,10 +76,10 @@
    * <code>org.apache.coyote.tomcat4.CoyoteConnector</code> component.</p>
    *
    * @author Amy Roh
  - * @version $Revision: 1.3 $ $Date: 2002/05/01 00:38:09 $
  + * @version $Revision: 1.4 $ $Date: 2002/05/02 02:03:15 $
    */
   
  -public class ConnectorMBean extends BaseModelMBean {
  +public class ConnectorMBean extends ClassNameMBean {
   
   
       // ----------------------------------------------------------- Constructors
  @@ -127,13 +127,14 @@
               if (coyoteServerSocketFactoryCls.isInstance(factory)) {
                   // get clientAuth
                   Method meth2 = 
coyoteServerSocketFactoryCls.getMethod("getClientAuth", null);
  -                clientAuthObj = meth2.invoke(this.resource, null);
  +                clientAuthObj = meth2.invoke(factory, null);
               }
              
           }    
  -        if (clientAuthObj instanceof Boolean)
  +        if (clientAuthObj instanceof Boolean) {
               return ((Boolean)clientAuthObj).booleanValue();
  -        else return false;
  +        } else return false;
  +        
       }
       
       
  @@ -158,7 +159,7 @@
                   Method meth2 = 
coyoteServerSocketFactoryCls.getMethod("setClientAuth", partypes2);
                   Object arglist2[] = new Object[1];
                   arglist2[0] = new Boolean(clientAuth);
  -                meth2.invoke(this.resource, arglist2);
  +                meth2.invoke(factory, arglist2);
               } 
           } 
           
  @@ -183,8 +184,8 @@
               if (coyoteServerSocketFactoryCls.isInstance(factory)) {
                   // get keystoreFile
                   Method meth2 = 
coyoteServerSocketFactoryCls.getMethod("getKeystoreFile", null);
  -                keystoreFileObj = meth2.invoke(this.resource, null);
  -            }
  +                keystoreFileObj = meth2.invoke(factory, null);
  +            } 
           }    
           
           if (keystoreFileObj == null) {
  @@ -221,7 +222,7 @@
                   Method meth2 = 
coyoteServerSocketFactoryCls.getMethod("setKeystoreFile", partypes2);
                   Object arglist2[] = new Object[1];
                   arglist2[0] = keystoreFile;
  -                meth2.invoke(this.resource, arglist2);
  +                meth2.invoke(factory, arglist2);
               }
              
           }    
  @@ -246,7 +247,7 @@
               if (coyoteServerSocketFactoryCls.isInstance(factory)) {
                   // get keystorePass
                   Method meth2 = 
coyoteServerSocketFactoryCls.getMethod("getKeystorePass", null);
  -                keystorePassObj = meth2.invoke(this.resource, null);
  +                keystorePassObj = meth2.invoke(factory, null);
               }
              
           }    
  @@ -255,7 +256,7 @@
               return null;
           } else {
               return keystorePassObj.toString();
  -        }
  +        } 
           
       }
       
  @@ -285,7 +286,7 @@
                   Method meth2 = 
coyoteServerSocketFactoryCls.getMethod("setKeystorePass", partypes2);
                   Object arglist2[] = new Object[1];
                   arglist2[0] = keystorePass;
  -                meth2.invoke(this.resource, arglist2);
  +                meth2.invoke(factory, arglist2);
               }
           }    
       }
  
  
  
  1.29      +32 -10    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java
  
  Index: MBeanFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- MBeanFactory.java 1 May 2002 00:38:09 -0000       1.28
  +++ MBeanFactory.java 2 May 2002 02:03:15 -0000       1.29
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java,v
 1.28 2002/05/01 00:38:09 amyroh Exp $
  - * $Revision: 1.28 $
  - * $Date: 2002/05/01 00:38:09 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java,v
 1.29 2002/05/02 02:03:15 amyroh Exp $
  + * $Revision: 1.29 $
  + * $Date: 2002/05/02 02:03:15 $
    *
    * ====================================================================
    *
  @@ -117,7 +117,7 @@
    * <code>org.apache.catalina.core.StandardServer</code> component.</p>
    *
    * @author Amy Roh
  - * @version $Revision: 1.28 $ $Date: 2002/05/01 00:38:09 $
  + * @version $Revision: 1.29 $ $Date: 2002/05/02 02:03:15 $
    */
   
   public class MBeanFactory extends BaseModelMBean {
  @@ -463,16 +463,38 @@
               Object arglist4[] = new Object[1];
               arglist4[0] = new Boolean(true);
               meth4.invoke(retobj, arglist4);
  +            // Set factory 
  +            Class serverSocketFactoryCls = 
  +                Class.forName("org.apache.catalina.net.ServerSocketFactory");
  +            Class coyoteServerSocketFactoryCls = 
  +                
Class.forName("org.apache.coyote.tomcat4.CoyoteServerSocketFactory");
  +            Constructor factoryConst = 
  +                            coyoteServerSocketFactoryCls.getConstructor(null);
  +            Object factoryObj = factoryConst.newInstance(null);
  +            Class partypes5 [] = new Class[1];
  +            partypes5[0] = serverSocketFactoryCls;
  +            Method meth5 = cls.getMethod("setFactory", partypes5);
  +            Object arglist5[] = new Object[1];
  +            arglist5[0] = factoryObj;
  +            meth5.invoke(retobj, arglist5);
           } catch (Exception e) {
               throw new MBeanException(e);
           }
   
  -        // Add the new instance to its parent component
  -        ObjectName pname = new ObjectName(parent);
  -        Server server = ServerFactory.getServer();
  -        Service service = server.findService(pname.getKeyProperty("name"));
  -        service.addConnector((Connector)retobj);
  -
  +        try {
  +            // Add the new instance to its parent component
  +            ObjectName pname = new ObjectName(parent);
  +            Server server = ServerFactory.getServer();
  +            Service service = server.findService(pname.getKeyProperty("name"));
  +            service.addConnector((Connector)retobj);
  +        } catch (Exception e) {
  +            // FIXME
  +            // disply error message 
  +            // the user needs to use keytool to configure SSL first
  +            // addConnector will fail otherwise
  +            return null;
  +        }
  +        
           // Return the corresponding MBean name
           ManagedBean managed = registry.findManagedBean("CoyoteConnector");
           ObjectName oname =
  
  
  
  1.13      +135 -20   
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/StandardServerMBean.java
  
  Index: StandardServerMBean.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/StandardServerMBean.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- StandardServerMBean.java  30 Apr 2002 17:47:26 -0000      1.12
  +++ StandardServerMBean.java  2 May 2002 02:03:15 -0000       1.13
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/StandardServerMBean.java,v
 1.12 2002/04/30 17:47:26 amyroh Exp $
  - * $Revision: 1.12 $
  - * $Date: 2002/04/30 17:47:26 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/StandardServerMBean.java,v
 1.13 2002/05/02 02:03:15 amyroh Exp $
  + * $Revision: 1.13 $
  + * $Date: 2002/05/02 02:03:15 $
    *
    * ====================================================================
    *
  @@ -70,6 +70,8 @@
   import java.io.FileWriter;
   import java.io.IOException;
   import java.io.PrintWriter;
  +import java.util.Enumeration;
  +import java.util.Hashtable;
   import java.util.Iterator;
   import javax.management.InstanceNotFoundException;
   import javax.management.MBeanAttributeInfo;
  @@ -95,8 +97,10 @@
   import org.apache.catalina.Service;
   import org.apache.catalina.Store;
   import org.apache.catalina.Valve;
  +import org.apache.catalina.deploy.ApplicationParameter;
   import org.apache.catalina.deploy.NamingResources;
   import org.apache.catalina.deploy.ContextResource;
  +import org.apache.catalina.deploy.ContextResourceLink;
   import org.apache.catalina.deploy.ContextEnvironment;
   import org.apache.catalina.deploy.ResourceParams;
   import org.apache.catalina.net.ServerSocketFactory;
  @@ -109,7 +113,7 @@
    * <code>org.apache.catalina.core.StandardServer</code> component.</p>
    *
    * @author Amy Roh
  - * @version $Revision: 1.12 $ $Date: 2002/04/30 17:47:26 $
  + * @version $Revision: 1.13 $ $Date: 2002/05/02 02:03:15 $
    */
   
   public class StandardServerMBean extends BaseModelMBean {
  @@ -547,8 +551,27 @@
               storeManager(writer, indent + 2, manager);
           }
   
  +        // Store neste <Environment> elements
  +        ContextEnvironment[] envs = context.findEnvironments();
  +        for (int i = 0; i < envs.length; i++) {
  +            for (int j = 0; j < indent + 2; j++) {
  +                writer.print(' ');
  +            }
  +            writer.print("<Environment");
  +            storeAttributes(writer, false, envs[i]);
  +            writer.println("/>");
  +        }
  +        
           // Store nested <Parameter> elements
  -        ; // FIXME
  +        ApplicationParameter[] appParams = context.findApplicationParameters();
  +        for (int i = 0; i < appParams.length; i++) {
  +            for (int j = 0; j < indent + 2; j++) {
  +                writer.print(' ');
  +            }
  +            writer.print("<Parameter");
  +            storeAttributes(writer, false, appParams[i]);
  +            writer.println("/>");
  +        }
   
           // Store nested <Realm> element
           Realm realm = context.getRealm();
  @@ -561,12 +584,75 @@
                   storeRealm(writer, indent + 2, realm);
               }
           }
  -
  -        // Store nested <ResourceLink> elements (and resource params?)
  -        ; // FIXME
  -
  +        
           // Store nested <Resources> element
  -        ; // FIXME
  +        ContextResource[] resources = context.findResources();
  +         for (int i = 0; i < resources.length; i++) {
  +            for (int j = 0; j < indent + 2; j++) {
  +                writer.print(' ');
  +            }
  +            writer.print("<Resource");
  +            storeAttributes(writer, false, resources[i]);
  +            writer.println("/>");
  +        }           
  +        
  +        // Store nested <ResourceParams> elements
  +        NamingResources namingResources = context.getNamingResources();
  +        ResourceParams[] params = namingResources.findResourceParams();            
  +        for (int i = 0; i < indent + 2; i++) {
  +            writer.print(' ');
  +        }
  +        if (params.length > 0) {
  +            writer.print("<ResourceParams ");
  +        }
  +        for (int i = 0; i < params.length; i++) {
  +            storeAttributes(writer, false, params[i]);
  +        }
  +        writer.println(">");
  + 
  +        for (int i = 0; i < params.length; i++) {
  +            Hashtable resourceParams = params[i].getParameters();
  +            Enumeration nameEnum = resourceParams.keys();
  +            Enumeration valueEnum = resourceParams.elements();
  +            while ((nameEnum.hasMoreElements()) && (valueEnum.hasMoreElements())) { 
     
  +                for (int j = 0; j < indent + 4; j++) {
  +                    writer.print(' ');
  +                }                
  +                writer.println("<parameter>");
  +                for (int j = 0; j < indent + 6; j++) {
  +                    writer.print(' ');
  +                }               
  +                writer.print("<name>");
  +                writer.print(nameEnum.nextElement());
  +                writer.println("</name>"); 
  +                for (int j = 0; j < indent + 6; j++) {
  +                    writer.print(' ');
  +                }               
  +                writer.print("<value>"); 
  +                writer.print(valueEnum.nextElement());
  +                writer.println("</value>");         
  +                for (int j = 0; j < indent + 4; j++) {
  +                    writer.print(' ');
  +                }               
  +                writer.println("</parameter>");      
  +            }
  +        }
  +        
  +        for (int i = 0; i < indent + 2; i++) {
  +            writer.print(' ');
  +        }          
  +        writer.println("</ResourceParams>");      
  +        
  +        // Store nested <ResourceLink> elements
  +        ContextResourceLink[] resourceLinks = context.findResourceLinks();
  +        for (int i = 0; i < resourceLinks.length; i++) {
  +            for (int j = 0; j < indent + 2; j++) {
  +                writer.print(' ');
  +            }
  +            writer.print("<ResourceLink");
  +            storeAttributes(writer, false, resourceLinks[i]);
  +            writer.println("/>");
  +        }       
   
           // Store nested <Valve> elements
           if (context instanceof Pipeline) {
  @@ -752,14 +838,43 @@
               writer.print(' ');
           }          
           // Store nested <ResourceParams> elements
  -        ResourceParams[] resourceParams = 
globalNamingResources.findResourceParams();
  -        if (resourceParams.length > 0) {
  +        ResourceParams[] params = globalNamingResources.findResourceParams();
  +        if (params.length > 0) {
               writer.print("<ResourceParams ");
           }
  -        for (int i = 0; i < resourceParams.length; i++) {
  -            storeAttributes(writer, false, resourceParams[i]);
  +        for (int i = 0; i < params.length; i++) {
  +            storeAttributes(writer, false, params[i]);
           }
           writer.println(">");
  + 
  +        for (int i = 0; i < params.length; i++) {
  +            Hashtable resourceParams = params[i].getParameters();
  +            Enumeration nameEnum = resourceParams.keys();
  +            Enumeration valueEnum = resourceParams.elements();
  +            while ((nameEnum.hasMoreElements()) && (valueEnum.hasMoreElements())) { 
     
  +                for (int j = 0; j < indent + 4; j++) {
  +                    writer.print(' ');
  +                }                
  +                writer.println("<parameter>");
  +                for (int j = 0; j < indent + 6; j++) {
  +                    writer.print(' ');
  +                }               
  +                writer.print("<name>");
  +                writer.print(nameEnum.nextElement());
  +                writer.println("</name>"); 
  +                for (int j = 0; j < indent + 6; j++) {
  +                    writer.print(' ');
  +                }               
  +                writer.print("<value>"); 
  +                writer.print(valueEnum.nextElement());
  +                writer.println("</value>");         
  +                for (int j = 0; j < indent + 4; j++) {
  +                    writer.print(' ');
  +                }               
  +                writer.println("</parameter>");      
  +            }
  +        }
  +        
           for (int i = 0; i < indent + 2; i++) {
               writer.print(' ');
           }          
  @@ -1012,12 +1127,6 @@
           storeAttributes(writer, server);
           writer.println(">");
   
  -        // Store nested <GlobalNamingResources> element
  -        NamingResources globalNamingResources = server.getGlobalNamingResources();
  -        if (globalNamingResources != null) {
  -            storeGlobalNamingResources(writer, indent + 2, globalNamingResources);
  -        }
  -
           // Store nested <Listener> elements
           if (server instanceof Lifecycle) {
               LifecycleListener listeners[] =
  @@ -1027,6 +1136,12 @@
               }
           }
   
  +        // Store nested <GlobalNamingResources> element
  +        NamingResources globalNamingResources = server.getGlobalNamingResources();
  +        if (globalNamingResources != null) {
  +            storeGlobalNamingResources(writer, indent + 2, globalNamingResources);
  +        }
  +        
           // Store nested <Service> elements
           Service services[] = server.findServices();
           for (int i = 0; i < services.length; i++) {
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to