Differenze nelle modalità di funzionamento di Java EE 7

Quando si passa da Java EE 6 a Java EE 7, potrebbero esserci delle differenze nella modalità di funzionamento nell'applicazione dovute a modifiche dell'implementazione e a chiarimenti della specifica. In Liberty, non è obbligatorio passare al livello di Java EE successivo ed è possibile continuare a utilizzare le funzioni Java EE 6 esistenti. In WebSphere Application Server tradizionale V9.0, solo le tecnologie JAX-RS e JPA possono rimanere al livello Java EE 6 ed è necessario configurarle esplicitamente sul server. Tutte le altre tecnologie devono essere migrate al livello Java EE 7.

CDI 1.2

Nome regola Descrizione regola Correzione automatica
CDI riconosce archivi di bean impliciti La specifica CDI (Contexts and Dependency Injection) 1.1 ha introdotto la modalità di rilevamento bean implicita, dando luogo a modifiche al comportamento ed alle prestazioni rispetto all'implementazione di Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 in WebSphere Application Server. No
CDI scansiona alla ricerca di bean impliciti quando non esiste un file beans.xml La specifica CDI (Contexts and Dependency Injection) 1.1 ha introdotto la modalità di rilevamento bean implicita, dando luogo a modifiche al comportamento ed alle prestazioni rispetto all'implementazione di Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 in WebSphere Application Server. No
Ricerca di una modifica al comportamento nel metodo InjectionPoint getAnnotated Nell'implementazione di CDI (Contexts and Dependency Injection) 1.0, il metodo getAnnotated in una classe che implementa l'interfaccia javax.enterprise.inject.spi.InjectionPoint può restituire un'istanza di javax.enterprise.inject.spi.Annotated. In CDI 1.2, il metodo getAnnotated deve restituire un'istanza di AnnotatedField o AnnotatedParameter, a seconda che il punto di inserimento sia un parametro o un campo inserito in un costruttore o un metodo. No
Ricerca di uno schema valido in beans.xml Questa regola analizza i file beans.xml per vedere se lo spazio dei nomi fornito nell'attributo xmlns corrisponde alla posizione dello schema corrispondente. java-ee-7.yml
org.openrewrite.java.migrate.BeansXmlNamespace 
Verificare la presenza di uno spazio dei nomi valido in beans.xml Questa regola analizza i file beans.xml per vedere se viene fornito uno spazio dei nomi valido sull'attributo xmlns. No
Ricerca dell'abilitazione di intercettatori, decoratori ed alternative in altri file JAR Nell'implementazione di CDI 1.2 Weld, gli intercettori, i decoratori e le alternative abilitati nel file beans.xml in un file JAR sono abilitati solo per quel file JAR. No
Le classi che utilizzano sia annotazioni Specializes e Alternative non vengono inserite in altri moduli Questa regola contrassegna le classi annotate con le annotazioni @Specializes e @Alternative. No
Non utilizzare lo schema OpenWebBeans per beans.xml Lo schema OpenWebBeans per il file beans.xml non è supportato nell'implementazione di Liberty CDI 1.2. java-ee-7.yml
org.openrewrite.xml.liberty.WebBeansXmlRule 
I campi produttore nei bean di sessione devono essere statici Nell'implementazione CDI 1.2 Weld, l'applicazione non si avvia e lancia un'eccezione quando nelle classi dei bean di sessione vengono dichiarati campi non statici con l'annotazione @Produces java-ee-7.yml
org.openrewrite.java.migrate.AddStaticVariableOnProducerSessionBean 
Il file openwebbeans.properties non viene utilizzato Questa regola contrassegna i file di configurazione META-INF/openwebbeans/openwebbeans.properties nell'applicazione. La funzione Java EE 7 CDI 1.2 si basa sull'implementazione del riferimento Weld di CDI, che non utilizza questi file di configurazione. No
I campi transitori nei bean con ambito la sessione eseguono correttamente il failover Questa regola contrassegna i campi con il modificatore transient nelle classi annotate con @SessionScoped. No

