[ 
https://issues.apache.org/jira/browse/HADOOP-19395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yaniv Kunda updated HADOOP-19395:
---------------------------------
    Description: 
The project uses old libraries in the {{javax.*}} package namespace, mainly 
{{javax.servlet}} & {{{}javax.annotation{}}}.

For example, the old servlet-api is included via the following dependency 
management:
{code:xml}
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>4.0.4</version>
</dependency>
{code}

Note that while the artifact is in maven's `jakarta.servlet` namespace, it 
includes the `javax.servlet` classes - versions 5 and above include the 
`jakarta.servlet` classes.

The scope of its use is extensive, spanning most modules, and in many cases in 
public classes - however I'm not sure if any are considered a public API.

One caveat is that the current Jetty version (9.4.x) doesn't work with the 
`jakarta.servlet` namespace, so it will still need to use the previous 
`javax.servlet` namespace, but the latter can be used by getting 
`javax.servlet:javax.servlet-api:4.0.1` specifically where it is used - and 
having the old namespace for the maven coordinates as well means it wouldn't 
cause a conflict.

I believe that the first logical step is to upgrade to version 5.0.0, which is 
the first version that uses the `jakarta.*` package namespace, but is also the 
last that is Java 8 compatible, and upgrade again to 6.1.0 once hadoop migrates 
to Java 17 as a minimum A new Java 17 baseline will also support upgrading 
Jetty, which at the latest version 12 can work with all servlet-api versions.





  was:
The project uses old libraries in the {{javax.*}} package namespace, mainly 
{{javax.servlet}} & {{{}javax.annotation{}}}.

For example, the old servlet-api is included via the following dependency 
management:
{code:xml}
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>4.0.4</version>
</dependency>
{code}

Note that while the artifact is in maven's `jakarta.servlet` namespace, it 
includes the `javax.servlet` classes - versions 5 and above include the 
`jakarta.servlet` classes.

The scope of its use is extensive, spanning most modules, and in many cases in 
public classes - however I'm not sure if any are considered a public API.

One caveat is that the current Jetty version (9.4.x) doesn't work with the 
`jakarta.*` namespace, so it will still need to use the previous `javax.*` 
namespace, but the latter can be used by getting 
`javax.servlet:javax.servlet-api:4.0.1` specifically where it is used - and 
having the old namespace for the maven coordinates as well means it wouldn't 
cause a conflict.

I believe that the first logical step is to upgrade to version 5.0.0, which is 
the first version that uses the `jakarta.*` package namespace, but is also the 
last that is Java 8 compatible, and upgrade again to 6.1.0 once hadoop migrates 
to Java 17 as a minimum A new Java 17 baseline will also support upgrading 
Jetty, which at the latest version 12 can work with all servlet-api versions.






> Upgrade javax to jakarta
> ------------------------
>
>                 Key: HADOOP-19395
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19395
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: common
>    Affects Versions: 3.5.0
>            Reporter: Yaniv Kunda
>            Priority: Major
>
> The project uses old libraries in the {{javax.*}} package namespace, mainly 
> {{javax.servlet}} & {{{}javax.annotation{}}}.
> For example, the old servlet-api is included via the following dependency 
> management:
> {code:xml}
> <dependency>
>     <groupId>jakarta.servlet</groupId>
>     <artifactId>jakarta.servlet-api</artifactId>
>     <version>4.0.4</version>
> </dependency>
> {code}
> Note that while the artifact is in maven's `jakarta.servlet` namespace, it 
> includes the `javax.servlet` classes - versions 5 and above include the 
> `jakarta.servlet` classes.
> The scope of its use is extensive, spanning most modules, and in many cases 
> in public classes - however I'm not sure if any are considered a public API.
> One caveat is that the current Jetty version (9.4.x) doesn't work with the 
> `jakarta.servlet` namespace, so it will still need to use the previous 
> `javax.servlet` namespace, but the latter can be used by getting 
> `javax.servlet:javax.servlet-api:4.0.1` specifically where it is used - and 
> having the old namespace for the maven coordinates as well means it wouldn't 
> cause a conflict.
> I believe that the first logical step is to upgrade to version 5.0.0, which 
> is the first version that uses the `jakarta.*` package namespace, but is also 
> the last that is Java 8 compatible, and upgrade again to 6.1.0 once hadoop 
> migrates to Java 17 as a minimum A new Java 17 baseline will also support 
> upgrading Jetty, which at the latest version 12 can work with all servlet-api 
> versions.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to