Unterschiede im Verhalten von Jakarta EE 9

Bei der Umstellung auf Jakarta EE 9 in Liberty kann es aufgrund von Implementierungsänderungen und Spezifikationsklärungen zu Verhaltensunterschieden in Ihrer Anwendung kommen. Liberty erfordert keine Umstellung auf die nächste Java EE -Version und kann die vorhandenen Features Java EE 6, Java EE 7 oder Java EE 8 weiterhin verwenden. Wenn Sie auf die Version Jakarta EE 9 wechseln, müssen alle von der Anwendung verwendeten Technologien auf die Version Jakarta EE 9 migriert werden.

allgemeine Regeln

Regelname Regelbeschreibung Automatisierte Korrektur
Aktualisieren Sie Ihre Anwendung, damit der neue Jakarta EE-Paketname verwendet wird In Jakarta EE 9 hat sich der Paketnamensraum von javax.* zu jakarta.* geändert. jakarta-ee-9.yml
org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta

Jakarta Enterprise Beans 4.0

Regelname Regelbeschreibung Automatisierte Korrektur
Unterschiede in EJB-Kontexten Die Methoden getCallerIdentity(), getEnvironment() und isCallerRole(java.security.Identity) der Klasse javax.ejb.EJBContext wurden entfernt. Die Methode getMessageContext() aus der Klasse javax.ejb.SessionContext wurde entfernt. Nein

Jakarta Management

Regelname Regelbeschreibung Automatisierte Korrektur
Die Jakarta Management-Spezifikation wurde entfernt Diese Regel markiert Referenzen auf die Pakete javax.management.j2ee, javax.management.j2ee.statistics undand org.omg.stub.javax.management.j2ee mit Flags. Nein

Jakarta XML-Web-Services 3.0

Regelname Regelbeschreibung Automatisierte Korrektur
Namen der Apache Web Services Security-Pakete aktualisieren Die Pakete org.apache.ws.security und org.apache.ws.security.components.crypto wurden durch die Pakete org.apache.wss4j.common.ext und org.apache.wss4j.common.crypto ersetzt. jakarta-ee-9.yml
org.openrewrite.java.migrate.jakarta.UpdateApacheWSSecurityPackages 

RESTful Web Services 3.0

