Diferenças de comportamento do Java EE 7
Ao mover do Java EE 6 para o Java EE 7, pode haver algumas diferenças de comportamento em seu aplicativo devido a mudanças de implementação e esclarecimentos de especificação. No Liberty, não é necessário mover para o próximo nível do Java EE e é possível continuar a usar os recursos existentes do Java EE 6. No WebSphere Application Server tradicional V9.0, somente as tecnologias JAX-RS e JPA podem permanecer no nível Java EE 6 e deve-se configurá-las explicitamente no servidor. Todas as outras tecnologias devem ser migradas para o nível Java EE 7.
CDI 1.2
| Nome da regra | Descrição da regra | Correção automatizada |
|---|---|---|
| O CDI reconhece archives de beans implícitos | A especificação Contexts and Dependency Injection (CDI) 1.1 introduziu o modo de descoberta de bean implícito, resultando em mudanças de comportamento e desempenho a partir da implementação do Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 no WebSphere Application Server. | Não |
| O CDI varre beans implícitos quando não há nenhum arquivo beans.xml | A especificação Contexts and Dependency Injection (CDI) 1.1 introduziu o modo de descoberta de bean implícito, resultando em mudanças de comportamento e desempenho a partir da implementação do Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 no WebSphere Application Server. | Não |
| Verificar uma mudança de comportamento no método InjectionPoint getAnnotated | Na implementação de Contexts and Dependency Injection (CDI) 1.0, o método getAnnotated em uma classe que implementa a
interface javax.enterprise.inject.spi.InjectionPoint pode retornar uma instância de javax.enterprise.inject.spi.Annotated. Na implementação do CDI 1.2, o método getAnnotated deve retornar uma instância de AnnotatedField ou
de AnnotatedParameter, dependendo de o ponto de injeção ser um campo injetado ou um parâmetro em um construtor ou método. |
Não |
| Verificar um esquema válido no beans.xml | Essa regra examina os arquivos beans.xml para verificar se o namespace fornecido no atributo xmlns corresponde ao local do esquema correspondente. |
java-ee-7.yml org.openrewrite.java.migrate.BeansXmlNamespace |
| Verificar se há um namespace válido em beans.xml | Essa regra examina os arquivos beans.xml para verificar se um namespace válido é fornecido no atributo xmlns. |
Não |
| Verificar a ativação de interceptores, decoradores e alternativas em outros arquivos JAR | Na implementação do CDI 1.2 Weld, os interceptadores, decoradores e alternativas ativados no arquivo beans.xml em um arquivo JAR são ativados somente para esse arquivo JAR. | Não |
| Classes que usam ambas as anotações Specializes e Alternative não são injetadas em outros módulos | Esta regra sinaliza classes que são anotadas com ambas as anotações @Specializes e @Alternative. |
Não |
| Não usar o esquema OpenWebBeans para o beans.xml | O esquema OpenWebBeans para o arquivo beans.xml não é compatível com a implementação do Liberty CDI 1.2. | java-ee-7.yml org.openrewrite.xml.liberty.WebBeansXmlRule |
| Campos de produtor em beans de sessão devem ser estáticos | Na implementação do CDI 1.2 Weld, o aplicativo não é iniciado e lança uma exceção quando campos não estáticos com a anotação @Produces são declarados em classes de beans de sessão |
java-ee-7.yml org.openrewrite.java.migrate.AddStaticVariableOnProducerSessionBean |
| O arquivo openwebbeans.properties não é usado | Essa regra sinaliza os arquivos de configuração META-INF/openwebbeans/openwebbeans.properties em seu aplicativo. O recurso Java EE 7 CDI 1.2 é baseado na implementação de referência Weld de CDI, que não usa esse arquivo de configuração. | Não |
| Campos temporários em beans com escopo por sessão não podem ter failover com êxito | Esta regra sinaliza campos com o modificador transient em classes que são anotadas com @SessionScoped. |
Não |
EL 3.0
| Nome da regra | Descrição da regra | Correção automatizada |
|---|---|---|
| Mudança de comportamento no método coerceToType com parâmetro nulo | A linguagem de expressão 3.0 introduz uma alteração de comportamento quando um valor nulo é fornecido ao primeiro parâmetro de coerceToType(Object obj, Class<?> targetType). |
Não |
JAX-RS 2.0
| Nome da regra | Descrição da regra | Correção automatizada |
|---|---|---|
| As interfaces @Local JAX-RS devem ser implementadas | Na implementação de Java Platform, Enterprise Edition (Java EE) 7 JAX-RS 2.0 do WebSphere
Application Server, quando as interfaces JAX-RS são passadas como valores para a anotação
@javax.ejb.Local, a classe que usa a anotação deve implementar as interfaces
passadas. |
Não |
| Java API for RESTful Web Services (JAX-RS) e Contexts and Dependency Injection for Java (CDI) | Essa regra identifica a presença de JAX-RS e CDI no aplicativo. WebSphere Application Server o V9.0 tradicional, em conformidade com o Java EE 7, vem com o JAX-RS 2.0 por padrão, mas permite a reversão para o JAX-RS 1.1, se necessário. | Não |
| A configuração é necessária para usar SSL no JAX-RS 2.0 | Para usar a função Secure Sockets Layer (SSL) do JAX-RS 2.0 em seu servidor Liberty, deve-se ativar o recurso ssl-1.0 ou o recurso appSecurity-2.0
e configurar a propriedade com.ibm.ws.jaxrs.client.ssl.config no código do cliente JAX-RS 2.0. |
Não |
| Os pacotes org.codehaus.jackson não estão disponíveis | Os pacotes org.codehaus.jackson que são expostos como uma API de terceiros no JAX-RS 1.1 não são mais expostos na plataforma Java WebSphere Application Server. |
Não |
| Empacotar as APIs do Apache Wink com seu aplicativo pode requerer mudanças de aplicativo | Quando as APIs do Apache Wink são empacotadas com o aplicativo, o aplicativo deve fornecer uma subclasse de javax.ws.rs.core.Application
e pelo menos uma das implementações de método getClasses() e getSingletons() não deve retornar nulo. |
Não |
| As APIs do Apache Wink não estão disponíveis | Os pacotes org.apache.wink não estão disponíveis aos aplicativos Java API for
RESTful Web Services (JAX-RS) que usam a implementação de Java Platform, Enterprise
Edition (Java EE) 7 JAX-RS 2.0 do WebSphere Application Server. |
Não |
| As APIs do Apache Wink Client não estão disponíveis | Os pacotes org.apache.wink.client não estão disponíveis aos aplicativos
JAX-RS que usam a implementação de Java Platform, Enterprise Edition (Java EE) 7 JAX-RS
2.0 do WebSphere Application Server. |
Não |
| A classe com.ibm.websphere.jaxrs.server.IBMRestFilter não é mais suportada | As APIs com.ibm.websphere.jaxrs.server.IBMRestFilter não estão disponíveis
na implementação de Java Platform, Enterprise Edition (Java EE) 7 JAX-RS 2.0 do WebSphere
Application Server porque elas estão baseadas na implementação de JAX-RS 1.1 Wink. |
Não |
| A classe org.apache.wink.client.handlers.LtpaAuthSecurityHandler não é mais suportada | As APIs org.apache.wink.client.handlers.LtpaAuthSecurityHandler não estão
disponíveis aos aplicativos Java API for RESTful Web Services (JAX-RS) que usam a
implementação de Java Platform, Enterprise Edition (Java EE) 7 JAX-RS 2.0 do WebSphere
Application Server porque elas são baseadas na implementação de JAX-RS 1.1 Wink. |
Não |
| O pacote org.apache.wink.common.model.atom não está disponível | O pacote org.apache.wink.common.model.atom não está disponível para
aplicativos Java API for RESTful Web Services (JAX-RS) que usam a implementação de Java
Platform, Enterprise Edition (Java EE) 7 JAX-RS 2.0 do WebSphere Application Server. |
Não |
| O pacote org.apache.wink.common.model.multipart não está disponível | Na implementação de Java Platform, Enterprise Edition (Java EE) 7 JAX-RS 2.0 do
WebSphere Application Server, o pacote
org.apache.wink.common.model.multipart foi substituído pelo pacote
com.ibm.websphere.jaxrs20.multipart da IBM. |
Não |
| Use os métodos isReadable e isWriteable para verificar o tipo de mídia | Na implementação de Java Platform, Enterprise Edition (Java EE) 7 JAX-RS 2.0 do
WebSphere Application Server, as interfaces MessageBodyReader e
MessageBodyWriter com as anotações @Consumes e @Produces podem
restringir os tipos de mídia que elas suportam. |
Não |
JMS Client 2.0
| Nome da regra | Descrição da regra | Correção automatizada |
|---|---|---|
| Verificar uma mudança de comportamento na prioridade da mensagem e no atributo NoLocal | JAXB e XML Binding anteriores a 4.0 fornecem a classe Validator descontinuada. Esta classe está indisponível no XML Binding 4.0 pois a validação sob demanda não é mais suportada. |
Não |
| Verificar uma mudança de comportamento nos métodos setClientID e createDurableSubscriber | Essa regra sinaliza os métodos javax.jms.Session.createDurableSubscriber, javax.jms.TopicSession.createDurableSubscriber e javax.jms.Connection.setClientID porque eles lançam exceções diferentes no cliente JMS 2.0. |
Não |
Servlet 3.1
| Nome da regra | Descrição da regra | Correção automatizada |
|---|---|---|
| Verificar uma mudança de comportamento no processamento do elemento absolute-ordering | No Servlet 3.0, se o atributo metadata-complete for definido como "true", todos os arquivos de fragmentos da Web serão usados independentemente de serem referenciados no elemento <absolute-ordering> no arquivo web.xml. No Servlet 3.1, os fragmentos da Web que não estão listados no elemento <absolute-ordering> são excluídos do processamento. | Não |
| Verificar uma mudança de comportamento nos servlets assíncronos | No Servlet 3.0, se uma sequência de consultas for incluída com uma solicitação, essa sequência será disponibilizada para o recurso despachado. No Servlet 3.1, se uma sequência de consultas for fornecida para o recurso de despacho, essa sequência de consultas será disponibilizada para o recurso despachado, em vez da sequência de consultas da solicitação original. | Não |
| Verificar uma mudança de comportamento no método getServerInfo | Essa regra sinaliza referências ao método javax.servlet.ServletContext.getServerInfo() porque a implementação do recurso do Servlet 3.1 retorna um valor diferente daquele que é retornado pela implementação do recurso do Servlet 3.0. | Não |
| Verificar uma mudança de comportamento no método sendRedirect | Essa regra sinaliza referências ao método javax.servlet.http.HttpServletResponse.sendRedirect(String) porque o comportamento padrão para URLs relativas na implementação do recurso do Servlet 3.1 é diferente na implementação do Servlet 3.0. | Não |
| Verificar uma mudança de comportamento na interface ServletContextListener | As classes que implementam a interface javax.servlet.ServletContextListener devem ser anotadas com a anotação javax.servlet.annotation.WebListener ou ser definidas como listener-class no arquivo web.xml ou web-fragment.xml. | Não |
| Verificar uma mudança de comportamento no método setComment | Essa regra sinaliza referências ao método javax.servlet.SessionCookieConfig.setComment() porque a implementação do recurso do Servlet 3.1 lança uma IllegalStateException após o contexto de servlet ser inicializado, enquanto o Servlet 3.0 não faz isso. | Não |
| Verificar uma mudança de comportamento em relação a elementos duplicados nos descritores da web | No Servlet 3.0, um aplicativo pode ser implantado mesmo que os descritores da Web contenham elementos <ordering> ou <absolute-ordering> duplicados. No Servlet 3.1, um aplicativo com esses elementos duplicados não pode ser implementado. | Não |
| Verificar uma mudança de comportamento com a mesclagem de destino da injeção de referência de recurso | O comportamento da mesclagem de destino de injeção de referência de recurso na implementação do recurso do Servlet 3.1 é diferente na implementação do Servlet 3.0. O comportamento do aplicativo existente pode mudar por causa dos destinos de injeção recém-ativados definidos no arquivo web-fragment.xml que foram anteriormente excluídos do arquivo web.xml. | Não |
| Verificar uma mudança de comportamento com o mapeamento padrão de URL | No Servlet 3.0, um aplicativo será iniciado com êxito, ainda que o mesmo padrão de URL esteja mapeado para vários servlets. No Servlet 3.1, o aplicativo não é iniciado e lança uma exceção. | Não |
| Verifique se há novos métodos incluídos no javax.servlet.ServletOutputStream e no javax.servlet.ServletInputStream | O servlet 3.1 apresenta novos métodos em javax.servlet.ServletOutputStream e javax.servlet.ServletInputStream. Esses métodos não foram incluídos no Servlet 3.0 e devem ser implementados ao migrar para o Servlet 3.1. | Não |
OpenJPA para JPA EclipseLink
| Nome da regra | Descrição da regra | Correção automatizada |
|---|---|---|
| Desativar o cache de segundo de nível da unidade de persistência | O OpenJPA desativa o cache de segundo nível por padrão, enquanto o EclipseLink ativa-o por padrão. Use a correção rápida para modificar a configuração do cache de unidade de persistência para manter o mesmo comportamento de armazenamento em cache em EclipseLink. | java-ee-7.yml org.openrewrite.java.migrate.JpaCacheProperties |
| Não usar provedores OpenJPA no arquivo persistence.xml | Use o provedor JPA padrão em vez de um provedor específico do OpenJPA ao migrar de OpenJPA para EclipseLink. | java-ee-7.yml org.openrewrite.java.migrate.javaee7.OpenJPAPersistenceProvider |
| Não use sequências do OpenJPA para propriedades ou dicas de consulta | As sequências definidas por OpenJPA usadas para propriedades e dicas de consulta devem ser substituídas por um EclipseLink equivalente, onde disponível. | Não |
| OpenJPA para EclipseLink informações e possíveis problemas | Esta regra contém informações gerais sobre a migração para Java EE 7 ( OpenJPA ), bem como informações sobre problemas que o WebSphere Migration Toolkit for Application Binaries (scanner binário) não detecta. | java-ee-7.yml org.openrewrite.java.migrate.javax.openJPAToEclipseLink |
| A propriedade de configuração openjpa.LockManager deve ser migrada | A propriedade LockManager de OpenJPA, openjpa.LockManager, deve ser migrada usando uma API de bloqueio fornecido de especificação da JPA 2.1. | Não |
| A propriedade de configuração openjpa.jdbc.Schema deve ser migrada para o arquivo de mapeamento | A propriedade de esquema OpenJPA, openjpa.jdbc.Schema, deve ser migrada para a configuração de arquivo de mapeamento definida pela especificação. | Não |
| A interface org.apache.openjpa.enhance.PersistenceCapable não está disponível | A interface org.apache.openjpa.enhance.PersistenceCapable , que é inserida no momento da compilação, não está disponível para aplicativos JPA que usam a implementação WebSphere tradicional ou Liberty Java EE 7 JPA 2.1 |
Não |
| Os pacotes org.apache.openjpa não estão disponíveis | As APIs JPA org.apache.openjpa não estão disponíveis na implementação WebSphere Java EE 7 JPA 2.1. | Não |
| Os arquivos de mapeamento não são processados durante a migração do OpenJPA para o EclipseLink | O conjunto de regras de Migração de OpenJPA para EclipseLink migra os problemas localizados em anotações da JPA, mas não migra os problemas nos arquivos de mapeamento de entidade. | Não |
| As propriedades de configuração OpenJPA e WebSphere JPA devem ser migradas | As propriedades de configuração da JPA 2.0 específicas dos fornecedores OpenJPA e WebSphere devem ser migradas. Use propriedades EclipseLink e padronizadas. | Não |