Release Notes -- Apache Jackrabbit -- Version 2.21.11

Introduction
------------

This is Apache Jackrabbit(TM) 2.21.11, a fully compliant implementation of the
Content Repository for Java(TM) Technology API, version 2.0 (JCR 2.0) as
specified in the Java Specification Request 283 (JSR 283).

Apache Jackrabbit 2.21.11 is an unstable release cut directly from
Jackrabbit trunk, with a focus on new features and other
improvements. For production use we recommend the latest stable 2.20.x
release.

Changes in Jackrabbit 2.21.11
-----------------------------

Bug

    [JCR-4766] - JcrRemotingServlet should use 'application/json' media type for JSON response

Task

    [JCR-4764] - Update Tika dependency to 2.3.0
    [JCR-4765] - Update h2db dependency to 2.1.210
    [JCR-4771] - set baseline comparisonVersion to latest stable (2.20.5)
    [JCR-4774] - fix jackrabbit-it-osgi logging config
    [JCR-4775] - fix dangling javadoc links for Apache HTTP libs
    [JCR-4776] - use slf4j-reload4j instead of slf4-log4j12
    [JCR-4777] - Update Logback version to 1.2.11
    [JCR-4778] - Update slf4j dependency to 1.7.36
    [JCR-4779] - Update mockito dependency to 4.4.0
    [JCR-4780] - webapp: update htmlunit dependency to 2.60.0
    [JCR-4781] - Update tomcat dependency to 8.5.78
    [JCR-4782] - Update h2db dependency to 2.1.212
    [JCR-4783] - it-osgi: update felix.framework to 7.0.3
    [JCR-4787] - Update Tika dependency to 2.4.0
    [JCR-4789] - webapp: update htmlunit dependency to 2.61.0
    [JCR-4790] - Update mockito dependency to 4.5.1
    [JCR-4791] - Update aws java sdk version to 1.12.223
    [JCR-4792] - Update tomcat dependency to 8.5.79
    [JCR-4793] - Update mockito dependency to 4.6.0
    [JCR-4794] - it-osgi: update felix.framework to 7.0.4


For more detailed information about all the changes in this and other
Jackrabbit releases, please see the Jackrabbit issue tracker at

    https://issues.apache.org/jira/browse/JCR

Release Contents
----------------

This release consists of a single source archive packaged as a zip file.
The archive can be unpacked with the jar tool from your JDK installation.
See the README.txt file for instructions on how to build this release.

The source archive is accompanied by an SHA512 checksum and a
PGP signature that you can use to verify the authenticity of your
download. The public key used for the PGP signature can be found at
https://www.apache.org/dist/jackrabbit/KEYS.

About Apache Jackrabbit
-----------------------

Apache Jackrabbit is a fully conforming implementation of the Content
Repository for Java Technology API (JCR). A content repository is a
hierarchical content store with support for structured and unstructured
content, full text search, versioning, transactions, observation, and
more.

For more information, visit http://jackrabbit.apache.org/

About The Apache Software Foundation
------------------------------------

Established in 1999, The Apache Software Foundation provides organizational,
legal, and financial support for more than 140 freely-available,
collaboratively-developed Open Source projects. The pragmatic Apache License
enables individual and commercial users to easily deploy Apache software;
the Foundation's intellectual property framework limits the legal exposure
of its 3,800+ contributors.

For more information, visit http://www.apache.org/

Trademarks
----------

Apache Jackrabbit, Jackrabbit, Apache, the Apache feather logo, and the Apache
Jackrabbit project logo are trademarks of The Apache Software Foundation.
