<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.
-->
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<?xml-stylesheet type="text/xsl" href="tomcat-docs.xsl"?>
<document url="changelog.html">

  &project;

  <properties>
    <author email="remm@apache.org">Remy Maucherat</author>
    <author email="fhanik@apache.org">Filip Hanik</author>
    <author email="rjung@apache.org">Rainer Jung</author>
    <author email="kkolinko@apache.org">Konstantin Kolinko</author>
    <author email="pero@apache.org">Peter Rossbach</author>
    <author email="kfujino@apache.org">Keiichi Fujino</author>    
    <title>Changelog</title>
  </properties>

<body>
<!--  Catalina, Coyote, Jasper, Cluster, Web applications, Extras, Other -->
<section name="Tomcat 7.0.1 (markt)">
  <subsection name="Catalina">
    <changelog>
      <fix>
        GSOC 2010. Continue work to align MBean descriptors with reality. Patch
        provided by Chamith Buddhika. (markt)
      </fix>
      <fix>
        When running under a security manager, enforce package access and
        package definition restrictions defined in the catalina.properties file.
        (markt)
      </fix>
      <fix>
        When using a Loader configured with
        <code>searchExternalFirst=&quot;true&quot;</code> failure to find the
        class in an external repository should not prevent searching of the
        local repositories. (markt) 
      </fix>
      <add>
        Add entryPoint support to the CSRF prevention filter. (markt)
      </add>
      <fix>
        <bug>48297</bug>: Correctly initialise handler chain for web services
        resources. (markt)
      </fix>
      <add>
        <bug>48960</bug>: Add a new option to the SSI Servlet and SSI Filter to
        allow the disabling of the <code>exec</code> command. This is now
        disabled by default. Based on a patch by Yair Lenga. (markt)
      </add>
      <add>
        <bug>48998</bug>, <bug>49617</bug>: Add the ExpiresFilter, a port of the
        httpd mod_expires module. Patch provided by Cyrille Le Clerc. (markt)
      </add>
      <fix>
        <bug>49030</bug>: When initializing/starting/stopping connectors and
        one of them fails, do not ignore the others. (markt/kkolinko)
      </fix>
      <fix>
        <bug>49128</bug>: Don't swallow exceptions unnecessarily in
        <code>WebappClassLoader.start()</code>. (markt)
      </fix>
      <fix>
        <bug>49182</bug>: Align comments in setclasspath.[sh|bat] with
        behaviour. Based on a patch provided by sebb. (markt)
      </fix>
      <fix>
        <bug>49230</bug>: Enhance JRE leak prevention listener with protection
        for the keep-alive thread started by
        <code>sun.net.www.http.HttpClient</code>. Based on a patch provided by
        Rob Kooper. (markt)
      </fix>
      <fix>
        <bug>49414</bug>: When reporting threads that may have triggered a
        memory leak on web application stop, attempt to differentiate between
        request processing threads and threads started by the application.
        (markt)
      </fix>
      <fix>
        <bug>49428</bug>: Add a work-around for the known namespace issues for
        some Microsoft WebDAV clients. Patch provided by Panagiotis Astithas.
        (markt)
      </fix>
      <add>
        Add support for <code>*.jar</code> pattern in VirtualWebappLoader.
        (kkolinko)
      </add>
      <add>
        Use a LockOutRealm in the default configuration to prevent attempts to
        guess user passwords by brute-force. (markt)
      </add>
      <add>
        <bug>49478</bug>: Add support for user specified character sets to the
        <code>AddDefaultCharsetFilter</code>. Based on a patch by Felix
        Schumacher. (markt)
      </add>
      <fix>
        <bug>49503</bug>: Make sure connectors bind to their associated ports
        sufficiently early to allow jsvc and the
        org.apache.catalina.startup.EXIT_ON_INIT_FAILURE system property to
        operate correctly. (markt)
      </fix>
      <fix>
        <bug>49525</bug>: Ensure cookies for the ROOT context have a path of /
        rather than an empty string. (markt)
      </fix>
      <fix>
        <bug>49528</bug>, <bug>49567</bug>: Ensure that
        <code>AsyncContext.isAsyncStarted()</code> returns the correct value
        after <code>AsyncContext.start()</code> and that if
        <code>AsyncContext.complete()</code> is called on a separate thread that
        it is handled correctly. (markt)
      </fix>
      <fix>
        <bug>49530</bug>: Contexts and Servlets not stopped when Tomcat is shut
        down. (markt)
      </fix>
      <fix>
        <bug>49536</bug>: If no ROOT context is deployed, ensure a 404 rather
        than a 200 is returned for requests that don't map to any other context.
        (markt)
      </fix>
      <add>
        Additional debug logging in StandardContext to provide information on
        Manager selection. (markt)
      </add>
      <fix>
        <bug>49550</bug>: Supress deprecation warning where deprecated code is
        required to be used. No functional change. Patch provided by Sebb.
        (markt)
      </fix>
      <fix>
        <bug>49551</bug>: Allow default context.xml location to be specified
        using an absolute path. (markt)
      </fix>
      <add>
        Improve logging of unhandled exceptions in servlets by including the
        path of the context where the error occurred. (markt)
      </add>
      <add>
        Include session ID in error message logged when trying to set an
        attribute on an invalid session. (markt)
      </add>
      <fix>
        Improve the CSRF protection filter by using SecureRandom rather than
        Random to generate nonces. Also make the implementation class used user
        configurable. (markt)
      </fix>
      <fix>
        Avoid NullPointerException, when copyXML=true and META-INF/context.xml 
        does not exist. (kfujino)
      </fix>
      <fix>
        <bug>49598</bug>: When session is changed and the session cookie is
        replaced, ensure that the new Set-Cookie header overwrites the old
        Set-Cookie header. (markt) 
      </fix>
      <fix>
        Create a thread to trigger asynchronous timeouts when using the BIO
        connector, change the default timeout to 10s (was infinite) and make the 
        default timeout configurable using the <code>asyncTimeout</code>
        attribute on the connector. (pero/markt)
      </fix>
      <fix>
        <bug>49600</bug>: Make exceptions returned by the
        <code>ProxyDirContext</code> consistent for resources that weren't found
        by checking the <code>DirContext</code> or the cache. Test case based on
        a patch provided by Marc Guillemot. (markt)
      </fix>
      <fix>
        <bug>49613</bug>: Improve performance when using SSL for applications
        that make multiple class to <code>Request.getAttributeNames()</code>.
        Patch provided by Sampo Savolainen. (markt)
      </fix>
      <fix>
        Handle the edge cases where resources packaged in JARs have names that
        start with a single quote character or a double quote character. (markt)
      </fix>
      <fix>
        Correct copy and paste typo in web.xml parsing rules that mixed up
        <code>local-ejb-ref</code> and <code>resource-env-ref</code>. (markt)
      </fix>
      <update>
        Refactor session managers to remove unused code and to reduce code
        duplication. Also, all session managers used for session replication now
        extend <code>org.apache.catalina.ha.session.ClusterManagerBase</code>.
        (markt)
      </update>
    </changelog>
  </subsection>
  <subsection name="Jasper">
    <changelog>
      <update>
        Remove references to Jikes since it does not support Java 6. (markt)
      </update>
      <fix>
        Correct over zealous type checking for EL in attributes that broke the
        use of JSF converters. (markt)
      </fix>
      <fix>
        Correct algorithm used to identify correct method to use when a
        MethodExpressions is used in EL. (markt)
      </fix>
      <fix>
        <bug>49217</bug>: Ensure that identifiers used in EL meet the
        requirements of the Java Language Specification. (markt)
      </fix>
      <add>
        Improve logging of JSP exceptions by including JSP snippet (if enabled)
        rather than just the root cause in the host log. (markt)
      </add>
      <fix>
        <bug>49555</bug>: Correctly handled Tag Libraries where functions are
        defined in static inner classes. (markt)
      </fix>
    </changelog>
  </subsection>
  <subsection name="Cluster">
    <changelog>
      <fix>
        <bug>49127</bug>: Don't swallow exceptions unnecessarily in
        <code>SimpleTcpReplicationManager.startInternal()</code>. (markt)
      </fix>
      <fix>
        <bug>49407</bug>: Change the BackupManager so it is consistent with
        DeltaManager and reports both primary and backup sessions when active
        sessions are requested. (markt)
      </fix>
      <fix>
        <bug>49445</bug>: When session ID is changed after authentication,
        ensure the DeltaManager replicates the change in ID to the other nodes
        in the cluster. (kfujino)
      </fix>
    </changelog>
  </subsection>
  <subsection name="Web applications">
    <changelog>
      <fix>
        <bug>49112</bug>: Update the ROOT web application's index page. Patch
        provided by pid. (markt)
      </fix>
      <fix>
        <bug>49213</bug>: Add the permissions necessary to enable the Manager
        application to operate currently when running with a security manager.
        (markt)
      </fix>
      <fix>
        <bug>49436</bug>: Correct documented default for readonly attribute of
        the UserDatabase component. (markt)
      </fix>
      <fix>
        <bug>49475</bug>: Use new role name for manager application access on
        the ROOT web application's index page. (markt)
      </fix>
      <fix>
        <bug>49476</bug>: CSRF protection was preventing access to the session
        expiration features. Also switch the manager application to the generic
        CSRF protection filter. (markt)
      </fix>
      <fix>
        Better handle failure to create directories required for new hosts in
        the Host Manager application. (markt)
      </fix>
      <fix>
        Switch the Host Manager application to the generic CSRF protection for
        the HTML interface and prevent started hosts from being started and
        stopped hosts from being stopped. (markt)
      </fix>
      <fix>
        <bug>49518</bug>: Fix typo in extras documentation. (markt)
      </fix>
      <fix>
        <bug>49522</bug>: Fix regression due to change of name for MBeans for
        naming resources that broke the complete server status page in the
        manager application. Note these MBeans now have a new name. (markt)
      </fix>
      <fix>
        <bug>49570</bug>: When using the example compression filter, set the
        Vary header on compressed responses. (markt)
      </fix>
      <add>
        Add redirects for the root of the manager and host-manager web
        applications that redirect users to the html interface rather than
        returning a 404. (markt)
      </add>
      <add>
        Provide the HTML Manager application with the ability to differentiate
        between primary, backup and proxy sessions. Note that proxy sessions are
        only shown if enabled in web.xml. (markt) 
      </add>
    </changelog>
  </subsection>
  <subsection name="Other">
    <changelog>
      <fix>
        <bug>49130</bug>: Better describe the core package in the Windows
        installer, making it clear that the service will be installed. Patch
        provided by sebb. (markt)
      </fix>
      <add>
        Re-factor unit tests to enable them to be run once with each of the HTTP
        connector implementations (BIO, NIO and APR/native). (markt)
      </add>
      <add>
        <bug>49268</bug>: Add the necessary plumbing to include CheckStyle in
        the build process. Start with no checks. Additional checks will be
        added as they are agreed. (markt)
      </add>
      <update>
        Updated to Ant 1.8.1. The build now requires a minimum of Ant 1.8.x.
        (markt)
      </update>
      <update>
        Update the re-packaged version of commons-fileupload from 1.2.1 to
        1.2.2. The layout of re-packaged version was also restored to the
        original commons-fileupload layout to make merging of future updates
        easier. (markt)
      </update>
      <update>
        Update the re-packaged version of Jakarta BCEL from trunk revision
        880760 to trunk revision 978831. (markt)
      </update>
    </changelog>
  </subsection>
