costin      2003/03/07 22:51:34

  Modified:    coyote/src/java/org/apache/coyote/tomcat5
                        CoyoteConnector.java
  Log:
  A bit more flexibility in starting ( init/start may end up beeing called twice,
  that shouldn't be treated as a catastrophic event ).
  
  Improved self-registration. My understanding is that we only need an Engine,
  so if no Service exists, just go to the engine.
  
  Revision  Changes    Path
  1.17      +54 -21    
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteConnector.java
  
  Index: CoyoteConnector.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteConnector.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- CoyoteConnector.java      17 Feb 2003 05:07:30 -0000      1.16
  +++ CoyoteConnector.java      8 Mar 2003 06:51:34 -0000       1.17
  @@ -102,7 +102,7 @@
   
   public final class CoyoteConnector
       implements Connector, Lifecycle, MBeanRegistration
  - {
  +{
       private static Log log = LogFactory.getLog(CoyoteConnector.class);
   
   
  @@ -941,7 +941,7 @@
   
        /**
         * Set the URI encoding to be used for the URI.
  -      * 
  +      *
         * @param URIEncoding The new URI character encoding.
         */
        public void setURIEncoding(String URIEncoding) {
  @@ -1062,11 +1062,12 @@
        * Initialize this connector (create ServerSocket here!)
        */
       public void initialize()
  -        throws LifecycleException {
  -
  -        if (initialized)
  -            throw new LifecycleException
  -                (sm.getString("coyoteConnector.alreadyInitialized"));
  +        throws LifecycleException
  +    {
  +        if (initialized) {
  +            log.info(sm.getString("coyoteConnector.alreadyInitialized"));
  +            return;
  +        }
   
           this.initialized = true;
   
  @@ -1162,11 +1163,14 @@
        * @exception LifecycleException if a fatal startup error occurs
        */
       public void start() throws LifecycleException {
  +        if( !initialized )
  +            initialize();
   
           // Validate and update our current state
  -        if (started)
  -            throw new LifecycleException
  -                (sm.getString("coyoteConnector.alreadyStarted"));
  +        if (started) {
  +            log.info(sm.getString("coyoteConnector.alreadyStarted"));
  +            return;
  +        }
           lifecycle.fireLifecycleEvent(START_EVENT, null);
           started = true;
   
  @@ -1177,7 +1181,7 @@
               try {
                   Registry.getRegistry().registerComponent
                       (protocolHandler, this.domain, "protocolHandler",
  -                     "type=protocolHandler,className=" 
  +                     "type=protocolHandler,className="
                        + protocolHandlerClassName);
               } catch (Exception ex) {
                   log.error(sm.getString
  @@ -1197,7 +1201,16 @@
           }
   
           mapperListener.init();
  -
  +        if( this.domain != null ) {
  +            try {
  +                Registry.getRegistry().registerComponent
  +                        (mapper, this.domain, "Mapper",
  +                                "type=Mapper");
  +            } catch (Exception ex) {
  +                log.error(sm.getString
  +                        ("coyoteConnector.protocolRegistrationFailed"), ex);
  +            }
  +        }
       }
   
   
  @@ -1305,15 +1318,35 @@
               log.info( "Already configured" );
               return;
           }
  +        if( container==null ) {
  +            // Register to the service
  +            ObjectName parentName=new ObjectName( domain + ":" +
  +                    "type=Service,name=Tomcat-Standalone");
  +
  +            log.info("Adding to " + parentName );
  +            if( mserver.isRegistered(parentName )) {
  +                mserver.invoke(parentName, "addConnector", new Object[] { this },
  +                        new String[] {"org.apache.catalina.Connector"});
  +                // As a side effect we'll get the container field set
  +                // Also initialize will be called
  +                return;
  +            }
  +            // XXX Go directly to the Engine
  +            // initialize(); - is called by addConnector
  +            ObjectName engName=new ObjectName( domain + ":" +
  +                    "type=Engine,name=Tomcat-Standalone");
  +            if( mserver.isRegistered(parentName )) {
  +                container=(Container)mserver.getAttribute(parentName, 
"managedResource");
  +                log.info("Found engine " + container);
  +                initialize();
  +
  +                log.info("Initialized");
  +                // As a side effect we'll get the container field set
  +                // Also initialize will be called
  +                return;
  +            }
   
  -        // Register to the service
  -        ObjectName parentName=new ObjectName( domain + ":" +
  -                "type=Service,name=Tomcat-Standalone");
  -        log.info("Adding to " + parentName );
  -
  -        mserver.invoke(parentName, "addConnector", new Object[] { this },
  -                new String[] {"org.apache.catalina.Connector"});
  -        // initialize(); - is called by addConnector
  +        }
       }
   
       public void destroy() throws Exception {
  
  
  

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

Reply via email to