Jakarta EE 9 の動作の違い
Liberty で Jakarta EE 9 に移行する場合、実装の変更および仕様の明確化により、アプリケーションの動作にいくつかの違いが生じる可能性があります。 Liberty では、次の Java EE レベルに移行する必要はなく、既存の Java EE 6、 Java EE 7、または Java EE 8 フィーチャーを引き続き使用できます。 Jakarta EE 9 レベルに移行する場合、アプリケーションによって使用されるすべてのテクノロジーを Jakarta EE 9 レベルに移行する必要があります。
一般規則
| 規則名 | ルールの説明 | 自動修正 |
|---|---|---|
| 新しい Jakarta EE パッケージ名を使用するようにアプリケーションを更新する | Jakarta EE 9では、パッケージの名前空間がjavax.*からjakarta.*に変更されました。 |
jakarta-ee-9.yml org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta |
Jakarta Enterprise Beans 4.0
| 規則名 | ルールの説明 | 自動修正 |
|---|---|---|
| EJB コンテキストの相違点 | javax.ejb.EJBContext クラスの getCallerIdentity(), getEnvironment(), isCallerRole(java.security.Identity) メソッドが削除されました。 javax.ejb.SessionContextクラスのgetMessageContext()メソッドが削除されました。 |
いいえ |
Jakarta Management
| 規則名 | ルールの説明 | 自動修正 |
|---|---|---|
| Jakarta Management 仕様が削除されました。 | この規則により、javax.management.j2ee、javax.management.j2ee.statistics
および org.omg.stub.javax.management.j2ee パッケージへの参照にフラグを立てます。 |
いいえ |
Jakarta XML Web サービス 3.0
| 規則名 | ルールの説明 | 自動修正 |
|---|---|---|
| Apache Web Services セキュリティー・パッケージ名の更新 | org.apache.ws.security および org.apache.ws.security.components.crypto パッケージは、 org.apache.wss4j.common.ext および
org.apache.wss4j.common.crypto パッケージに置き換えられました。 |
jakarta-ee-9.yml org.openrewrite.java.migrate.jakarta.UpdateApacheWSSecurityPackages |
RESTful Web サービス 3.0
| 規則名 | ルールの説明 | 自動修正 |
|---|---|---|
| @ApplicationPath、@Path、および @Provider は、CDI Bean 定義アノテーションになりました。 | この規則により、 @ApplicationPath、 @Path、および @Provider アノテーションの使用にフラグを立てます。 | いいえ |
| CDI 注入を使用するアプリケーション・サブクラスには、 @ApplicationPath アノテーションを付ける必要があります。 | この規則により、 @ApplicationPath アノテーションを使用しない Application サブクラスの CDI アノテーションの使用にフラグを立てます。 | いいえ |
| 同じパスを持つサブリソース・メソッドおよびサブリソース・ロケーターを使用しない | この規則により、複数のメソッドにわたって同じパスを定義する javax.ws.rs.Path メソッド・アノテーションにフラグを立てます。 |
いいえ |
| Application.getSingletons () メソッド使用時の動作の変更 | このルールは、Application.getSingletons()メソッドの実装にフラグを立てる。 |
いいえ |
| HttpHeaders.getRequestHeader (String) の動作の変更を確認する | このルールは、javax.ws.rs.core.HttpHeaders.getRequestHeader(String)メソッドを呼び出すJavaコードにフラグを立てる。 |
いいえ |
| Response.readEntity () での動作の変更を確認する | このルールは、javax.ws.rs.core.Response.readEntity()メソッドを呼び出すJavaコードにフラグを立てる。 |
いいえ |
| Application.getClasses () 戻り値にローカル・インターフェースがあるかどうかを確認します | このルールは、javax.ws.rs.Application.getClasses()メソッドの実装にフラグを立てる。 |
いいえ |
| JAX-RS パラメーターをリソース・クラス・コンストラクターに挿入することはできません | この規則により、リソース・クラス・コンストラクターに挿入される JAX-RS パラメーターにフラグを立てます。 | いいえ |
| JSON4JObjectProvider が使用できない | このルールはcom.ibm.websphere.jaxrs.providers.json4j.JSON4JObjectProviderクラスにフラグを立てます。 |
いいえ |
| Liberty RESTful Web サービス・クライアント・プロパティーは推奨されません | com.ibm.ws.jaxrs.client.receive.timeout と com.ibm.ws.jaxrs.client.connection.timeout の ClientBuilder プロパティは Jakarta EE9 では非推奨です。 代わりに、 ClientBuilder connectTimeout メソッドおよび readTimeout メソッドを使用してください。 |
いいえ |
| jakarta.ws.rs.client API で Null プロパティーが削除される | jakarta.ws.rs.client API では、Null 値を持つプロパティー
を使用しないでください。 |
いいえ |
| ApplicationPath アノテーション値からワイルドカード文字を削除します | このルールは、/*で終わる指定された値を持つjavax.ws.rs.ApplicationPathアノテーションにフラグを立てる。 |
jakarta-ee-9.yml org.openrewrite.java.migrate.jakarta.ApplicationPathWildcardNoLongerAccepted |
| サーバー・サイドの非同期サポートを有効にする必要があります | このルールは、JAX-RSリソース・メソッドのAsyncResponseパラメータ・タイプで@Suspendedアノテーションの使用にフラグを立てる。 | いいえ |
スプリングフレームワーク 6.0
| 規則名 | ルールの説明 | 自動修正 |
|---|---|---|
| Spring Framework を Jakarta EE 9 サポート・バージョンに更新 | この規則により、6 より小さい実装バージョン値を持つすべての spring-core-X.X.X.RELEASE.jar/META-INF/MANIFEST.MF ファイルにフラグを立てます。。 |
spring-framework-60.yml org.openrewrite.java.spring.framework.UpgradeSpringFramework_6_0 |
| Ehcache 2.x | このルールは、 org.springframework.cache.ehcache パッケージの使用または ehcache.xml ファイルの存在にフラグを立てる。 |
いいえ |
| EJBを検索するために、専用のSpring EJBアクセスクラスを使用しないでください | このルールは、Javaの .class ファイルまたは .xml ファイルで org.springframework.ejb.access パッケージが使用されていることにフラグを立てる。 Spring 6.0 の場合は、Javaファイルの JndiObjectFactoryBean または .xml ファイルの jee:jndi-lookup を使って直接JNDIを使う。 |
いいえ |
| Asyncでアノテーションされたメソッドは、Futureかvoidを返す必要があります | このルールは、 void、 Future<t>、 CompletableFuture<t> 、 ListenableFuture<t> 以外の型を返す、 org.springframework.scheduling.annotation.Async でアノテーションされた Java メソッドにフラグを立てます。 |
いいえ |
| SourceHttpMessageConverter クラスはデフォルトでは登録されていません | このルールは、 SourceHttpMessageConverter クラスが見つからない場合に、 javax.xml.transform.Source インターフェイスの使用にフラグを立てる。 Spring Framework 6.0 では、 SourceHttpMessageConverter クラスはSpring MVCや RestTemplate でデフォルトで登録されなくなりました。 |
いいえ |
| org.springframework.http.HttpMethod はクラスとなり、列挙型ではなくなった | このルールは、コードが列挙型であると仮定している場合、 org.springframework.http.HttpMethod 。 |
いいえ |
| HttpComponentsClientHttpRequestFactory Apache HttpClient 5 | HttpClient 5.x Springの HTTP クライアントインフラストラクチャ内で、 org.apache.http.* パッケージの CloseableHttpClient、 HttpClient、 RequestConfig、 HttpContext などの HttpClient 4.x クラスを使用すると( HttpComponentsClientHttpRequestFactory を含むコンストラクタ、メソッド呼び出し、コンフィギュレーションを含む)、コンパイルエラーになる可能性があります。 |
いいえ |
| 非推奨の ListenableFuture インタフェースの使用を避ける | このルールは、 ListenableFuture インターフェースを実装するクラスにフラグを立てる。 SpringFramework 6.0 では、 ListenableFuture インターフェースは廃止され、 CompletableFuture インターフェースが採用された。 |
いいえ |
| CannotSerializeTransactionException と DeadlockLoserDataAccessException は、Spring では非推奨となっています。 6.0.3 | このルールは、Springの非推奨のロック関連例外 CannotSerializeTransactionException と DeadlockLoserDataAccessException を使うJavaコードにフラグを立てる。 |
いいえ |
| データベース固有のエラーコードに対してレガシー SQLErrorCodeSQLExceptionTranslator を有効にする | このルールは、 org.springframework.jdbc* パッケージの使用にフラグを立てる。 Spring Framework 6.0 ベンダー固有のエラーコードを回避する新しい例外トランスレータ SQLExceptionSubclassTranslator に切り替える |
いいえ |
| SimpleEvaluationContext 配列の割り当てを無効にする | このルールは、 org.springframework.expression.spel.support.SimpleEvaluationContext と Expression.getValue(...) の併用にフラグを立てる。 |
いいえ |