Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-6612

Upgrade Apache Felix to Jakarta Servlet API 6.x



    Goal is to upgrade all relevant Apache Felix modules, which currently are using either Jakarta Servlet API 5.x or Java Servlet, to Jakarta Servlet API 6.x.

    Attached Mikado graph (https://mikadomethod.info/) has all so far identified prerequisites listed, as well as progress on path to main goal – i.e. items already completed are checked off (green icon). Code is shared via https://github.com/DataInMotion/felix-dev/tree/jakarta-servlet-6-x (no pull request for now – please see sections ‘Questions’ and ‘Next steps’ below).

    Before starting, I asked on Apache Felix Users list (https://www.mail-archive.com/users@felix.apache.org/msg18693.html), as well as researched if there is any ongoing effort to upgrade Apache Felix to Jakarta Servlet 6.x (issues / pull requests, etc.). Besides +https://issues.apache.org/jira/browse/FELIX-6389+, which resembles this effort, I did not find anything. However, that issue is open since 22/02/2021 and there has been no updates since 09/01/2022, as well as no code shared as part of it. If any progress was made as part of +https://issues.apache.org/jira/browse/FELIX-6389+, kindly please provide status update and perhaps these efforts can be merged.

    Modules affected

    Modules with dependency on Java Servlet or Jakarta Servlet.


    • org.apache.felix.http.parent
    • org.apache.felix.http.base
    • org.apache.felix.http.bridge
    • org.apache.felix.http.inventoryprinter
    • org.apache.felix.http.itest
    • org.apache.felix.http.jetty
    • org.apache.felix.http.proxy
    • org.apache.felix.http.samples.whiteboard
    • org.apache.felix.http.servlet-api
    • org.apache.felix.http.sslfilter
    • org.apache.felix.http.webconsoleplugin


    • org.apache.felix.webconsole
    • org.apache.felix.webconsole.plugins.deppack
    • org.apache.felix.webconsole.plugins.ds
    • org.apache.felix.webconsole.plugins.event
    • org.apache.felix.webconsole.plugins.gogo
    • org.apache.felix.webconsole.plugins.memoryusage
    • org.apache.felix.webconsole.plugins.metatype
    • org.apache.felix.webconsole.plugins.obr
    • org.apache.felix.webconsole.plugins.packageadmin
    • org.apache.felix.webconsole.plugins.scriptconsole
    • org.apache.felix.webconsole.plugins.shell
    • org.apache.felix.webconsole.plugins.subsystems
    • org.apache.felix.webconsole.plugins.upnp
    • org.apache.felix.webconsole.plugins.useradmin


    • org.apache.felix.healthcheck.core
    • org.apache.felix.healthcheck.webconsoleplugin


    • org.apache.felix.jaas
    • org.apache.felix.example.jaas.app
    • org.apache.felix.example.jaas.jdbc-h2
    • org.apache.felix.ipojo.webconsole
    • org.apache.felix.systemready
    • org.apache.felix.servicediagnostics.plugin
    • org.apache.felix.inventory


    1. Regarding modules affected, are there any additional modules which should be taken into account?

    2. Regarding modules affected, should any of the modules listed be dropped from that list ? (e.g. some may be out of date / replaced by other already)

    3. Do you know of any ongoing effort to migrate `org.osgi.service.http` specification to Jakarta ? How otherwise should modules currently using `org.osgi.service.http` specification API classes and methods be refactored ? I am aware of https://github.com/eclipse-equinox/equinox/issues/183 but it is not clear to me from that discussion if any such effort will be actually made.

    4. Do you know of any ongoing effort to upgrade `org.osgi.service.servlet` to support Jakarta Servlet API 6.x ?

    5. If `javax.servlet` dependency is removed from `org.apache.felix.http.base`, wouldn't the wrappers become obsolete ? I.e. shouldn't `org.apache.felix.http.base.internal.jakartawrappers` and `org.apache.felix.http.base.internal.javaxwrappers` be dropped then and Jakarta Servlet API used directly ?

    6. Should Jakarta Servlet API 5.x be supported in parallel with Jakarta Servlet API 6.x (as hinted at in https://www.mail-archive.com/users@felix.apache.org/msg18694.html), or only Jakarta Servlet API 6.x ?

    7. Should `org.apache.felix.http.servlet-api` module be kept once dependency on Java Servlet API is removed from it?

    8. Should this be merged to `master` branch @ https://github.com/apache/felix-dev once ready, or dedicated branch should be used (e.g. `jakarta-servlet-6-x`)

    Next steps

    1. Please provide answers to questions mentioned in previous section.

    2. If you see any of the prerequisites missing from Mikado graph, please mention those.

    3. Please create a dedicated branch @ https://github.com/apache/felix-dev (e.g. `jakarta-servlet-6-x`) unless this should be merged to `master` once ready.


      Issue Links



            mhsiemaszko Michael H. Siemaszko
            mhsiemaszko Michael H. Siemaszko
            1 Vote for this issue
            11 Start watching this issue