EL 3.0

Nome regola Descrizione regola Correzione automatica
Cambiamento del comportamento nel metodo coerceToType con il parametro null Expression Language 3.0 introduce una modifica al comportamento quando viene fornito un valore null al primo parametro di coerceToType(Object obj, Class<?> targetType). No

JAX-RS 2.0

Nome regola Descrizione regola Correzione automatica
È necessario implementare le interfacce @Local JAX-RS Nell'implementazione di WebSphere Application Server Java EE (Java Platform, Enterprise Edition) 7 JAX-RS 2.0, quando si trasmettono le interfacce JAX-RS come valori all'annotazione @javax.ejb.Local, la classe che utilizza l'annotazione deve implementare le interfacce trasmesse. No
API Java per RESTful Web Services (JAX-RS) e Contexts and Dependency Injection for Java (CDI) Questa regola identifica la presenza di JAX-RS e CDI nell'applicazione. WebSphere Application Server V9.0 tradizionale, conforme a Java EE 7, viene fornito con JAX-RS 2.0 di default, ma consente di tornare a JAX-RS 1.1 se necessario. No
È necessaria una configurazione per utilizzare SSL in JAX-RS 2.0 Per utilizzare la funzione la SSL (Secure Sockets Layer) JAX-RS 2.0 sul server Liberty, è necessario abilitare la funzione ssl-1.0 o quella appSecurity-2.0 e configurare la proprietà com.ibm.ws.jaxrs.client.ssl.config nel codice del client JAX-RS 2.0. No
I package org.codehaus.jackson non sono disponibili I pacchetti org.codehaus.jackson esposti come API di terze parti in JAX-RS 1.1 non sono più esposti nella piattaforma Java WebSphere Application Server. No
L'inserimento delle API di Apache Wink nel package assieme all'applicazione potrebbe richiedere modifiche all'applicazione Quando le API di Apache Wink vengono fornite con l'applicazione, l'applicazione deve fornire una sottoclasse di javax.ws.rs.core.Application, ed almeno una delle implementazioni del metodo getClasses() e getSingletons() non deve restituire null. No
Le API di Apache Wink non sono disponibili I package org.apache.wink non sono disponibili per le applicazioni Java API for RESTful Web Services (JAX-RS) che utilizzano implementazioni di WebSphere Application Server Java EE (Java Platform, Enterprise Edition) 7 JAX-RS 2.0. No
Le API Apache Wink Client non sono disponibili I package org.apache.wink.client non sono disponibili per le applicazioni JAX-RS che utilizzano implementazioni di WebSphere Application Server Java EE (Java Platform, Enterprise Edition) 7 JAX-RS 2.0. No
La classe com.ibm.websphere.jaxrs.server.IBMRestFilter non è più supportata Le API com.ibm.websphere.jaxrs.server.IBMRestFilter non sono disponibili nell'implementazione di WebSphere Application Server Java EE (Java Platform, Enterprise Edition) 7 JAX-RS 2.0, perché sono basate sull'implementazione di JAX-RS 1.1 Wink. No
La classe org.apache.wink.client.handlers.LtpaAuthSecurityHandler non è più supportata Le API org.apache.wink.client.handlers.LtpaAuthSecurityHandler non sono disponibili per le applicazioni JAX-RS (Java API for RESTful Web Services) che utilizzano l'implementazione di WebSphere Application Server Java EE (Java Platform, Enterprise Edition) 7 JAX-RS 2.0, perché si basano sull'implementazione di JAX-RS 1.1 Wink. No
Il package org.apache.wink.common.model.atom non è disponibile Il package org.apache.wink.common.model.atom non è disponibile per le applicazioni Java API for RESTful Web Services (JAX-RS) che utilizzano implementazioni di WebSphere Application Server Java EE (Java Platform, Enterprise Edition) 7 JAX-RS 2.0. No
Il package org.apache.wink.common.model.multipart non è disponibile Nell'implementazione di WebSphere Application Server Java EE (Java Platform, Enterprise Edition) 7 JAX-RS 2.0, il package org.apache.wink.common.model.multipart è stato sostituito con il package com.ibm.websphere.jaxrs20.multipart di IBM. No
Utilizza i metodi isReadable e isWriteable per controllare il tipo di supporto Nell'implementazione di WebSphere Application Server Java EE (Java Platform, Enterprise Edition) 7 JAX-RS 2.0, le interfacce MessageBodyReader e MessageBodyWriter, con le annotazioni @Consumes e @Produces, potrebbero limitare i tipi di supporti gestiti. No