</section>
<section name="Tomcat 7.0.0 (markt)" rtext="beta, 2010-06-29">
  <subsection name="Catalina">
    <changelog>
      <update>
        Update Servlet support to the Servlet 3.0 specification. (all)
      </update>
      <update>
        Improve and document VirtualWebappLoader. (rjung)
      </update>
      <add>
        <bug>43642</bug>: Add prestartminSpareThreads attribute for Executor.
        (jfclere)
      </add>
      <update>
        Switch from AnnotationProcessor to InstanceManager. Patch provided by
        David Jecks with modifications by Remy. (remm/fhanik)
      </update>
      <update>
        <rev>620845</rev> and <rev>669119</rev>. Make shutdown address
        configurable. (jfclere)
      </update>
      <fix>
        <rev>651977</rev> Add some missing control checks to
        <code>ThreadWithAttributes</code>. (markt) 
      </fix>
      <add>
        <rev>677640</rev> Add a startup class that does not require any
        configuration files. (costin)
      </add>
      <fix>
        <rev>700532</rev> Log if temporary file operations within the CGI
        servlet fail. Make sure header Reader is closed on failure. (markt)
      </fix>
      <fix>
        <rev>708541</rev> Delete references to DefaultContext which was removed
        in 6.0.x. (markt)
      </fix>
      <add>
        <rev>709018</rev> Initial implementation of an asynchronous file handler
        for JULI. (fhanik)
      </add>
      <fix>
        Give session thisAccessedTime and lastAccessedTime clear semantics.
        (rjung)
      </fix>
      <add>
        Expose thisAccessedTime via Session interface. (rjung)
      </add>
      <add>
        Provide a log format for JULI that provides the same information as the
        default but on a single line. (markt)
      </add>
      <add>
        <rev>723889</rev> Provide the ability to configure the Executor job
        queue size and a timeout for adding jobs to the queue. (fhanik) 
      </add>
      <add>
        Add support for aliases to StandardContext. This allows content from
        other directories and/or WAR files to be mapped to paths within the
        context. (markt)
      </add>
      <update>
        Provide clearer definition of Lifecycle interface, particularly start
        and stop, and align components that implement Lifecycle with this
        definition. (markt)  
      </update>
      <add>
        <bug>48662</bug>: Provide a new option to control the copying of context
        XML descriptors from web applications to the host's xmlBase. Copying of
        XMl descriptors is now disabled by default. (markt)
      </add>
      <fix>
        Move comet classes from the org.apache.catalina package to the
        org.apache.catalina.comet package to allow comet to work under a
        security manager. (markt)
      </fix>
    </changelog>
  </subsection>
  <subsection name="Coyote">
    <changelog>
      <update>
        Port SSLInsecureRenegotiation from mod_ssl. This requires
        to use tomcat-native 1.2.21 that have option to detect this
        support from OpenSSL library. (mturk)
      </update>
      <update>
        Allow bigger AJP packets also for request bodies and responses
        using the packetSize attribute of the Connector. (rjung)
      </update>
      <update><rev>703017</rev> Make Java socket options consistent between NIO
        and JIO connector. Expose all the socket options available on
        <code>java.net.Socket</code> (fhanik)
      </update>
      <fix>
        <bug>46051</bug>: The writer returned by <code>getWriter()</code> now
        conforms to the <code>PrintWriter</code> specification and uses platform
        dependent line endings rather than always using <code>\r\n</code>.
        (markt)
      </fix>
      <update>
        Use tc-native 1.2.x which is based on APR 1.3.3+ (mturk)
      </update>
      <update>
        <rev>724239</rev> NIO connector now always uses an Executor. (fhanik)
      </update>
      <update>
        <rev>724393</rev> Implement keepAliveCount for NIO connector in a thread
        safe manner. (fhanik)
      </update>
      <update>
        <rev>724849</rev> Implement keep alive timeout for NIO connector.
        (fhanik)
      </update>
    </changelog>
  </subsection>
  <subsection name="Jasper">
    <changelog>
      <update>
        Update JSP support to the JSP 2.2 specification. (markt)
      </update>
      <update>
        Update EL support to the EL 2.2 specification. (markt)
      </update>
      <update>
        <rev>787978</rev> Use "1.6" as the default value for compilerSourceVM
        and compilerTargetVM options of Jasper. (kkolinko)
      </update>
      <add>
        <bug>48358</bug>: Add support for limiting the number of JSPs that are
        loaded at any one time. Based on a patch by Isabel Drost. (markt)
      </add>
      <add>
        <bug>48689</bug>: Access TLD files through a new JarResource interface
        to make extending Jasper simpler, particularly in OSGi environments.
        Patch provided by Jarek Gawor. (markt)
      </add>
    </changelog>
  </subsection>
  <subsection name="High Availability">
    <changelog>
      <add>
        Add support for UDP and secure communication to tribes. (fhanik)
      </add>
      <add>
        Add versioning to the tribes communication protocol to support future
        developments. (fhanik)
      </add>
      <add>
        Add a demo on how to use the payload. (fhanik)
      </add>
      <add>
        Started to add JMX support to the cluster implementation. (markt)
      </add>
      <fix>
        <rev>609778</rev> Minor fixes to the throughput interceptor and the
        NIO receiver. (fhanik)
      </fix>
      <fix>
        <rev>630234</rev> Additional checks for the NIO receiver. (fhanik)
      </fix>
      <update>
        <rev>671650</rev> Improve error message when multicast is not enabled.
        (fhanik)
      </update>
    </changelog>
  </subsection>
  <subsection name="Web applications">
     <changelog>
      <update>
        <rev>631321</rev> Update changelog to support the &lt;rev&gt; element
        in the documentation. (fhanik)
      </update>
      <add>
        A number of additional roles were added to the Manager and Host Manager
        applications to separate out permissions for the HTML interface, the
        text interface and the JMX proxy. (markt) 
      </add>
      <add>
        CSRF protection was added to the Manager and Host Manager applications.
        (markt)
      </add>
      <add>
        List array elements in the JMX proxy output of the Manager application.
        (rjung)
      </add>
    </changelog>
  </subsection>
  <subsection name="Extras">
    <changelog>
      <add>
        A new JmxRemoteLifecycleListener that can be used to fix the ports used
        for remote JMX connections, eg when using JConsole. (markt)
      </add>
    </changelog>
  </subsection>
  <subsection name="Other">
    <changelog>
      <fix>
        Numerous code clean-up changes including the use of generics and
        removing unused imports, fields, parameters and methods. (markt)
      </fix>
      <fix>
        All deprecated internal code has been removed. <b>Warning:</b> If you
        have custom components for a previous Tomcat version that extend
        internal Tomcat classes and override deprecated methods it is highly
        likely that they will no longer work. (markt)
      </fix>
      <update>
        Parameterize version number throughout build scripts and source. (rjung)
      </update>
    </changelog>
  </subsection>
</section>
</body>
</document>