Regelname Regelbeschreibung Automatisierte Korrektur
@ApplicationPath, @Path und @Provider sind jetzt Annotationen, die CDI-Beans definieren Diese Regel markiert die Verwendung der Annotationen @ApplicationPath, @Path und @Provider. Nein
Anwendungsunterklassen, die die CDI-Injektion verwenden, müssen mit der Annotation @ApplicationPath annotiert werden Diese Regel markiert die Verwendung von CDI-Annotationen in einer Anwendungsunterklasse ohne die Verwendung der Annotation @ApplicationPath. Nein
Verwendung von Methoden für untergeordnete Ressourcen und Querverweise für untergeordnete Ressourcen mit demselben Pfad vermeiden Diese Regel markiert Annotationen der javax.ws.rs.Path-Methode, die denselben Pfad für mehrere Methoden definieren. Nein
Verhaltensänderung bei Verwendung der Methode Application.getSingletons() Diese Regel kennzeichnet Implementierungen der Methode Application.getSingletons(). Nein
Prüfen, ob sich das Verhalten von HttpHeaders.getRequestHeader(String) geändert hat Diese Regel kennzeichnet Java-Code, der die Methode javax.ws.rs.core.HttpHeaders.getRequestHeader(String) aufruft. Nein
Prüfen, ob sich das Verhalten von Response.readEntity() geändert hat Diese Regel kennzeichnet Java-Code, der die Methode javax.ws.rs.core.Response.readEntity() aufruft. Nein
Den Rückgabewert von Application.getClasses() auf lokale Schnittstellen prüfen Diese Regel kennzeichnet Implementierungen der Methode javax.ws.rs.Application.getClasses(). Nein
JAX-RS-Parameter können nicht in einen Konstruktor der Ressourcenklasse eingefügt werden Diese Regel markiert JAX-RS-Parameter, die in einen Konstruktor der Ressourcenklasse eingefügt werden. Nein
JSON4JObjectProvider ist nicht verfügbar Diese Regel kennzeichnet die Klasse com.ibm.websphere.jaxrs.providers.json4j.JSON4JObjectProvider. Nein
Eigenschaften des Liberty RESTful Web Services-Clients sind veraltet Die ClientBuilder Eigenschaften von com.ibm.ws.jaxrs.client.receive.timeout und com.ibm.ws.jaxrs.client.connection.timeout sind in Jakarta EE9 veraltet. Verwenden Sie stattdessen die Methoden ClientBuilder connectTimeout und readTimeout. Nein
Eigenschaften mit Nullwerten werden in der API "jakarta.ws.rs.client" entfernt Verwenden Sie Eigenschaften mit Nullwerten nicht mit der API jakarta.ws.rs.client. Nein
Entfernen Sie das Platzhalterzeichen aus den Werten der 'ApplicationPath'-Annotation Diese Regel markiert alle javax.ws.rs.ApplicationPath-Annotationen mit einem angegebenen Wert, der mit /* endet. jakarta-ee-9.yml
org.openrewrite.java.migrate.jakarta.ApplicationPathWildcardNoLongerAccepted 
Die serverseitige asynchrone Unterstützung muss aktiviert sein Diese Regel kennzeichnet die Verwendung der @Suspended-Annotationen für den Parametertyp AsyncResponse in einer JAX-RS-Ressourcenmethode. Nein

Spring Framework 6.0

Regelname Regelbeschreibung Automatisierte Korrektur
Spring Framework auf eine unterstützte Version von Jakarta EE 9 aktualisieren Diese Regel markiert alle Dateien vom Typ spring-core-X.X.X.RELEASE.jar/META-INF/MANIFEST.MF mit einem Wert kleiner als 6 für die Implementierungsversion. spring-framework-60.yml
org.openrewrite.java.spring.framework.UpgradeSpringFramework_6_0
Verwenden Sie nicht Ehcache 2.x Diese Regel kennzeichnet die Verwendung des Pakets org.springframework.cache.ehcache oder das Vorhandensein der Datei ehcache.xml . Nein
Verwenden Sie keine dedizierten Spring EJB-Zugriffsklassen, um EJB zu suchen Diese Regel kennzeichnet die Verwendung des org.springframework.ejb.access Pakets in Java .class Dateien oder .xml Dateien. Für Spring 6.0 verwenden Sie JNDI direkt über JndiObjectFactoryBean in Java-Dateien oder jee:jndi-lookup in .xml -Dateien. Nein
Mit @Async annotierte Methoden müssen entweder Future oder void zurückgeben Diese Regel kennzeichnet Java-Methoden, die mit org.springframework.scheduling.annotation.Async annotiert sind und andere Typen als void, Future<t>, CompletableFuture<t> oder ListenableFuture<t> zurückgeben. Nein
Die Klasse SourceHttpMessageConverter ist standardmäßig nicht registriert Diese Regel kennzeichnet die Verwendung der Schnittstelle javax.xml.transform.Source , wenn die Klasse SourceHttpMessageConverter nicht gefunden wird. In Spring Framework 6.0 wird die Klasse SourceHttpMessageConverter nicht mehr standardmäßig in Spring MVC oder RestTemplate registriert. Nein
org.springframework.http.HttpMethod ist jetzt eine Klasse und nicht mehr eine Aufzählung Diese Regel kennzeichnet die Verwendung von org.springframework.http.HttpMethod , wenn der Code annimmt, dass es sich um eine Aufzählung handelt. Nein
HttpComponentsClientHttpRequestFactory erfordert jetzt Apache HttpClient 5 Jede Verwendung von HttpClient 4.x Klassen wie CloseableHttpClient, HttpClient, RequestConfig oder HttpContext aus dem org.apache.http.* Paket innerhalb der HTTP Client-Infrastruktur von Spring (einschließlich Konstruktoren, Methodenaufrufe oder Konfigurationen, die HttpComponentsClientHttpRequestFactory beinhalten) kann zu Kompilierungsfehlern führen und muss aktualisiert werden, um die HttpClient 5.x Äquivalente zu verwenden. Nein
Vermeiden Sie die Verwendung der veralteten Schnittstelle ListenableFuture Diese Regel kennzeichnet Klassen, die die Schnittstelle ListenableFuture implementieren. In SpringFramework 6.0 wurde die Schnittstelle ListenableFuture zu Gunsten der Schnittstelle CompletableFuture veraltet. Nein
CannotSerializeTransactionException und DeadlockLoserDataAccessException sind ab Spring veraltet 6.0.3 Diese Regel kennzeichnet Java-Code, der die veralteten sperrungsbezogenen Ausnahmen von Spring verwendet CannotSerializeTransactionException und DeadlockLoserDataAccessException. Nein
Aktivieren von Legacy SQLErrorCodeSQLExceptionTranslator für datenbankspezifische Fehlercodes Diese Regel kennzeichnet die Verwendung des Pakets org.springframework.jdbc* . Spring Framework 6.0 wechselt zu einem neuen Ausnahmeübersetzer SQLExceptionSubclassTranslator , der herstellerspezifische Fehlercodes vermeidet Nein
SimpleEvaluationContext deaktiviert Array-Zuweisungen Diese Regel kennzeichnet die Verwendung von org.springframework.expression.spel.support.SimpleEvaluationContext mit Expression.getValue(...). Nein