JMS Client 2.0

Nome regola Descrizione regola Correzione automatica
Ricerca di una modifica al comportamento nella priorità dei messaggi e nell'attributo NoLocal JAXB e XML Binding precedenti a 4.0 forniscono la classe Validator obsoleta. Questa classe non è disponibile nel bind XML 4.0 poiché la convalida su richiesta non è più supportata. No
Ricerca di una modifica al comportamento nei metodi setClientID e createDurableSubscriber Questa regola segnala i metodi javax.jms.Session.createDurableSubscriber, javax.jms.TopicSession.createDurableSubscriber e javax.jms.Connection.setClientID perché lanciano eccezioni diverse in JMS Client 2.0. No

Servlet 3.1

Nome regola Descrizione regola Correzione automatica
Ricerca di una modifica al comportamento nell'elaborazione dell'elemento absolute-ordering Nel Servlet 3.0, se l'attributo metadata-complete è impostato su "true", tutti gli archivi di frammenti web vengono utilizzati indipendentemente dal fatto che siano referenziati nell'elemento <absolute-ordering> del file web.xml. Nel Servlet 3.1, i frammenti Web che non sono elencati nell'elemento <absolute-ordering> sono esclusi dall'elaborazione. No
Ricerca di una modifica al comportamento nei servlet asincroni In Servlet 3.0, se una si include una stringa di query ad una richiesta, la stringa viene resa disponibile tra le risorse distribuite. In Servlet 3.1, se si fornisce una stringa di query alla risorsa di distribuzione, questa stringa di query viene resa disponibile alla risorsa distribuita invece che alla stringa di query della richiesta originale. No
Ricerca di una modifica al comportamento nel metodo getServerInfo Questa regola contrassegna i riferimenti al metodo javax.servlet.ServletContext.getServerInfo() perché l'implementazione della funzione Servlet 3.1 restituisce un valore diverso da quello dell'implementazione della funzione Servlet 3.0. No
Ricerca di una modifica al comportamento nel metodo sendRedirect Questa regola contrassegna i riferimenti al metodo javax.servlet.http.HttpServletResponse.sendRedirect() perché il comportamento predefinito rispetto agli URL relativi è diverso nell'implementazione della funzione Servlet 3.1 rispetto a quello della funzione Servlet 3.0. No
Ricerca di una modifica al comportamento nell'interfaccia ServletContextListener Le classi che implementano l'interfaccia javax.servlet.ServletContextListener devono essere annotate con l'annotazione javax.servlet.annotation.WebListener o definite come una classe listener nel file web.xml o web-fragment.xml. No
Ricerca di una modifica al comportamento nel metodo setComment Questa regola contrassegna i riferimenti al metodo javax.servlet.SessionCookieConfig.setComment() perché l'implementazione della funzione Servlet 3.1 genera un'eccezione IllegalStateException una volta inizializzato il contesto del servlet, a differenza del Servlet 3.0. No
Ricerca di una modifica al comportamento relativo agli elementi duplicati nei descrittori web In Servlet 3.0, un'applicazione può essere distribuita anche se i descrittori web contengono elementi <ordering> o <absolute-ordering> duplicati. In Servlet 3.1, un'applicazione con questi elementi duplicati non può essere distribuita. No
Ricerca di una modifica al comportamento relativo all'unione della destinazione dell'inserimento del riferimento alla risorsa Il comportamento dell'unione della destinazione dell'inserimento del riferimento alla risorsa è diverso nell'implementazione della funzione Servlet 3.1 rispetto a quello della funzione Servlet 3.0. Il comportamento dell'applicazione esistente potrebbe cambiare a causa delle destinazioni dell'inserimento appena attivate definite nel file web-fragment.xml precedentemente eseguite dal file web.xml. No
Ricerca di una modifica al comportamento nell'associazione del modello dell'URL In Servlet 3.0, un'applicazione verrà correttamente avviata anche se lo stesso modello di URL è associato a più servlet. In Servlet 3.1, l'applicazione non parte e genera un'eccezione. No
Ricerca di nuovi metodi aggiunti a javax.servlet.ServletOutputStream e javax.servlet.ServletInputStream Servlet 3.1 introduce nuovi metodi in javax.servlet.ServletOutputStream e javax.servlet.ServletInputStream. Questi metodi non sono stati aggiunti in Servlet 3.0 e devono essere implementati in caso di migrazione a Servlet 3.1. No

