remm        2005/07/26 05:45:22

  Modified:    catalina/src/share/org/apache/catalina/valves ValveBase.java
                        ErrorReportValve.java mbeans-descriptors.xml
               catalina build.xml
               webapps/docs changelog.xml
  Added:       catalina/src/share/org/apache/catalina/valves
                        SemaphoreValve.java
  Log:
  - Add a simple valve for concurrency control, with a conditional compilation
    flag.
  - At the moment, this will not be shipped in the release (needs Java 5).
  - Update changelog.
  
  Revision  Changes    Path
  1.19      +15 -1     
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/ValveBase.java
  
  Index: ValveBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/ValveBase.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- ValveBase.java    2 Mar 2005 20:19:58 -0000       1.18
  +++ ValveBase.java    26 Jul 2005 12:45:22 -0000      1.19
  @@ -178,6 +178,20 @@
       public abstract void invoke(Request request, Response response)
           throws IOException, ServletException;
   
  +
  +    /**
  +     * Return a String rendering of this object.
  +     */
  +    public String toString() {
  +        StringBuffer sb = new StringBuffer(this.getClass().getName());
  +        sb.append("[");
  +        if (container != null)
  +            sb.append(container.getName());
  +        sb.append("]");
  +        return (sb.toString());
  +    }
  +
  +
       // -------------------- JMX and Registration  --------------------
       protected String domain;
       protected ObjectName oname;
  
  
  
  1.26      +1 -14     
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/ErrorReportValve.java
  
  Index: ErrorReportValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/ErrorReportValve.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ErrorReportValve.java     21 Jan 2005 13:11:02 -0000      1.25
  +++ ErrorReportValve.java     26 Jul 2005 12:45:22 -0000      1.26
  @@ -141,19 +141,6 @@
       }
   
   
  -    /**
  -     * Return a String rendering of this object.
  -     */
  -    public String toString() {
  -
  -        StringBuffer sb = new StringBuffer("ErrorReportValve[");
  -        sb.append(container.getName());
  -        sb.append("]");
  -        return (sb.toString());
  -
  -    }
  -
  -
       // ------------------------------------------------------ Protected 
Methods
   
   
  
  
  
  1.10      +25 -0     
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/mbeans-descriptors.xml
  
  Index: mbeans-descriptors.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/mbeans-descriptors.xml,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- mbeans-descriptors.xml    19 Nov 2004 20:06:07 -0000      1.9
  +++ mbeans-descriptors.xml    26 Jul 2005 12:45:22 -0000      1.10
  @@ -234,6 +234,31 @@
                  type="java.lang.String"/>
     </mbean>
   
  +  <mbean name="SemaphoreValve"
  +         description="Valve that does concurrency control"
  +         domain="Catalina"
  +         group="Valve"
  +         type="org.apache.catalina.valves.SemaphoreValve">
  +
  +    <attribute name="className"
  +               description="Fully qualified class name of the managed object"
  +               type="java.lang.String"
  +               writeable="false"/>
  +
  +    <attribute name="containerName"
  +               description="Object name of the container"
  +               type="javax.management.ObjectName"/>
  +
  +    <attribute name="concurrency"
  +               description="Desired concurrency level"
  +               type="int"/>
  +
  +    <attribute name="fairness"
  +               description="Use a fair semaphore"
  +               type="boolean"/>
  +
  +  </mbean>
  +
     <mbean name="RemoteAddrValve"
            description="Concrete implementation of RequestFilterValve that  
