<?xml version="1.0" encoding="UTF-8"?>
<!--
  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>
    <title>Changelog</title>
    <no-comments />
  </properties>

<body>
<!--
  Subsection ordering:
  General, Catalina, Coyote, Jasper, Cluster, Web applications, Extras, Tribes,
  Other

  Item Ordering:

  Fixes having an issue number are sorted by their number, ascending.

  There is no ordering by add/update/fix.

  Other fixed issues are added to the end of the list, chronologically.
  They eventually become mixed with the numbered issues. (I.e., numbered
  issues to not "pop up" wrt. others).

  Until the first Tomcat 8.0.0 release, only changes not back-ported to 7.0.x
  should be listed here.
-->
<section name="Tomcat 8.0.0">
  <subsection name="Catalina">
    <changelog>
      <add>
        Implement JSR 356 - WebSockets. The JSR 356 implementation includes
        contributions from Nick Williams and Rossen Stoyanchev. (markt)
      </add>
      <add>
        <bug>45995</bug>: Align Tomcat with Apache httpd and perform MIME type
        mapping based on file extension in a case insensitive manner. (markt)
      </add>
      <scode>
        Remove duplicate code that converted a Host&apos;s appBase attribute to
        a canonical file. (markt)
      </scode>
      <scode>
        <bug>51408</bug>: Replace calls to <code>Charset.defaultCharset()</code>
        with an explicit reference to the ISO-8859-1 Charset. (markt)
      </scode>
      <scode>
        Refactor initialization code to use a single, consistent approach to
        determining the Catalina home (binary) and base (instance) directories.
        The search order for home is <code>catalina.home</code> system property,
        parent of current directory if boootstrap.jar is present and finally
        current working directory. The search order for Catalina base is
        <code>catalina.base</code> system property falling back to the value for
        Catalina home. (markt)
      </scode>
      <fix>
        <bug>52767</bug>: Remove reference to MySQL specific autoReconnect
        property in <code>JDBCAccessLogValve</code>. (markt)
      </fix>
      <scode>
        Make the Mapper type-safe. Hosts, Contexts and Wrappers are no
        longer handled as plain objects, instead they keep their type.
        Code using the Mapper doesn't need to cast objects returned by
        the mapper. (rjung)
      </scode>
      <scode>
        Move Manager, Loader and Resources from Container to Context since
        Context is the only place they are used. The documentation already
        states (and has done for some time) that Context is the only valid
        location for these nested components. (markt)
      </scode>
      <scode>
        Move the Mapper from the Connector to the Service since the Mapper is
        identical for all Connectors of a given Service and it is common for
        there to be multiple Connectors for a Service (http, https and ajp).
        This means there is now only ever one Mapper per Service rather than
        possibly multiple identically configured Mapper objects. (markt)
      </scode>
      <scode>
        Remove the per Context Mapper objects and use the Mapper from the
        Service. This removes the need to maintain two copies of the mappings
        for Servlets and Filters. (markt)
      </scode>
      <add>
        Implement a new Resources implementation that merges Aliases,
        VirtualLoader, VirtualDirContext, JAR resources and external
        repositories into a single framework rather than a separate one for each
        feature. (markt)
      </add>
      <add>
        URL rewrite valve, similar in functionality to mod_rewrite. (remm)
      </add>
      <add>
        Port storeconfig functionality, which can persist to server.xml and
        context.xml runtime container configuration changes. (remm)
      </add>
      <add>
        <bug>54552</bug>: Servlet 3.1. Implement
        <code>HttpSessionIdListener</code> and
        <code>HttpServletRequest#changeSessionId()</code>. Patch provided by
        Nick Williams. (markt)
      </add>
      <fix>
        <bug>54708</bug>: Change the name of the working directory for the ROOT
        application (located under $CATALINA_BASE/work by default) from _ to
        ROOT. (markt)
      </fix>
    </changelog>
  </subsection>
  <subsection name="Coyote">
    <changelog>
      <scode>
        The default connector is now the Java NIO connector even when specifying
        HTTP/1.1 as protocol (fhanik)
      </scode>
      <scode>
        Update default value of pollerThreadCount for the NIO connector. The new
        default value will never go above 2 regardless of available processors.
        (fhanik)
      </scode>
      <fix>
        <bug>54010</bug>: Remove some unnecessary code (duplicate calls to
        configure the scheme as https for AJP requests originally received over
        HTTPS). (markt)
      </fix>
      <scode>
        Refactor char encoding/decoding using NIO APIs. (remm)
      </scode>
    </changelog>
  </subsection>
  <subsection name="Jasper">
    <changelog>
      <scode>
        Simplify API of <code>ErrorDispatcher</code> class by using varargs.
        (kkolinko)
      </scode>
    </changelog>
  </subsection>
  <subsection name="Cluster">
    <changelog>
      <scode>
        Remove unused JvmRouteSessionIDBinderListener and SessionIDMessage.
        (kfujino)
      </scode>
      <scode>
        Modify method signature in ReplicationValve. Cluster instance is not
        necessary to argument of method. (kfujino)
      </scode>
    </changelog>
  </subsection>
  <subsection name="Web applications">
    <changelog>
      <add>
        Extend the diagnostic information provided by the Manager web
        application to include details of the configured SSL ciphers suites for
        each connector. (markt)
      </add>
    </changelog>
  </subsection>
  <subsection name="Tribes">
    <changelog>
      <scode>
        Refactor <code>AbstractReplicatedMap</code> to use generics. A key
        side-effect of this is that the class now implements
        <code>Map&lt;K,V&gt;</code> rather than extends
        <code>ConcurrentMap</code>. (markt)
      </scode>
    </changelog>
  </subsection>
  <subsection name="Other">
    <changelog>
      <scode>
        Remove unused, deprecated code. (markt)
      </scode>
      <scode>
        Remove static info String and associated getInfo() method where present.
        (markt)
      </scode>
      <update>
        (<rev>1353242</rev>, <rev>1353410</rev>):
        Remove Ant tasks <code>jasper2</code> and <code>jkstatus</code>.
        The correct names are <code>jasper</code> and <code>jkupdate</code>.
        (kkolinko)
      </update>
      <fix>
        <bug>53529</bug>: Clean-up the handling of
        <code>InterruptedException</code> throughout the code base. (markt)
      </fix>
      <add>
        <bug>54899</bug>: Provide an initial implementation of NetBeans support.
        Patch provided by Brian Burch. (markt)
      </add>
    </changelog>
  </subsection>
</section>
</body>
</document>