Da OpenJPA a EclipseLink JPA

Nome regola Descrizione regola Correzione automatica
Disabilitazione della cache di secondo livello dell'unità di persistenza OpenJPA disabilita per impostazione predefinita la cache di secondo livello, mentre EclipseLink per impostazione predefinita l'abilità. Utilizzare la correzione rapida per modificare la configurazione della cache dell'unità di persistenza affinché conservi lo stesso comportamento della cache in EclipseLink. java-ee-7.yml
org.openrewrite.java.migrate.JpaCacheProperties 
Non utilizzare i provider OpenJPA nel file persistence.xml Durante la migrazione da OpenJPA a EclipseLink utilizzare il provider JPA predefinito invece di un provider specifico OpenJPA. java-ee-7.yml
org.openrewrite.java.migrate.javaee7.OpenJPAPersistenceProvider 
Non utilizzare stringhe OpenJPA per proprietà e suggerimenti della query Le stringhe definite di OpenJPA utilizzate per proprietà e suggerimenti della query devono essere sostituite con un equivalente EclipseLink, ove disponibile. No
OpenJPA a EclipseLink informazioni e potenziali problemi Questa regola contiene informazioni generali per la migrazione a Java EE 7 ( OpenJPA ), nonché informazioni sui problemi che WebSphere Migration Toolkit per i binari delle applicazioni (scanner binario) non rileva. java-ee-7.yml
org.openrewrite.java.migrate.javax.openJPAToEclipseLink 
La proprietà di configurazione openjpa.LockManager deve essere migrata La proprietà OpenJPA LockManager proprietà, openjpa.LockManager, deve essere migrata utilizzando un'API di blocco fornita nella specifica JPA 2.1. No
La proprietà di configurazione openjpa.jdbc deve essere migrata nel file di associazione Il proprietà dello schema OpenJPA, openjpa.jdbc, deve essere migrata nella configurazione del file di associazione definito dalla specifica. No
L'interfaccia org.apache.openjpa.enhance.PersistenceCapable non è disponibile L'interfaccia org.apache.openjpa.enhance.PersistenceCapable , che viene inserita in fase di compilazione, non è disponibile per le applicazioni JPA che utilizzano l'implementazione WebSphere tradizionale o Liberty Java EE 7 JPA 2.1 No
I package org.apache.openjpa non sono disponibili Le API org.apache.openjpa non sono disponibili nell'implementazione WebSphere Java EE 7 JPA 2.1. No
I file di associazione non sono elaborati durante la migrazione da OpenJPA a EclipseLink La serie di regole per la migrazione da OpenJPA a EclipseLink migra i problemi trovati nelle annotazioni JPA ma non migra i problemi nei file di associazione dell'entità. No
È necessario migrare le proprietà di configurazione di OpenJPA e WebSphere JPA È necessario migrare le proprietà di configurazione JPA 2.0 specifiche del fornitore di OpenJPA e WebSphere JPA Utilizzare le proprietà standardizzate ed EclipseLink. No