filters based on the string representation of the remote client's IP address"
            domain="Catalina"
  
  
  
  1.1                  
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/SemaphoreValve.java
  
  Index: SemaphoreValve.java
  ===================================================================
  /*
   * Copyright 1999-2001,2005 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  
  package org.apache.catalina.valves;
  
  
  import java.io.IOException;
  import java.util.concurrent.Semaphore;
  
  import javax.servlet.ServletException;
  
  import org.apache.catalina.connector.Request;
  import org.apache.catalina.connector.Response;
  
  
  /**
   * <p>Implementation of a Valve that limits concurrency.</p>
   *
   * <p>This Valve may be attached to any Container, depending on the 
granularity
   * of the concurrency control you wish to perform.</p>
   *
   * @author Remy Maucherat
   * @version $Revision: 1.1 $ $Date: 2005/07/26 12:45:22 $
   */
  
  public class SemaphoreValve
      extends ValveBase {
  
  
      // ------------------------------------------------------------ 
Constructor
  
  
      /**
       * Create a new StandardHost component with the default basic Valve.
       */
      public SemaphoreValve() {
          semaphore = new Semaphore(concurrency, fairness);
      }
  
  
      // ----------------------------------------------------- Instance 
Variables
  
  
      /**
       * The descriptive information related to this implementation.
       */
      private static final String info =
          "org.apache.catalina.valves.SemaphoreValve/1.0";
  
  
      /**
       * Semaphore.
       */
      protected Semaphore semaphore = null;
      
  
      // ------------------------------------------------------------- 
Properties
  
      
      /**
       * Concurrency level of the semaphore.
       */
      protected int concurrency = 10;
      public int getConcurrency() { return concurrency; }
      public void setConcurrency(int concurrency) { this.concurrency = 
concurrency; }
      
  
      /**
       * Fairness of the semaphore.
       */
      protected boolean fairness = false;
      public boolean getFairness() { return fairness; }
      public void setFairness(boolean fairness) { this.fairness = fairness; }
      
  
      // --------------------------------------------------------- Public 
Methods
  
  
      /**
       * Return descriptive information about this Valve implementation.
       */
      public String getInfo() {
          return (info);
      }
  
  
      /**
       * Do concurrency control on the request using the semaphore.
       *
       * @param request The servlet request to be processed
       * @param response The servlet response to be created
       *
       * @exception IOException if an input/output error occurs
       * @exception ServletException if a servlet error occurs
       */
      public void invoke(Request request, Response response)
          throws IOException, ServletException {
  
          try {
              semaphore.acquireUninterruptibly();
              // Perform the request
              getNext().invoke(request, response);
          } finally {
              semaphore.release();
          }
  
      }
  
  
  }
  
  
  
  1.83      +7 -0      jakarta-tomcat-catalina/catalina/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/build.xml,v
  retrieving revision 1.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- build.xml 24 Jun 2005 17:18:36 -0000      1.82
  +++ build.xml 26 Jul 2005 12:45:22 -0000      1.83
  @@ -128,6 +128,8 @@
       <available property="jdk.1.3.present" 
        classname="java.lang.reflect.Proxy" />
       <available property="jdk.1.4.present" classname="java.nio.Buffer" />
  +    <available property="jdk.1.5.present" 
  +     classname="java.util.concurrent.Semaphore" />
   
       <!-- Ant flags -->
       <available property="style.available"
  @@ -618,6 +620,7 @@
         <exclude name="org/apache/naming/factory/MailSessionFactory.java"/>
         <exclude name="org/apache/naming/factory/SendMailFactory.java"/>
         <exclude name="org/apache/catalina/launcher/**"/>
  +      <exclude name="org/apache/catalina/valves/SemaphoreValve.java"/>
       </javac>
       <tstamp>
           <format property="TODAY" pattern="MMM d yyyy" locale="en"/>
  @@ -659,6 +662,8 @@
          unless="compile.javamail"/>
         <exclude name="org/apache/catalina/valves/CertificatesValve.java"
          unless="compile.jsse"/>
  +      <exclude name="org/apache/catalina/valves/SemaphoreValve.java" 
  +       unless="jdk.1.5.present"/>
       </javac>
   
       <!-- Copy static resource files -->
  @@ -976,6 +981,7 @@
           <exclude name="org/apache/catalina/valves/Remote*" />
           <exclude name="org/apache/catalina/valves/RequestDumperValve.class" 
/>
           <exclude name="org/apache/catalina/valves/RequestFilterValve.class" 
/>
  +        <exclude name="org/apache/catalina/valves/SemaphoreValve.class" />
   
         </fileset>
       </jar>
  @@ -1010,6 +1016,7 @@
           <include name="org/apache/catalina/valves/Remote*" />
           <include name="org/apache/catalina/valves/RequestDumperValve.class" 
/>
           <include name="org/apache/catalina/valves/RequestFilterValve.class" 
/>
  +        <include name="org/apache/catalina/valves/SemaphoreValve.class" />
   
           <!-- Javadoc and i18n exclusions -->
           <exclude name="**/package.html" />
  
  
  
  1.338     +45 -0     jakarta-tomcat-catalina/webapps/docs/changelog.xml
  
  Index: changelog.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/changelog.xml,v
  retrieving revision 1.337
  retrieving revision 1.338
  diff -u -r1.337 -r1.338
  --- changelog.xml     22 Jul 2005 21:25:44 -0000      1.337
  +++ changelog.xml     26 Jul 2005 12:45:22 -0000      1.338
  @@ -26,6 +26,51 @@
     </p>
   </section>
   
  +<section name="Tomcat 5.5.11 (yoavs)">
  +  <subsection name="General">
  +    <changelog>
  +      <update>
  +        Update to Xerces 1.7.0 (remm)
  +      </update>
  +    </changelog>
  +  </subsection>
  +  
  +  <subsection name="Catalina">
  +    <changelog>
  +      <add>
  +        Add concurrency control valve (o.a.c.valves.SemaphoreValve). As the 
Tomcat distribution 
  +        is not built for Java 5, the valve will have to be compiled from the 
sources 
  +        using Java 5 (remm)
  +      </add>
  +    </changelog>
  +  </subsection>
  +  
  +   <subsection name="Coyote">
  +     <changelog>
  +      <fix>
  +        Fix default ports for http and https which are set in the request 
when the parsed
  +        hostname does not specify the port, and which were inverted (https 
was set as 80 
  +        and http as 443). (remm)
  +      </fix>
  +     </changelog>
  +  </subsection>
  +
  +  <subsection name="Jasper">
  +    <changelog>
  +    </changelog>
  +  </subsection>
  +  
  +  <subsection name="Cluster">
  +    <changelog>        
  +     </changelog>
  +  </subsection>
  +  
  +  <subsection name="Webapps">
  +    <changelog>
  +    </changelog>
  +  </subsection>
  + </section>
  +
   <section name="Tomcat 5.5.10 (yoavs)">
     <subsection name="General">
       <changelog>
  
  
  

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

Reply via email to