<?xml version="1.0"?>
<!--

    Copyright (c) 2012, 2024 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!DOCTYPE chapter [<!ENTITY % ents SYSTEM "jersey.ent" > %ents;]>
<chapter xmlns="http://docbook.org/ns/docbook"
         version="5.0"
         xml:lang="en"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xsi:schemaLocation="http://docbook.org/ns/docbook http://docbook.org/xml/5.0/xsd/docbook.xsd
                             http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
         xml:id="migration">
    <title>Migration Guide</title>

    <section xml:id="mig-4.0.0">
        <title>Migrating from Jersey 3.x to 4.0.x.</title>
        <section xml:id="mig-4.0.0-breaking-changes">
            <title>Breaking Changes</title>
            <para>
                <itemizedlist>
                    <listitem>
                        <para>
                            Jersey 4.x is implementation of Jakarta REST 4.0, part of Jakarta EE 11.
                            For APIs and implementations in Jakarta EE 11, JDK 17 minimum is required.
                            However, some modules may require higher versions of Java SE. See <xref linkend="se_compatibility"/>.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Jakarta REST 4.0 dropped classes bound to JAX-B, since JAX-B has been removed from Jakarta EE 11 Core
                            profile. These classes were <literal>jakarta.ws.rs.core.Link.JaxbLink</literal> and
                            <literal>jakarta.ws.rs.core.Link.JaxbAdapter</literal> along with related methods working with these
                            classes.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Some modules supporting obsolete libraries were dropped.
                            The Apache 4 HTTP Client supported by <literal>jersey-apache-connector</literal>
                            is replaced by <literal>jersey-apache5-connector</literal>, using the Apache 5 HTTP Client.
                        </para>
                        <para>
                            <literal>jersey-jetty11-connector</literal> based on Jetty 11 HTTP Client has been dropped, with
                            <literal>jersey-jetty-connector</literal> based on Jetty 12 HTTP Client as a replacement.
                        </para>
                        <para>The same with <literal>jersey-container-jetty11-http</literal> with <literal>jersey-container-jetty-http</literal>
                            atop Jetty 12 as a replacement.
                        </para>
                        <para>
                            <literal>jersey-container-simple-http</literal> module was removed without a replacement.
                        </para>
                    </listitem>
                    <listitem>
                        <para>Given JDK 17 does not allow reflection on JDK internal classes, it is no longer possible
                            to support additional HTTP methods with the default <literal>HttpUrlConnector</literal>, such as popular
                            HTTP Patch.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Jersey 4.x still uses HK2 as a main DI framework. However, in the future releases (5.x+), the main
                            DI container would be the CDI container. In CDI, it is not possible to register beans in the injection
                            container in runtime the way it is possible in HK2 using AbstractBinder; the
                            &jersey.common.internal.inject.AbstractBinder; is moved to the <literal>jersey-hk2</literal> package.
                            Also, a releated <literal>org.glassfish.jersey.internal.inject.Bindings</literal> class was moved
                            into the same package. A few internal <literal>Binding</literal> subclasses and related Jersey
                            most innate classes are hidden from public usage.
                            See Section <xref linkend="ioc"/>.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Jersey stopped providing jersey as a bundle, known as <literal>jaxrs-ri</literal>. Jersey jars used
                            in the bundle was only a subset of possibilities Jersey provides with a variety of modules each of
                            which handles an additional customer use-case. Some modules are not designed to be together on a
                            classpath with a module from the <literal>jaxrs-ri</literal> bundle and that has been leading to a confusion.
                        </para>
                        <para>
                            The <literal>jaxrs-ri</literal> bundle also contained third party libraries with a different licensing
                            than Jersey, which also led to a confusion about whole <literal>jaxrs-ri</literal> bundle and
                            Jersey itself license.
                        </para>
                    </listitem>
                </itemizedlist>
            </para>
        </section>
        <section xml:id="mig-4.0.0-application-servers">
            <title>Application servers for Jersey</title>
            <para>
                Note that only a few servers support Jakarta EE 11 compatible Servlet API and they are tested with Jersey.
                Those are:
                <literal>GlassFish 8</literal>,
                <literal>Tomcat 11</literal>.
                The other containers will follow.
            </para>
        </section>
    </section>

</chapter>
