Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
Guia de Migração
For Use with Red Hat JBoss Enterprise Application Platform 7.0
Resumo
Capítulo 1. Introdução
1.1. Sobre o Red Hat JBoss Enterprise Application Platform 7
O Red Hat JBoss Enterprise Application Platform 7 (JBoss EAP) é uma plataforma de middleware construída em padrões abertos e compatível com a especificação Java Enterprise Edition 7. Ele integra o WildFly Application Server 10 com um sistema de mensagens, clusterização de alta disponibilidade e outras tecnologias.
O JBoss EAP oferece uma estrutura modular que permite a habilitação de serviços apenas quando necessário, melhorando a velocidade da inicialização.
O Console de Gerenciamento e a CLI (Interface de Linha de Comando) de Gerenciamento tornam as edições dos arquivos de configuração XML desnecessárias e agregam a habilidade de utilizar script e automatizar tarefas.
O JBoss EAP fornece dois modos de operação para as instâncias do JBoss EAP: o servidor autônomo ou o domínio gerenciado. O modo de operação do servidor autônomo representa o JBoss EAP em execução como uma instância de servidor único. O modo de operação do domínio gerenciado permite o gerenciamento de múltiplas instâncias do JBoss EAP a partir de um ponto de controle único.
Além disso, o JBoss EAP inclui APIs e estruturas para o desenvolvimento rápido de aplicativos Java EE seguros e escaláveis.
1.2. Sobre o Guia de Migração
The purpose of this guide is to document the changes that are required to successfully run and deploy Red Hat JBoss Enterprise Application Platform 6 applications on Red Hat JBoss Enterprise Application Platform 7. It provides information about the new features available in this release, the deprecated and unsupported features, and any application and server configuration updates that might be required to prevent changes in application behavior.
Também fornece informação sobre ferramentas que podem ajudá-lo com a migração, como Windup, que simplifica a migração de aplicativos Java e JBoss Server Migration Tool, que atualiza a configuração do servidor.
Uma vez que o aplicativo foi implementado com êxito e esta sendo executado, pode-se fazer planos para atualizar componentes individuais para utilizar as novas funções e recursos de JBoss EAP 7.
Se você planeja migrar seus aplicativos JBoss EAP 5 diretamente para JBoss EAP 7, consulte Migrating from Older Releases of JBoss EAP.
1.3. Sobre os Upgrades e as Migrações
Lançamentos Principais
A major upgrade or migration is required when an application is moved from one major release to another, for example, from JBoss EAP 6 to JBoss EAP 7. This is the type of migration addressed in this guide. If an application follows the Java EE specifications, does not access deprecated APIs, and does not contain proprietary code, it might be possible to run the application in JBoss EAP 7 without any application code changes. However, server configuration has changed in JBoss EAP 7 and any server configuration settings require migration.
Updates de Manutenção
JBoss EAP periodically provides point releases, which are minor updates that include bug fixes, security fixes, and new features. The JBoss EAP Patching and Upgrading Guide describes how to upgrade from one point release to another, for example from JBoss EAP 7.0 to JBoss EAP 7.1.
Patches Cumulativos
JBoss EAP also periodically provides cumulative patches that contain bug and security fixes. Cumulative patches increment the release by the last digit, for example from 7.0.0 to 7.0.1. Patch installation is covered in detail in the JBoss EAP Patching and Upgrading Guide.
1.4. Sobre o Uso do EAP_Home neste Documento
Neste documento, a variável EAP_HOME
é usada para denotar o caminho para a instalação do JBoss EAP. Substitua esta variável pelo caminho atual da sua instalação do JBoss EAP 7.
-
Caso você tenha instalado o JBoss EAP usando o método de instalação ZIP, o diretório de instalação será o diretório
jboss-eap-7.0
, de onde você extraiu o arquivo ZIP. -
Caso você tenha instalado o JBoss EAP usando o método de instalação RPM, o diretório de instalação será
/opt/rh/eap7/root/usr/share/wildfly/
. Caso você tenha usado o instalador para instalar o JBoss EAP, o caminho padrão para o
EAP_HOME
será${user.home}/EAP-7.0.0
:-
Para o Red Hat Enterprise Linux, Solaris e HP-UX:
/home/USER_NAME/EAP-7.0.0/
-
Para o Microsoft Windows:
C:\Users\USER_NAME\EAP-7.0.0\
-
Para o Red Hat Enterprise Linux, Solaris e HP-UX:
Caso você tenha usado o instalador do JBoss Developer Studio para instalar e configurar o servidor do JBoss EAP, o caminho padrão para o
EAP_HOME
será${user.home}/jbdevstudio/runtimes/jboss-eap
:-
Para o Red Hat Enterprise Linux:
/home/USER_NAME/jbdevstudio/runtimes/jboss-eap/
-
Para o Microsoft Windows:
C:\Users\USER_NAME\jbdevstudio\runtimes\jboss-eap
ouC:\Documents e Settings\USER_NAME\jbdevstudio\runtimes\jboss-eap\
-
Para o Red Hat Enterprise Linux:
O EAP_HOME
não é uma variável de ambiente. Já o JBOSS_HOME
é a variável de ambiente usada em scripts.
Capítulo 2. Preparação para a Migração
2.1. Visão Geral da Preparação
In JBoss EAP 7, an effort was made to provide backward compatibility for JBoss EAP 6 applications. However, if your application uses features that were deprecated or functionality that was removed from JBoss EAP 7, you might need to make changes to your application code.
In addition, a number of things have changed in this release that might impact deployment of JBoss EAP 7 applications. It is recommended that you do some research and planning before you attempt to migrate your application.
- Familiarize-se com os recursos do Java EE 7.
- Revise o que há de novo no JBoss EAP 7.
- Revise a lista dos recursos preteridos e sem suporte.
- Review the material in the JBoss EAP 7 Getting Started Guide.
- Dê uma olhada nas ferramentas que podem auxiliar as tarefas de migração.
Depois que você se familiarizar com as alterações dos recursos, com os materiais de desenvolvimento e as ferramentas que podem auxiliar os seus eforços de migração, você pode começar a avaliar os seus aplicativos e a configuração do seu servidor para determinar as alterações necessárias para a execução do JBoss EAP 7.
2.2. Revise os Recursos do Java EE 7
O Java EE 7 inclui diversas melhorias para facilitar o desenvolvimento e a execução dos aplicativos com muitos recursos em nuvens públicas e privadas. Ele incorpora novos recursos e os padrões mais recentes, como HTML5, WebSocket, JSON, Batch e Concurrency Utilities. As atualizações incluem JPA 2.1, JAX-RS 2.0, Servlet 3.1, Expression Language 3.0, JMS 2.0. JSF 2.2, EJB 3.2, CDI 1.2 e Bean Validation 1.1.
Você pode encontrar mais informações sobre o Java EE 7, incluindo tutoriais, no site do Oracle: Java EE at a Glance
2.3. Revise O Que Há de Novo no JBoss EAP 7
O JBoss EAP 7 inclui algumas melhorias e upgrades importantes com relação ao último lançamento.
- Java EE 7
- O JBoss EAP 7 é uma implementação certificada do Java EE 7, satisfazendo os perfis Web e Completo. Ele também inclui suporte para as iterações mais recentes do CDI 1.2 e Web Sockets 1.1.
- Undertow
- O Undertow é um servidor web eficaz, flexível e leve que faz parte do JBoss EAP 7, substituindo o JBoss Web. Escrito em Java, ele foi designado para máxima escalabilidade e produtividade e fornece suporte às tecnologias da web mais recentes, como o novo padrão HTTP/2.
- Apache ActiveMQ Artemis
- O Apache ActiveMQ Artemis é o novo provedor de mensagens interno do JBoss EAP 7. Baseado na doação de código do HornetQ, este subprojeto de Apache fornece um desempenho excelente baseado em uma arquitetura não bloqueadora comprovada.
- IronJacamar 1.2
- O IronJacamar mais recente fornece um suporte estável e com muitos recursos ao JCA e DataSources.
- JBossWS 5
- The fifth generation of JBossWS is a major leap forward, bringing new features and performance improvements to JBoss EAP 7 web services.
- RESTEasy 3
- O JBoss EAP 7 inclui a última geração do RESTEasy. Ela vai além das APIs EE REST Java padrão (JAX-RS 2.0), fornecendo várias extensões úteis, como JSON Web Encryption, Jackson, YAML, JSON-P e Jettison.
- OpenJDK ORB
- O JBoss EAP 7 substituiu a implementação do JacORB IIOP com uma ramificação downstream do OpenJDK ORB, gerando melhor interoperabilidade para o JVM ORB e o Java EE RI.
- Clusterização Repleta de Recursos
- O suporte de clusterização foi altamente refatorado no JBoss EAP 7 e inclui várias APIs públicas para o acesso de aplicativos.
- Redução de Porta
- Ao utilizar o upgrade do HTTP, o JBoss EAP 7 mudou praticamente todos os protocolos para serem multiplexados via duas portas HTTP apenas: uma porta de gerenciamento (9990) e uma porta do aplicativo (8080).
- Registro em Log Avançado
- Agora a API de gerenciamento fornece suporte para a habilidade de listar e visualizar os arquivos de log disponíveis em um servidor, ou até mesmo definir formatadores personalizados além do formatador padrão. A configuração do registro em log da implantação também foi amplamente melhorada.
For a complete list of new features, see New Features and Enhancements in the JBoss EAP 7 Release Notes.
2.4. Verifique a lista de recursos preteridos e sem suporte
Before you migrate your application, be aware that some features that were available in previous releases of JBoss EAP might be deprecated or no longer supported.
O suporte para algumas tecnologias foi removido devido ao alto custo de manutenção, pouco interesse da comunidade e soluções alternativas muito melhores. O que segue é um breve resumo de alguns dos recursos sem suporte.
- EJB Entity Beans
- EJB entity beans não são mais suportados. Caso seu aplicativo utilizar EJB entity beans, você deve migrar o código para usar JPA, que oferece uma API muito mais eficiente e flexível.
- JAX-RPC
- Como JAX-WS offerece uma solução muito mais precisa e completa, o código escrito para JAX-RPC deve ser migrado para utilizar JAX-WS.
- JSR-88
- A especificação de API de implantação de aplicativos Java EE (JSR-88), que definia um contrato para habilitar ferramentas de múltiplos fornecedores para configurar e implantar aplicativos em qualquer produto de plataforma Java EE, não foi amplamente adotada. Você deve utilizar outra opção do JBoss EAP com suporte para implantação de aplicativos, como o console de gerenciamento, a CLI de gerenciamento, o escâner de implantação ou Maven.
- Adaptador de recursos genéricos JMS
- A possibilidade de configurar um adaptador de recurso JMS genérico para conectar a um provedor JMS não é mais suportada no JBoss EAP 7.
For a comprehensive list of deprecated and unsupported features, see Unsupported and Deprecated Functionality in the JBoss EAP 7 Release Notes.
2.5. Verifique a documentação de introdução do JBoss EAP
Be sure to review the JBoss EAP Getting Started Guide. It contains the following important information:
- Como baixar e instalar o JBoss EAP 7
- Como baixar e instalar o Red Hat JBoss Developer Studio
- Como configurar o Maven para seu ambiente de desenvolvimento, gerenciar dependências de projetos e configurar seus projetos para utilizar artefatos da Estrutura de Produtos (BOM) do JBoss EAP
- Como baixar e executar os aplicativos de exemplo de início rápido que são enviados com o produto.
2.6. Análise e Planejamento de Migração
Each application and server configuration is unique and you must thoroughly understand the components and architecture of the existing application and server platform before you attempt the migration. Your migration plan should include a detailed roadmap for testing and roll out to production that takes into account the following information.
- Identifica as pessoas responsáveis pela migração
- Identifica as partes interessadas, gerentes de projeto, desenvolvedores, administradores e outros que serão responsáveis pela migração.
- Verifica a configuração da plataforma do servidor de aplicativos e hardware
Analisa o servidor de aplicativos existente e configurações de plataforma para determinar como eles são impactados pelas alterações de recursos no JBoss EAP 7. A análise deve incluir os seguintes itens:
- Sistemas operacionais e versões
- Banco de dados utilizados pelos aplicativos
- Servidores da Web
- Arquitetura de segurança
- Número e tipo de processadores
- Quantidade de memória
- Quantidade de armazenamento no disco físico
- Migração de banco de dados ou dados de mensagem
- Other components that might be impacted by the migration
- Verifique o ambiente de produção atual
Você deve planejar a criação do ambiente de produção o mais semelhante quanto possível para testar e preparar o processo de migração.
- Take into account any clustering configurations. See Upgrading a Cluster in the JBoss EAP Patching and Upgrading Guide for more information about how to migrate clusters.
- Caso você esteja atualmente executando em um domínio gerenciado amplo, considere uma abordagem gradual de migração.
- Determine se você precisa migrar algum banco de dados ou dados de mensagens
- Examine e entenda os aplicativos existentes
Examine minuciosamente o aplicativo JBoss EAP 6 existente. Esteja totalmente familiarizado com sua arquitetura, funções, recursos e componentes, incluindo:
- A versão JVM
- Integração com outros componentes middleware de servidores dos aplicativos da Red Hat
- Integração com software proprietário de terceiros
- Utilização de recursos preteridos que precisarão ser substituídos
- Configuração de aplicativos incluindo descritor de implementação, JNDI, persistência, configuração JDBC e pooling, tópicos JMS e filas, e registro em log.
Identificar quaisquer incompatibilidades de código ou configuração que necessitarão modificações durante a migração para JBoss EAP 7.
- Crie um plano teste detalhado
- O plano deve incluir teste de regressão e requisitos de critérios de aceitação.
- Deve também incluir teste de desempenho.
- Estabeleça um ambiente de teste tão semelhante quanto possível do ambiente de produção para testar a migração antes do lançamento para produção.
- Tenha certeza de que criou um backup e um plano de backup!
- Verifique os recursos disponíveis para o processo de migração
- Avalie as competências da equipe de desenvolvimento e planeje treinamento ou auxílio de consultoria suplementar.
- Esteja ciente de que serão necessários hardwares suplementares e outros recursos para preparar e testar durante o processo de migração até que a tarefa esteja completa.
- Determine se qualquer treinamento formal será necessário. Caso afirmativo, adicione ao cronograma.
- Execute o plano
- Reúna os recursos necessários e implemente o plano de migração.
Antes de fazer quaisquer modificações em seus aplicativos, tenha certeza de que criou uma cópia de backup.
2.7. Faça um backup dos dados importantes e verifique o estado do servidor
Antes de migrar seu aplicativo, você precisa estar ciente dos possíveis problemas:
-
The migration might remove temporary folders. Any deployments stored in the
data/content/
directory must be backed up prior to the migration and restored after it completes. Otherwise, the server will fail to start due to the missing content. -
Antes da migração, finalize quaisquer transações abertas e exclua o diretório de transação
data/tx-object-store/
. -
Os dados de temporizadores persistentes em
data/timer-service-data
devem ser checados para determinar caso sejam compatíveis. Antes da migração, cheque os arquivosdeployment-*
naquele diretório para determinar quais temporizadores ainda estão em uso.
Certifique-se também de fazer o backup das configurações do servidor atual e aplicativos antes de começar.
2.8. Migrando uma instalação RPM
Não é fornecido suporte para mais de uma instância de RPM instalada de JBoss EAP em um único Servidor Red Hat Enterprise Linux. Como resultado, nós recomendamos que você migre sua instalação do JBoss EAP para uma nova máquina quando migrar para JBoss EAP 7.
Quando migrar uma instalação RPM de JBoss EAP a partir do JBoss EAP 6 para JBoss EAP 7, certifique-se que JBoss EAP 7 esteja instalado em uma máquina que não tem uma instalação RPM de JBoss EAP existente.
To install JBoss EAP 7 using RPMs, see the JBoss EAP Installation Guide.
The migration advice in this guide also applies to migrating RPM installations of JBoss EAP, but you might need to alter some steps (such as how to start JBoss EAP) to suit an RPM installation compared to a ZIP or installer installation.
2.9. Migrar o JBoss EAP para ser executado como um serviço
If you run JBoss EAP 6 as a service, be sure to review Configuring JBoss EAP to Run as a Service in the JBoss EAP Installation Guide for updated configuration instructions for JBoss EAP 7.
Capítulo 3. Ferramentas para auxiliar a migração
3.1. Utilize Windup para analisar aplicativos para migração
O Windup, que faz parte do conjunto de ferramentas de migração do Red Hat JBoss, é uma ferramenta extensível e personalizável baseada em regras que auxiliam simplificar a migração de aplicativos Java. Esta ferramenta analisa APIs, tecnologias e arquiteturas utilizadas pelos aplicativos que você planeja migrar e fornece relatórios detalhados de migração para cada aplicativo. Estes relatórios fornecem as seguintes informações:
- Explicações detalhadas das alterações necessárias para migração
- Se as alterações relatadas são obrigatórias ou opcionais
- Se as alterações relatadas são complexas ou triviais
- Links para códigos que necessitam de alterações para migração
- Dicas e links de informação sobre como fazer as alterações necessárias
- Uma estimativa do nível de esforço para cada questão de migração encontrada e um total de esforço para migrar o aplicativo
Você pode utilizar Windup para analisar o código e arquitetura do seus aplicativos JBoss EAP 6 antes de migrá-los para o JBoss EAP 7. O conjunto de regras do Windup para migração do JBoss EAP 6 para o JBoss EAP 7 relata em descritores XML e códigos de aplicativos específicos e parâmetros que precisam ser substituídos por uma configuração alternativa quando migrar para o JBoss EAP 7.
Para mais informações sobre como usar Windup para analisar seu JBoss EAP 6 applications, consulte o Windup User Guide.
3.2. Utilize a ferramenta de migração do servidor JBoss para migrar as configurações de servidor
A ferramenta de migração de servidor JBoss, que está atualmente em desenvolvimento, será o método preferido para atualizar sua configuração para incluir os novos recursos e configurações no JBoss EAP 7 enquanto mantém sua configuração existente.
A ferramenta de migração de servidor JBoss lê seu arquivo de configuração de servidor JBoss EAP 6 existente e adiciona configurações para os novos subsistemas, atualiza configurações de subsistemas existentes com novos recursos e remove configurações de subsistemas obsoletas.
O mais recente pré-lançamento de distribuição binária do JBoss Server Migration Tool está disponível para download em https://github.com/wildfly/wildfly-server-migration/releases. Esta versão suporta migração de servidores autônomos do JBoss EAP 6.4 para JBoss EAP 7.0. Para informações gerais sobre como executar a ferramenta, consulte o Guia do Usuário do JBoss Server Migration Tool.
A versão de pré-lançamento do JBoss Server Migration Tool no momento ainda não é suportada.
Capítulo 4. Mudanças de configuração de servidor
4.1. Opções de migração de configuração de servidor
Para migrar sua configuração de servidor do JBoss EAP 6 para JBoss EAP 7, você pode utilizar a ferramenta de migração do servidor JBoss ou fazer uma migração manual com o auxílio da operação migrate
da CLI de gerenciamento.
Ferramenta de migração de servidor JBoss
A ferramenta de migração de servidor JBoss, que está atualmente em desenvolvimento, será o método preferido para atualizar sua configuração para incluir os novos recursos e configurações no JBoss EAP 7 enquanto mantém sua configuração existente.
Operação de migração da CLI de gerenciamento
Você pode utilizar a operação migrate
da CLI de gerenciamento para atualizar os subsistemas jacorb
, messaging
e web
no arquivo de configuração do servidor JBoss EAP 6 para permitir que executem na nova versão, mas esteja ciente de que o resultado não é uma configuração completa JBoss EAP 7. Por exemplo:
-
A operação não atualiza o protocolo original
remoto
e configurações de porta para o novohttp-remoting
e novas configurações de porta utilizadas agora no JBoss EAP 7. - A configuração não inclui os novos subsistemas de JBoss EAP ou funcionalidades tais como implantações singleton clusterizadas ou desligamento ordenado.
- A configuração não inclui os novos recursos de Java EE 7 como processamento batch.
-
A operação
migrate
não migra as configurações do subsistemaejb3
. Para informação sobre possíveis problemas com migração de EJB , consulte EJB Server Configuration Changes.
Para mais informação sobre como utilizar a operação migrate
para migração da configuração do servidor, consulte Operação de migração da CLI de gerenciamento.
4.2. Operação de migração da CLI de gerenciamento
Você pode utilizar a CLI de gerenciamento para atualizar seus arquivos de configurações do servidor JBoss EAP 6 para executar em JBoss EAP 7. A CLI de gerenciamento fornece uma operação de migração
para atualizar automaticamente os subsistemas jacorb
, messaging
e web
da versão anterior para a nova configuração. Você pode também executar a operação describe-migration
para os subsistemas jacorb
, messaging
eweb
para revisar as mudanças de configuração de migração propostas, antes que você execute a migração. Não há substitutos para os subsistemas cmp
, jaxr
outhreads
e eles devem ser removidos das configurações do servidor.
Consulte as Opções de migração de configurações de servidor para limitações da operação migrate
. A ferramenta de migração do servidor JBoss, que está atualmente em desenvolvimento, será o método preferido para atualizar sua configuração para incluir os novos recursos e configurações em JBoss EAP 7 enquanto mantém sua configuração existentes.
Tabela 4.1. Migração de subsistemas e operação de Cli de gerenciamento
Subsistema JBoss EAP 6 | Subsistema JBoss EAP 7 | Operação de CLI de gerenciamento |
---|---|---|
cmp |
sem substitução |
remove |
jacorb |
iiop-openjdk |
migrate |
jaxr |
sem substitução |
remove |
messaging |
messaging-activemq |
migrate |
threads |
sem substitução |
remove |
web |
undertow |
migrate |
Inicie o servidor e a CLI de gerenciamento
Siga as etapas abaixo para atualizar sua configuração do servidor JBoss EAP 6 para executar em JBoss EAP 7.
- Antes de começar, verifique Backup de dados importantes e revisão do estado do servidor . Isto contém informações importantes sobre a verificação do bom estado do servidor e o backup de arquivos adequados.
Inicie o servidor JBoss EAP 7 com a configuração do JBoss EAP 6.
- Faça o backup dos arquivos do servidor JBoss EAP 7.
Copie o arquivo de configuração da versão anterior no diretório do JBoss EAP 7.
$ cp EAP6_HOME/standalone/configuration/standalone-full.xml EAP7_HOME/standalone/configuration
Navegue para o diretório de instalação do JBoss EAP 7 e inicie o servidor com o argumento
--admin-only
.$ bin/standalone.sh -c standalone-full.xml --admin-only
NotaVocê irá ver os seguintes ERROS
org.jboss.as.controller.management-operation
no registro do servidor quando você iniciar o servidor. Esses erros são previstos e indicam que as configurações de subsistemas legados devem ser removidas ou migradas para o JBoss EAP 7.- WFLYCTL0402: Subsistemas [cmp] fornecidos por extensão legada 'org.jboss.as.cmp' não têm suporte nos servidores executando esta versão. Ambos o subsistema e a extensão devem ser removidos ou migrados antes que o servidor funcione.
- WFLYCTL0402: Subsistemas [jacorb] fornecidos por extensão legada 'org.jboss.as.jacorb' não têm suporte em servidores executando esta versão. Ambos o subsistema e a extensão devem ser removidos ou migrados antes que o servidor funcione.
- WFLYCTL0402: Subsistemas [jaxr] fornecidos por extensão legada 'org.jboss.as.jaxr' não têm suporte nos servidores executando esta versão. Ambos o subsistema e a extensão devem ser removidos ou migrados antes que o servidor funcione.
- WFLYCTL0402: Subsistemas [messaging] fornecidos por extensão legada 'org.jboss.as.messaging' não têm suporte nos servidores executando esta versão. Ambos o subsistema e a extensão devem ser removidos ou migrados antes que o servidor funcione.
- WFLYCTL0402: Subsistemas [threads] fornecidos por extensão legada 'org.jboss.as.threads' não têm suporte nos servidores executando esta versão. Ambos o subsistema e a extensão devem ser removidos ou migrados antes que o servidor funcione.
- WFLYCTL0402: Subsistemas [web] fornecidos por extensão legada 'org.jboss.as.web' não têm suporte nos servidores executando esta versão. Ambos o subsistema e a extensão devem ser removidos ou migrados antes que o servidor funcione.
Abra um novo terminal, navegue para o diretório de instalação do JBoss EAP 7 e inicie a CLI de gerenciamento utilizando os argumentos
--controller=remote://localhost:9999
.$ bin/jboss-cli.sh --connect --controller=remote://localhost:9999
Migrar JacORB, Messaging e subsistemas Web
Para revisar as alterações de configurações que serão efetuadas ao subsistema antes de você realizar a migração, execute a operação
describe-migration
.A operação
describe-migration
utiliza a seguinte sintaxe./subsystem=SUBSYSTEM_NAME:describe-migration
O exemplo seguinte descreve as alterações de configuração que serão efetuadas no arquivo de configuração do
standalone-full.xml
do JBoss EAP 6.4 quando for migrado para JBoss EAP 7. As entradas foram removidas da saída para melhorar legibilidade e economizar espaço.Exemplo: operação describe-migration
[standalone@localhost:9999 /] /subsystem=messaging:describe-migration { "outcome" => "success", "result" => { "migration-warnings" => [], "migration-operations" => [ { "operation" => "add", "address" => [("extension" => "org.wildfly.extension.messaging-activemq")], "module" => "org.wildfly.extension.messaging-activemq" }, { "operation" => "add", "address" => [("subsystem" => "messaging-activemq")] }, <!-- *** Entries removed for readability *** --> { "operation" => "remove", "address" => [("subsystem" => "messaging")] }, { "operation" => "remove", "address" => [("extension" => "org.jboss.as.messaging")] } ] } }
Execute a operação
migrate
para migrar a configuração do subsistema para o subsistema que o substitui no JBoss EAP 7. A operação utiliza a seguinte sintaxe./subsystem=SUBSYSTEM_NAME:migrate
NotaO subsistema
messaging
describe-migration
e operaçõesmigrate
permitem que você passe um argumento para configurar acesso pelo cliente legado. Para mais informções sobre a sintaxe do comando, consulte Messaging Subsystem Migration and Forward Compatibility.Verifique o desfecho e o resultado do comando. Certifique-se que a operação foi completada com êxito e não há entradas de "migration-warning". Isto significa que a configuração de migração para o subsistema está completa.
Exemplo: operação de migração com êxito sem alertas
[standalone@localhost:9999 /] /subsystem=messaging:migrate { "outcome" => "success", "result" => {"migration-warnings" => []} }
Se você vir entradas "migration-warnings" no registro, isto indica que a migração das configurações do servidor foram completadas com sucesso porém não foi possível migrar todos os elementos e atributos. Você deve seguir as sugestões fornecidas pelos "migration-warnings" e executar comandos suplementares da CLI de gerenciamento para modificar essas configurações. O que segue é um exemplo de uma operação
migrate
que retorna "migration-warnings".Examplo: operação de migração com alertas
[standalone@localhost:9999 /] /subsystem=messaging:migrate { "outcome" => "success", "result" => {"migration-warnings" => [ "WFLYMSG0080: Could not migrate attribute group-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupB\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute group-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupB\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute local-bind-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute local-bind-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute group-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute group-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group." ]} }
NotaA lista de alertas
migrate
edescribe-migration
para cada subsistema está localizada no Material de Referência no final deste guia.Revise o arquivo de configuração de servidor para verificar se extensão, subsistema e espaço de nomes foram atualizados e as configurações dos subsistemas existentes foram migradas para o JBoss EAP 7.
NotaVocê deve repetir este processo para cada um dos subsistemas
jacorb
,messaging
eweb
, usando os seguintes comandos./subsystem=jacorb:migrate /subsystem=messaging:migrate /subsystem=web:migrate
Remova os subsistemas
cmp
,jaxr
ethreads
e extensões da configuração do servidor.Enquanto ainda no prompt de comando da CLI de gerenciamento, remova os subsistemas obsoletos
cmp
,jaxr
ethreads
executando os seguintes comandos./subsystem=cmp:remove /extension=org.jboss.as.cmp:remove /subsystem=jaxr:remove /extension=org.jboss.as.jaxr:remove /subsystem=threads:remove /extension=org.jboss.as.threads:remove
Você deve migrar os subsistemas messaging
, jacorb
e web
e remover as extensões e subsistemas cmp
, jaxr
, e threads
antes de reiniciar o servidor para operação normal. Se você precisar reiniciar o servidor antes de completar este processo, certifique-se de que incluiu o argumento --admin-only
na linha de comando do início do servidor. Isto permitirá que você continue com as alterações de configuração.
4.3. Alterações de prefixos dos registros de mensagens
Os registros de mensagens são prefixados com o código do projeto para o subsistema que relata a mensagem. Os prefixos para todos os registros de mensagens foram alterados no JBoss EAP 7.
For a complete list of the new log message project code prefixes used in JBoss EAP 7, see Project Codes Used in JBoss EAP in the JBoss EAP Development Guide.
4.4. Alterações de configurações do servidor web
4.4.1. Substituição do subsistema web com Undertow
O Undertow substitui JBoss Web como um servidor web no JBoss EAP 7. Isto significa que a configuração do subsistema web
legada deve ser migrada para a nova configuração de subsistema undertow
do JBoss EAP 7.
-
Os espaço de nomes da configuração de subsistema
urn:jboss:domain:web:2.2
no arquivo de configuração do servidor foi substituído pelo espaço de nomesurn:jboss:domain:undertow:3.1
. -
O módulo de extensão
org.jboss.as.web
, localizado emEAP_HOME/modules/system/layers/base/
, foi substituído pelo módulo de extensãoorg.wildfly.extension.undertow
.
Você pode utilizar a operação migrate
da CLI de gerenciamento para migrar os subsistemas web
para undertow
no arquivo de configuração do servidor. Porém, esteja ciente que esta operação não é capaz de migrar todas as configurações dos subsistemas do JBoss Web. Se você vir entradas "migration-warning", você deve executar comandos suplementares da CLI de gerenciamento para migrar estas configurações para Undertow. Para mais informações sobre a operação migrate
da CLI de gerenciamento, consulte Operação de migração da CLI de gerenciamento..
Segue abaixo um exemplo de configuração de subsistema web
padrão no JBoss EAP 6.
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false"> <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> <virtual-server name="default-host" enable-welcome-root="true"> <alias name="localhost"/> <alias name="example.com"/> </virtual-server> </subsystem>
Segue abaixo um exemplo de configuração de subsistema undertow
padrão no JBoss EAP 7.
<subsystem xmlns="urn:jboss:domain:undertow:3.1"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="default" socket-binding="http" redirect-socket="https"/> <host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <filter-ref name="server-header"/> <filter-ref name="x-powered-by-header"/> </host> </server> <servlet-container name="default"> <jsp-config/> <websockets/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> <filters> <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/> <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/> </filters> </subsystem>
4.4.2. Migrar as condições de regravação do JBoss Web
A operação migrate
da CLI de gerenciamento não é capaz de migrar automaticamente condições de regravação. Elas são relatadas como "migration-warnings" e você deve migrá-las manualmente. Você pode criar a configuração equivalente no JBoss EAP 7 ao utilizar Undertow Predicates Attributes and Handlers.
Segue abaixo um exemplo de configuração de subsistema web
no JBoss EAP 6 que inclui configuração rewrite
.
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default" native="false"> <virtual-server name="default" enable-welcome-root="true"> <alias name="localhost"/> <rewrite name="test" pattern="(.*)/toberewritten/(.*)" substitution="$1/rewritten/$2" flags="NC"/> <rewrite name="test2" pattern="(.*)" substitution="-" flags="F"> <condition name="get" test="%{REQUEST_METHOD}" pattern="GET"/> <condition name="andCond" test="%{REQUEST_URI}" pattern=".*index.html" flags="NC"/> </rewrite> </virtual-server> </subsystem>
Siga as instruções da operação de migração da CLI de gerenciamento para iniciar seu servidor e a CLI de gerenciamento, depois migre o arquivo de configuração de subsistema web
utilizando o seguinte comando:
/subsystem=web:migrate
Os seguintes "migration-warnings" são relatados quando você executa a operação migrate
no configuração acima.
/subsystem=web:migrate { "outcome" => "success", "result" => {"migration-warnings" => [ "WFLYWEB0002: Could not migrate resource { \"pattern\" => \"(.*)\", \"substitution\" => \"-\", \"flags\" => \"F\", \"operation\" => \"add\", \"address\" => [ (\"subsystem\" => \"web\"), (\"virtual-server\" => \"default-host\"), (\"rewrite\" => \"test2\") ] }", "WFLYWEB0002: Could not migrate resource { \"test\" => \"%{REQUEST_METHOD}\", \"pattern\" => \"GET\", \"flags\" => undefined, \"operation\" => \"add\", \"address\" => [ (\"subsystem\" => \"web\"), (\"virtual-server\" => \"default-host\"), (\"rewrite\" => \"test2\"), (\"condition\" => \"get\") ] }", "WFLYWEB0002: Could not migrate resource { \"test\" => \"%{REQUEST_URI}\", \"pattern\" => \".*index.html\", \"flags\" => \"NC\", \"operation\" => \"add\", \"address\" => [ (\"subsystem\" => \"web\"), (\"virtual-server\" => \"default-host\"), (\"rewrite\" => \"test2\"), (\"condition\" => \"andCond\") ] }" ]} }
Verifique o arquivo de configuração do servidor e você verá a seguinte configuração para o subsistema undertow
.
A configuração de regravação foi abandonada.
<subsystem xmlns="urn:jboss:domain:undertow:3.1"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="http" socket-binding="http"/> <host name="default-host" alias="localhost, example.com"> <location name="/" handler="welcome-content"/> </host> </server> <servlet-container name="default"> <jsp-config/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> </subsystem>
Utilize a CLI de gerenciamento para criar o filtro para substituir a configuração de regravação no subsistema undertow
. Você deve ver "{"outcome" ⇒ "success"}" para cada comando.
# Create the filters /subsystem=undertow/configuration=filter/expression-filter="test1":add(expression="path('(.*)/toberewritten/(.*)') -> rewrite('$1/rewritten/$2')") /subsystem=undertow/configuration=filter/expression-filter="test2":add(expression="method('GET') and path('.*index.html') -> response-code(403)") # Add the filters to the default server /subsystem=undertow/server=default-server/host=default-host/filter-ref="test1":add /subsystem=undertow/server=default-server/host=default-host/filter-ref="test2":add
Verifique o arquivo de configuração do servidor atualizado. Agora o subsistema JBoss Web está completamente migrado e configurado no subsistema undertow
.
<subsystem xmlns="urn:jboss:domain:undertow:3.1"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="http" socket-binding="http"/> <host name="default-host" alias="localhost, example.com"> <location name="/" handler="welcome-content"/> <filter-ref name="test1"/> <filter-ref name="test2"/> </host> </server> <servlet-container name="default"> <jsp-config/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> <filters> <expression-filter name="test1" expression="path('(.*)/toberewritten/(.*)') -> rewrite('$1/rewritten/$2')"/> <expression-filter name="test2" expression="method('GET') and path('.*index.html') -> response-code(403)"/> </filters> </subsystem>
For more information about how to configure filters and handlers using the management CLI, see Configuring the Web Server in the JBoss EAP 7 Configuration Guide.
4.4.3. Migrar propriedades de sistemas JBoss Web
Nos lançamentos prévios de JBoss EAP, as propriedades de sistema podiam ser utilizadas para modificar o comportamento padrão de JBoss Web. Para informação sobre como configurar o mesmo comportamento em Undertow, consulte JBoss Web System Properties Migration Reference
4.4.4. Migrate JBoss Web jboss-web.xml Overlay
In JBoss EAP 6, JBoss Web supported the ability to specify additional static files for a web application using the overlay
element in the jboss-web.xml
file. This feature did not actually overlay existing files, but instead added static files to a deployment outside of the WAR archive.
In the following jboss-web.xml
file example, /tmp/mycontents/test.html
was returned by the JBoss EAP 6 server when you accessed the URL http://localhost:8080/example/test.html.
<jboss-web> <context-root>/example</context-root> <overlay>/tmp/mycontents/</overlay> </jboss-web>
Undertow, which replaces JBoss Web in JBoss EAP 7, does not support the jboss-web.xml
file overlay
feature.
4.4.5. Migrar válvulas globais
As versões anteriores do JBoss EAP tinham suporte de válvulas. Válvulas são classes personalizadas inseridas na pipeline de processamento de solicitações para um aplicativo antes de filtros servlet para fazer alterações às solicitações ou executar processamento adicional.
- Válvula globais são inseridas na pipeline de processamento de solicitações de todos os aplicativos implantados e são configuradas no arquivo de configuração do servidor.
- Válvulas do autenticador autenticam as credenciais da solicitação.
-
Aplicativos personalizados foram criados através da extensão da classe
org.apache.catalina.valves.ValveBase
e configurados no elemento<valve>
do arquivo descritorjboss-web.xml
. Estas válvulas devem ser migradas manualmente.
Esta seção descreve como migrar válvulas globais. Migração de válvulas personalizadas e autenticadoras pode ser consultada na seção Migrate Custom Application Valves deste guia.
Undertow, que substitui JBoss Web no JBoss EAP 7, não suporta válvulas globais; porém, você pode conseguir funcionalidade semelhante utilizando os manipuladores Undertow. Undertow inclui um número de manipuladores integrados que fornecem funcionalidade comum. Também fornece a habilidade de criar manipuladores personalizados, que podem ser utilizados para substituir funcionalidade de válvula personalizada.
Se o seu aplicativo utilizar válvulas, você deve substituí-las com o código de manipulador Undertow adequado para obter a mesma funcionalidade quando você migrar para o JBoss EAP 7.
For more information about how to configure handlers, see Configuring Handlers in the JBoss EAP 7 Configuration Guide.
For more information about how to configure filters, see Configuring Filters in the JBoss EAP 7 Configuration Guide.
Migrar válvulas de JBoss Web
A tabela que segue lista as válvulas que foram fornecidas pelo JBoss Web nas versões anteriores do JBoss EAP e manipuladores integrados Undertow correspondentes. As válvulas JBoss Web estão localizadas no pacote org.apache.catalina.valves
.
Tabela 4.2. Mapeamento das válvulas para manipuladores
Válvula | Manipulador |
---|---|
AccessLogValve |
io.undertow.server.handlers.accesslog.AccessLogHandler |
CrawlerSessionManagerValve |
io.undertow.servlet.handlers.CrawlerSessionManagerHandler |
ExtendedAccessLogValve |
io.undertow.server.handlers.accesslog.AccessLogHandler |
JDBCAccessLogValve |
Consulte o JDBCAccessLogValve Manual Migration Procedure abaixo para instruções. |
RemoteAddrValve |
io.undertow.server.handlers.IPAddressAccessControlHandler |
RemoteHostValve |
io.undertow.server.handlers.AccessControlListHandler |
RemoteIpValve |
io.undertow.server.handlers.ProxyPeerAddressHandler |
RequestDumperValve |
io.undertow.server.handlers.RequestDumpingHandler |
RewriteValve |
Consulte Migrate JBoss Web Rewrite Conditions para instruções para migrar estas válvulas manualmente. |
StuckThreadDetectionValve |
io.undertow.server.handlers.StuckThreadDetectionHandler |
Você pode utilizar a operação migrate
da CLI de gerenciamento para migrar automaticamente válvulas globais que seguem os seguintes critérios:
- Elas estão limitadas às válvulas listadas na tabela anterior que não necessitam de processamento manual.
-
Elas devem estar definidas no subsistema
web
do arquivo de configuração do servidor.
Para mais informações sobre a operação migrate
da CLI de gerenciamento, consulte Operação de migração da CLI de gerenciamento .
Procedimento de migração manual JDBCAccessLogValve
A válvula org.apache.catalina.valves.JDBCAccessLogValve
é uma exceção à regra e não pode ser automaticamente migrada para io.undertow.server.handlers.JDBCLogHandler
. Siga os passos abaixo para migrar o seguinte exemplo de válvula.
<valve name="jdbc" module="org.jboss.as.web" class-name="org.apache.catalina.valves.JDBCAccessLogValve"> <param param-name="driverName" param-value="com.mysql.jdbc.Driver" /> <param param-name="connectionName" param-value="root" /> <param param-name="connectionPassword" param-value="password" /> <param param-name="connectionURL" param-value="jdbc:mysql://localhost:3306/wildfly?zeroDateTimeBehavior=convertToNull" /> <param param-name="format" param-value="combined" /> </valve>
- Crie um módulo de driver para o banco de dados que irá armazenar as entradas de registro.
Configure a fonte de dados para o banco de dados e adicione o driver à lista de drivers disponíveis no subsistema
datasources
.<datasources> <datasource jndi-name="java:jboss/datasources/accessLogDS" pool-name="accessLogDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://localhost:3306/wildfly?zeroDateTimeBehavior=convertToNull</connection-url> <driver>mysql</driver> <security> <user-name>root</user-name> <password>Password1!</password> </security> </datasource> ... <drivers> <driver name="mysql" module="com.mysql"> <driver-class>com.mysql.jdbc.Driver</driver-class> </driver> ... </drivers> </datasources>
Configure um
expression-filter
no subsistemaundertow
com a seguinte expressão:jdbc-access-log(datasource=DATASOURCE_JNDI_NAME)
.<filters> <expression-filter name="jdbc-access" expression="jdbc-access-log(datasource='java:jboss/datasources/accessLogDS')" /> ... </filters>
4.5. Alterações de configurações do servidor JGroups
4.5.1. JGroups é pre-definido para uma interface de rede privada
Na configuração padrão JBoss EAP 6, JGroups utilizavam a interface public
definida na seção <interfaces>
do arquivo de configuração do servidor.
Devido a recomendação da prática de utilizar uma interface de rede dedicada, por padrão, agora JGroups utiliza a nova interface private
que está definida na seção <interfaces>
do arquivo de configuração do servidor no JBoss EAP 7.
4.5.2. Alterações de Canais JGroups
O JGroups fornece suporte de comunicação em grupo para serviços de HA (Alta Disponibilidade) na forma de canais de JGroups. JBoss EAP 7 introduz elementos <channel>
ao subsistema jgroups
no arquivo de configuração de servidor. Você pode adicionar, remover ou alterar a configuração dos canais JGroup utilizando a CLI de gerenciamento.
For more information about how to configure JGroups, see Cluster Communication with JGroups in the JBoss EAP Configuration Guide.
4.6. Alterações de configuração de servidor Infinispan
4.6.1. Alterações de configurações de cachês por padrão de Infinispan
In JBoss EAP 6, the default clustered caches for web session replication and EJB replication were replicated ASYNC
caches. This has changed in JBoss EAP 7. The default clustered caches are now distributed ASYNC
caches. The replicated caches are no longer even configured by default. See Configure the Cache Mode in the JBoss EAP Configuration Guide for information about how to add a replicated cache and make it the default.
Isto somente afetará quando você utilizar a nova configuração padrão JBoss EAP 7. Se você migrar a configuração do JBoss EAP 6, a configuração do subsistema infinispan
será preservada.
4.6.2. Alterações de estratégia de cachê Infinispan
O comportamento da estratégia de cachê ASYNC
foi alterado no JBoss EAP 7.
No JBoss EAP 6, as leituras de cachê ASYNC
não eram bloqueadas. Embora elas nunca fossem bloqueadas, elas tendiam às leituras sujas de dados obsoletos, por exemplo na recuperação de falhas ( failover). Isto acontecia porque ela permitia que solicitações subsequentes para o mesmo usuário fossem iniciadas antes que a solicitação anterior tivesse sido finalizada. Esta permissividade não é aceitável quando utilizar modo distribuído, pois as alterações de topologia do cluster podem afetar a afinidade da sessão e facilmente resultar em dados obsoletos.
No JBoss EAP 7, leituras de cachê ASYNC
necessitam de bloqueios. Já que agora elas bloqueiam novas solicitação do mesmo usuário até que a replicação prévia seja finalizada, as leituras sujas são evitadas.
4.7. Alterações de configurações de servidor EJB
If you use the management CLI migrate
operation to upgrade your existing configuration, you might see exceptions in the server log when you deploy your EJB applications.
Se você utilizar o JBoss Server Migration Tool para atulizar sua configuração de servidor, o subsistema ejb3
deve ser configurado corretamente e você não deve ter nenhum problema quando você implementar seus aplicativos EJB.
DuplicateServiceException
A seguinte DuplicateServiceException
é causada ao fazer a memorização das alterações em JBoss EAP 7.
DuplicateServiceException no log do servidor
ERRO [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Falha ao iniciar serviço jboss.deployment.unit."mdb-1.0-SNAPSHOT.jar".cache-dependencies-installer: org.jboss.msc.service.StartException no serviço jboss.deployment.unit."mdb-1.0-SNAPSHOT.jar".cache-dependencies-installer: Falha ao iniciar serviço ... Causado por: org.jboss.msc.service.DuplicateServiceException: Serviço jboss.infinispan.ejb."mdb-1.0-SNAPSHOT.jar".config já esta registrado
Você deve reconfigurar o cache para resolver este erro.
- Siga as instruções para Iniciar o servidor e a CLI de gerenciamento.
Emita os seguintes comandos para reconfigurar memorização no subsistema
ejb3
./subsystem=ejb3/file-passivation-store=file:remove /subsystem=ejb3/cluster-passivation-store=infinispan:remove /subsystem=ejb3/passivation-store=infinispan:add(cache-container=ejb, max-size=10000) /subsystem=ejb3/cache=passivating:remove /subsystem=ejb3/cache=clustered:remove /subsystem=ejb3/cache=distributable:add(passivation-store=infinispan, aliases=[passivating, clustered])
4.8. Alterações de configuração do servidor de mensagens
No JBoss EAP 7, Active MQ Artemis substitui HornetQ como o fornecedor de suporte JMS. Esta seção descreve como migrar a configuração e dados de mensagens relacionados.
4.8.1. Alterações de configuração do servidor de subsistema de mensagens
O módulo de extensão org.jboss.as.messaging
, situado em EAP_HOME/modules/system/layers/base/
, foi substituído pelo módulo de extensão org.wildfly.extension.messaging-activemq
.
O espaço de nomes da configuração do subsistema urn:jboss:domain:messaging:3.0
foi substituído pelo espaço de nomes urn:jboss:domain:messaging-activemq:1.0
.
Modelo de gerenciamento
Na maioria dos casos, houve um empenho para manter o quanto mais possível a similaridade dos nomes de elementos e de atributos daqueles utilizados nas versões prévias. A seguinte tabela lista algumas das alterações.
Tabela 4.3. Mapeamento dos atributos de mensagens
Nome HornetQ | Nome ActiveMQ |
---|---|
hornetq-server |
servidor |
Tipo de hornetq-server |
serverType |
conectores |
conector |
discovery-group-name |
discovery-group |
As operações de gerenciamento invocadas no novo subsistema messaging-activemq
foram alteradas do /subsystem=messaging/hornetq-server=
para o /subsystem=messaging-activemq/server=
.
Você pode migrar uma configuração existente de subsistema JBoss EAP 6 messaging
para o subsistema messaging-activemq
em um servidor JBoss EAP 7 invocando a operação migrate
.
/subsystem=messaging:migrate
Before you execute the migrate
operation, you can invoke the describe-migration
operation to review the list of management operations that will be performed to migrate from the existing JBoss EAP 6 messaging
subsystem configuration to the messaging-activemq
subsystem on the JBoss EAP 7 server.
/subsystem=messaging:describe-migration
As operações migrate
e describe-migration
também exibem uma lista de migration-warnings
para recursos ou atributos que não podem ser migrados automaticamente.
Migração de subsistema de mensagens e compatibilidade com versões futuras
As operações describe-migration
e migrate
para o subsistema messaging
fornecem um argumento de configuração adicional. Se você deseja configurar o messaging para permitir que clientes JBoss EAP 6 legados conectem-se ao servidor JBoss EAP 7, você pode adicionar o argumento booleano add-legacy-entries
ao describe-migration
ou operação migrate
como segue.
/subsystem=messaging:describe-migration(add-legacy-entries=true) /subsystem=messaging:migrate(add-legacy-entries=true)
Se o argumento booleano add-legacy-entries
for definido para true
, o subsistema messaging-activemq
cria o recurso legacy-connection-factory
e adiciona legacy-entries
aos recursos jms-queue
e jms-topic
.
Se o argumento booleano add-legacy-entries
for definido false
, nenhum recurso legado será criado no subsistema messaging-activemq
e clientes JMS legados não conseguirão comunicar-se com o servidor JBoss EAP 7. Este é o valor padrão.
For more information about forward and backward compatibility see the Backward and Forward Compatibility in Configuring Messaging for JBoss EAP.
Para mais informações sobre as operações migrate
e describe-migration
da CLI de gerenciamento, consulte Operação de migração da CLI de gerenciamento.
Alteração de comportamento de atributo forward-when-no-consumers
O comportamento do atributo forward-when-no-consumers
foi alterado em JBoss EAP 7.
Em JBoss EAP 6, quando forward-when-no-consumers
era determinado para false
e não haviam consumidores em uma cluster, as mensagens eram redistribuidas para todos os nós em uma cluster.
Este comportamento foi alterado no JBoss EAP 7. Quando forward-when-no-consumers
é estabelecido para false
e não há consumidores no cluster, as mensagens não são redistribuídas. Ao invés disso, elas são mantidas no nó original ao qual elas foram envidadas.
Configuração XML do subsistema de mensagens
A configuração XML foi alterada significativamente com o novo subsistema messaging-activemq
para fornecer um esquema XML mais consistente com outros subsistemas JBoss EAP.
It is strongly advised that you do not attempt to modify the JBoss EAP messaging
subsystem XML configuration to conform to the new messaging-activemq
subsystem. Instead, invoke the legacy subsystem migrate
operation. This operation will write the XML configuration of the new messaging-activemq
subsystem as a part of its execution.
4.8.2. Migrar dados de mensagem
Devido à alteração do HornetQ para ActiveMQ Artemis como o provedor de suporte JMS, ambos o formato e a localização dos dados de mensagens foram alterados no JBoss EAP 7.
Você pode usar uma das seguintes abordagens para migrar os dados:
-
Você pode exportar os dados de mensagem do HornetQ do lançamento anterior e importá-los usando a operação
import-journal
da CLI de gerenciamento. Consulte Migrar dados de mensagens usando exportação e importação para mais informações. - Você pode migrar os dados do lançamento anterior ao configurar uma ponte JMS. Este processo está descrito em Migrar dados de mensagens usando uma ponte JMS.
Consulte Mapeamento de nomes de pastas de mensagens para detalhes das alterações de nomes de pasta de dados de mensagem entre as diferentes versões.
4.8.2.1. Migrar dados de mensagens usando exportação e importação
Usando esta abordagem, você exporta os dados do lançamento anterior usando a utilidade exporter
do HornetQ. Depois você importa o arquivo de saída de formato XML ao usar a operação import-journal
.
Há um problema conhecido atualmente com esta abordagem. Para verificar o status mais recente deste problema, consulte JBEAP-4407 - Consumidor falha com IndexOutOfBoundsException quando estiver lendo mensagens grandes de diário importado .
Exportação de dados de mensagens a partir da versão anterior
O servidor JBoss EAP 6 deve ser interrompido antes de exportar os dados de mensagens.
A utilidade exporter
do HornetQ gera e exporta os dados de mensagens do JBoss EAP 6 para um arquivo de formato XML. Este comando requer que você especifique os caminhos para os HornetQ JARs exigidos que foram remetidos com o JBoss EAP 6 e os caminhos para as pastas messagingbindings/
, messagingjournal/
, messagingpaging/
e messaginglargemessages/
das versões anteriores como argumentos, e especifique um arquivo de saída no qual irá gravar os dados XML exportados.
Segue a sintaxe exigida pela utilidade exporter
do HornetQ.
java -jar -mp MODULE_PATH org.hornetq.exporter MESSAGING_BINDINGS_DIRECTORY MESSAGING_JOURNAL_DIRECTORY MESSAGING_PAGING_DIRECTORY MESSAGING_LARGE_MESSAGES_DIRECTORY > OUTPUT_DATA.xml
Crie um módulo personalizado para certificar-se que as versões corretas dos JARs HornetQ , incluindo quaisquer JARs instalados com patches ou atualizações, sejam carregadas e estejam disponíveis para a utilidade exporter
. Utilizando o seu editor favorito, crie um novo arquivo module.xml
no diretórioEAP6_HOME/modules/org/hornetq/exporter/main/
e copie o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="org.hornetq.exporter"> <main-class name="org.hornetq.jms.persistence.impl.journal.XmlDataExporter"/> <properties> <property name="jboss.api" value="deprecated"/> </properties> <dependencies> <module name="org.hornetq"/> </dependencies> </module>
O módulo personalizado é criado no diretório modules/
, não no diretório modules/system/layers/base/
.
Siga os passos abaixo para exportar os dados.
- Encerre os processos do servidor JBoss EAP 6.
- Crie um módulo personalizado conforme descrito acima.
Execute o seguinte comando para exportar os dados.
$ java -jar jboss-modules.jar -mp modules/ org.hornetq.exporter standalone/data/messagingbindings/ standalone/data/messagingjournal/ standalone/data/messagingpaging standalone/data/messaginglargemessages/ > OUTPUT_DIRECTORY/OldMessagingData.xml
- Certifique-se de que não há erros ou mensagens de aviso no registro na conclusão do comando.
- Utilize as ferramentas disponíveis para seu sistema operacional para validar o XML no arquivo de saída gerado.
Importar os dados de mensagens formatados em XML
Em seguida você importa o arquivo de saída formatado em XML utilizando a operação import-journal
como segue.
/subsystem=messaging-activemq/server=default:import-journal(file=OUTPUT_DIRECTORY/OldMessagingData.xml)
4.8.2.2. Migrar dados de mensagem usando uma ponte JMS
Usando esta abordagem, você configura e implementa uma ponte JMS ao servidor JBoss EAP 7 que transfere mensagens da fila do HornetQ JBoss EAP 6 para a fila do ActiveMQ Artemis JBoss EAP 7.
Uma ponte JMS consome mensagens a partir de uma fila JMS fonte ou tópico e as envia a uma fila JMS destino ou tópico, que está normalmente em um servidor diferente. Isto pode ser usado como ponte para as mensagens entre quaisquer servidores JMS, contanto que elas sejam compatíveis com o JMS 1.1. Os recursos JMS de destino e fonte são pesquisados usando o JNDI e as classes de cliente para a pesquisa JNDI devem ser empacotadas em um módulo. O nome do módulo é, então, declarado na configuração da ponte JMS.
Esta seção descreve como configurar os servidores e implementar uma ponte JMS para transferir os dados de mensagem do JBoss EAP 6 para o JBoss EAP 7.
Configure o servidor JBoss EAP 6
- Encerre os processos do servidor JBoss EAP 6.
Fazendo o back up do diário HornetQ e arquivos de configuração.
-
Por padrão, o diário HornetQ é localizado no diretório
EAP6_HOME/standalone/data/
. - Consulte Mapeamento de nomes de pastas de mensagens para localização padrão da pasta de mensagem para cada versão.
-
Por padrão, o diário HornetQ é localizado no diretório
-
Certifique-se que a fila JMS
InQueue
que contém as mensagens JMS está definida no servidor JBoss EAP 6. Certifique-se que a configuração do subsistema
messaging
contém uma entrada para oRemoteConnectionFactory
similar ao que segue.<connection-factory name="RemoteConnectionFactory"> <entries> <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/> </entries> ... </connection-factory>
Se não contiver a entrada, crie uma usando o seguinte comando da CLI de gerenciamento:
/subsystem=messaging/hornetq-server=default/connection-factory=RemoteConnectionFactory:add(factory-type=XA_GENERIC, connector=[netty], entries=[java:jboss/exported/jms/RemoteConnectionFactory],ha=true,block-on-acknowledge=true,retry-interval=1000,retry-interval-multiplier=1.0,reconnect-attempts=-1)
Configure o servidor JBoss EAP 7
A configuração da ponte JMS exige o módulo
org.hornetq
para conectar-se ao servidor HornetQ na versão anterior. Este módulo e suas dependências diretas não estão presentes no JBoss EAP 7, você deve copiar os seguintes módulos da versão anterior.Copie o módulo
org.hornetq
para o diretório do JBoss EAP 7EAP_HOME/modules/org/
.-
Se você não utilizou patches neste módulo, copie esta pasta do servidor JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/org/hornetq/
-
Se você utilizou patches neste módulo, copie esta pasta do servidor JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.4.x.CP/org/hornetq/
-
Se você não utilizou patches neste módulo, copie esta pasta do servidor JBoss EAP 6.4:
Remova o
<resource-root>
para caminho HornetQlib
do arquivo JBoss EAP 7EAP_HOME/modules/org/hornetq/main/module.xml
.Se você não utilizou patches para o módulo JBoss EAP 6.4
org.hornetq
, remova a seguinte linha do arquivo:<resource-root path="lib"/>
Se você utilizou patches para o módulo de JBoss EAP 6.4
org.hornetq
, remova as seguintes linhas do arquivo:<resource-root path="lib"/> <resource-root path="../../../../../org/hornetq/main/lib"/>
AtençãoFalha ao remover o HornetQ
lib
pathresource-root
causará a falha da ponte com o seguinte erro no arquivo log.2016-07-15 09:32:25,660 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) WFLYCTL0013: Operation ("add") failed - address: ([ ("subsystem" => "messaging-activemq"), ("jms-bridge" => "myBridge") ]) - descrição da falha: "WFLYMSGAMQ0086: Não foi possível carregar módulo org.hornetq"
Copie o módulo
org.jboss.netty
para o diretório JBoss EAP 7EAP_HOME/modules/org/jboss/
.-
Se você não aplicou nenhum patch a este módulo, copie esta pasta do servidor JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/org/jboss/netty/
-
Se você aplicou patches a este módulo, copie esta pasta do servidor JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.4.x.CP/org/jboss/netty
-
Se você não aplicou nenhum patch a este módulo, copie esta pasta do servidor JBoss EAP 6.4:
Crie a fila JMS para conter as mensagens recebidas do servidor JBoss EAP 6. O que segue é um exemplo de um comando da CLI de gerenciamento que cria a fila JMS
MigratedMessagesQueue
para receber a mensagem.jms-queue add --queue-address=MigratedMessagesQueue --entries=[jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue]
Isto cria a seguinte configuração
jms-queue
para o servidor padrão no subsistemamessaging-activemq
do servidor JBoss EAP 7.<jms-queue name="MigratedMessagesQueue" entries="jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue"/>
Certifique-se de que o servidor
padrão
do subsistemamessaging-activemq
contém uma configuração para oInVmConnectionFactory
connection-factory
similar ao que segue:<connection-factory name="InVmConnectionFactory" factory-type="XA_GENERIC" entries="java:/ConnectionFactory" connectors="in-vm"/>
Se não contiver a entrada, crie uma usando o seguinte comando da CLI de gerenciamento:
/subsystem=messaging-activemq/server=default/connection-factory=InVmConnectionFactory:add(factory-type=XA_GENERIC, connectors=[in-vm], entries=[java:/ConnectionFactory])
Crie e implemente uma ponte JMS que lê mensagens a partir da fila JMS
InQueue
configurada no servidor JBoss EAP 6 e as transfere aoMigratedMessagesQueue
configurado no servidor JBoss EAP 7./subsystem=messaging-activemq/jms-bridge=myBridge:add(add-messageID-in-header=true,max-batch-time=100,max-batch-size=10,max-retries=-1,failure-retry-interval=1000,quality-of-service=AT_MOST_ONCE,module=org.hornetq,source-destination=jms/queue/InQueue,source-connection-factory=jms/RemoteConnectionFactory,source-context=[("java.naming.factory.initial"=>"org.jboss.naming.remote.client.InitialContextFactory"),("java.naming.provider.url"=>"remote://127.0.0.1:4447")],target-destination=jms/queue/MigratedMessagesQueue,target-connection-factory=java:/ConnectionFactory)
Isto cria a seguinte configuração
jms-bridge
no subsistemamessaging-activemq
do servidor JBoss EAP 7.<jms-bridge name="myBridge" add-messageID-in-header="true" max-batch-time="100" max-batch-size="10" max-retries="-1" failure-retry-interval="1000" quality-of-service="AT_MOST_ONCE" module="org.hornetq"> <source destination="jms/queue/InQueue" connection-factory="jms/RemoteConnectionFactory"> <source-context> <property name="java.naming.factory.initial" value="org.jboss.naming.remote.client.InitialContextFactory"/> <property name="java.naming.provider.url" value="remote://127.0.0.1:4447"/> </source-context> </source> <target destination="jms/queue/MigratedMessagesQueue" connection-factory="java:/ConnectionFactory"/> </jms-bridge>
-
Se a segurança está configurada para JBoss EAP 6, você deve também configurar o elemento
<source>
de configuração da ponte JMS para incluir umsource-context
que especifique o nome de usuário correto e a senha para usar na pesquisa JNDI quando criar uma conexão.
Migrar os dados
Verifique se a informação que você forneceu para a seguinte configuração está correta.
- Qualquer nome tópico e fila
- A java.naming.provider.url para pesquisa JNDI
- Certifique-se que você implantou a destinação JMS alvo para o servidor JBoss EAP 7.
- Inicie ambos os servidores JBoss EAP 6 e JBoss EAP 7.
4.8.2.3. Mapeamento dos nomes da pasta de mensagens
A tabela seguinte mostra os nomes dos diretórios de mensagem utilizados nas versões anteriores e os nomes correspondentes utilizados no lançamento atual do JBoss EAP. Os diretórios são referentes ao diretório jboss.server.data.dir
, cujo padrão é EAP_HOME/standalone/data/
caso não seja especificado.
Nome de diretório JBoss EAP 6 | Nome de diretório JBoss EAP 7 |
---|---|
messagingbindings/ |
activemq/bindings/ |
messagingjournal/ |
activemq/journal/ |
messaginglargemessages/ |
activemq/largemessages/ |
messagingpaging/ |
activemq/paging/ |
The messaginglargemessages/
and messagingpaging/
directories might not be present if there are no large messages or if paging is disabled.
4.8.3. Migrar as destinações JMS
Nas versões prévias do JBoss EAP, as filas de destino JMS eram configuradas no elemento <jms-destinations>
sob o elemento <hornetq-server>
no subsistema messaging
.
<hornetq-server> ... <jms-destinations> <jms-queue name="testQueue"> <entry name="queue/test"/> <entry name="java:jboss/exported/jms/queue/test"/> </jms-queue> </jms-destinations> ... </hornetq-server>
No JBoss EAP 7, a fila de destino JMS é configurada no elemento padrão <server>
do subsistema messaging-activemq
.
<server name="default"> ... <jms-queue name="testQueue" entries="queue/test java:jboss/exported/jms/queue/test"/> ... </server>
4.8.4. Migrar interceptores de mensagem
Interceptores de mensagem foram alterados significativamente no JBoss EAP 7 com a substituição do HornetQ pelo ActiveMQ Artemis como o provedor de mensagem JMS.
O subsistema messaging
do HornetQ incluído na versão anterior do JBoss EAP exigia que você instalasse os interceptores HornetQ ao adicioná-los a um JAR e depois modificar o arquivo module.xml
do HornetQ.
The messaging-activemq
subsystem included in JBoss EAP 7 does not require modification of a module.xml
file. User interceptor classes, which now implement the Apache ActiveMQ Artemis Interceptor interface, can now be loaded from any server module. You specify the module from which the interceptor should be loaded in the messaging-activemq
subsystem of the server configuration file.
Exemplo de configuração de interceptor
<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0"> <server name="default"> ... <incoming-interceptors> <class name="com.mycompany.incoming.myInterceptor" module="com.mycompany" /> <class name="com.othercompany.incoming.myOtherInterceptor" module="com.othercompany" /> </incoming-interceptors> <outgoing-interceptors> <class name="com.mycompany.outgoing.myInterceptor" module="com.mycompany" /> <class name="com.othercompany.outgoing.myOtherInterceptor" module="com.othercompany" /> </outgoing-interceptors> </server> </subsystem>
4.8.5. Substituir as configuraões Netty Servlet
No JBoss EAP 6, você podia configurar um mecanismo servlet para trabalhar com o transporte Netty Servlet. No JBoss EAP 7, o ActiveMQ Artemis substituiu o HornetQ como o provedor de mensagem incorporado e esta configuração não está mais disponível. Você deve substituir a configuração do servlet para usar os novos conectores http de mensagem incorporados e aceitador http.
4.9. JMX Management Changes
The HornetQ component in JBoss EAP 6 provided its own JMX management; however, it was not recommended and is now deprecated and no longer supported. If you relied on this feature in JBoss EAP 6, you must migrate your management tooling to use either the JBoss EAP management CLI or the JMX management provided with JBoss EAP 7.
You must also upgrade your client libraries to use the jboss-client.jar
that ships with JBoss EAP 7.
The following is an example of HornetQ JMX management code that was used in JBoss EAP 6.
JMXConnector connector = null; try { HashMap environment = new HashMap(); String[] credentials = new String[]{"admin", "Password123!"}; environment.put(JMXConnector.CREDENTIALS, credentials); // HornetQ used the protocol "remoting-jmx" and port "9999" JMXServiceURL beanServerUrl = new JMXServiceURL("service:jmx:remoting-jmx://127.0.0.1:9999"); connector = JMXConnectorFactory.connect(beanServerUrl, environment); MBeanServerConnection mbeanServer = connector.getMBeanServerConnection(); // The JMX object name pointed to the HornetQ JMX management ObjectName objectName = new ObjectName("org.hornetq:type=Server,module=JMS"); // The invoked method name was "listConnectionIDs" String[] connections = (String[]) mbeanServer.invoke(objectName, "listConnectionIDs", new Object[]{}, new String[]{}); for (String connection : connections) { System.out.println(connection); } } finally { if (connector != null) { connector.close(); } }
The following is an example of the equivalent code needed for ActiveMQ Artemis in JBoss EAP 7.
JMXConnector connector = null; try { HashMap environment = new HashMap(); String[] credentials = new String[]{"admin", "Password123!"}; environment.put(JMXConnector.CREDENTIALS, credentials); // ActiveMQ Artemis uses the protocol "remote+http" and port "9990" JMXServiceURL beanServerUrl = new JMXServiceURL("service:jmx:remote+http://127.0.0.1:9990"); connector = JMXConnectorFactory.connect(beanServerUrl, environment); MBeanServerConnection mbeanServer = connector.getMBeanServerConnection(); // The JMX object name points to the new JMX management in the `messaging-activemq` subsystem ObjectName objectName = new ObjectName("jboss.as:subsystem=messaging-activemq,server=default"); // The invoked method name is now "listConnectionIds" String[] connections = (String[]) mbeanServer.invoke(objectName, "listConnectionIds", new Object[]{}, new String[]{}); for (String connection : connections) { System.out.println(connection); } } finally { if (connector != null) { connector.close(); } }
Notice that the method names and parameters have changed in the new implementation. You can find the new method names in the JConsole by following these steps.
Connect to the JConsole using the following command.
EAP_HOME/bin/jconsole.sh
- Connect to JBoss EAP local process. Note that it should start with "jboss-modules.jar".
- In the MBeans tab, choose jboss.as → messaging-activemq → default → Operations to display the list of method names and attributes.
4.10. Alterações de configurações de servidor ORB
A implementação do JacORB foi substituída com uma ramificação downstream do OpenJDK ORB no JBoss EAP 7.
O módulo de extensão org.jboss.as.jacorb
, localizado em EAP_HOME/modules/system/layers/base/
, foi substituído pelo módulo de extensão org.wildfly.iiop-openjdk
.
O espaço de nomes da configuração do subsistema urn:jboss:domain:jacorb:1.4
no arquivo de configuração do servidor foi substituído pelo espaço de nome urn:jboss:domain:iiop-openjdk:1.0
.
Segue um exemplo de configuração de sistema padrão jacorb
em JBoss EAP 6.
<subsystem xmlns="urn:jboss:domain:jacorb:1.4"> <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl"> <initializers security="identity" transactions="spec"/> </orb> </subsystem>
Segue um exemplo de configuração de subsistema iiop-openjdk
padrão no JBoss EAP 7.
<subsystem xmlns="urn:jboss:domain:iiop-openjdk:1.0"> <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl" /> <initializers security="identity" transactions="spec" /> </subsystem>
A nova configuração de subsistema iiop-openjdk
aceita somente um subconjunto de elementos legados e atributos. Segue um exemplo de configuração de subsistema jacorb
na versão prévia do JBoss EAP que contém todos os elementos válidos e atributos:
<subsystem xmlns="urn:jboss:domain:jacorb:1.4"> <orb name="JBoss" print-version="off" use-imr="off" use-bom="off" cache-typecodes="off" cache-poa-names="off" giop-minor-version="2" socket-binding="jacorb" ssl-socket-binding="jacorb-ssl"> <connection retries="5" retry-interval="500" client-timeout="0" server-timeout="0" max-server-connections="500" max-managed-buf-size="24" outbuf-size="2048" outbuf-cache-timeout="-1"/> <initializers security="off" transactions="spec"/> </orb> <poa monitoring="off" queue-wait="on" queue-min="10" queue-max="100"> <request-processors pool-size="10" max-threads="32"/> </poa> <naming root-context="JBoss/Naming/root" export-corbaloc="on"/> <interop sun="on" comet="off" iona="off" chunk-custom-rmi-valuetypes="on" lax-boolean-encoding="off" indirection-encoding-disable="off" strict-check-on-tc-creation="off"/> <security support-ssl="off" add-component-via-interceptor="on" client-supports="MutualAuth" client-requires="None" server-supports="MutualAuth" server-requires="None"/> <properties> <property name="some_property" value="some_value"/> </properties> </subsystem>
Os seguintes atributos de elementos não possuem mais suporte e devem ser removidos.
Tabela 4.4. Atributos para remover
Elemento | Atributos sem suporte |
---|---|
|
|
|
|
Os seguintes atributos on/off
não possuem mais suporte e não serão migrados quando você executar a operação migrate
da CLI de gerenciamento. Se eles estão definidos como on
, você irá receber um alerta de migração. Outros atributos on/off
que não foram mencionados nesta tabela, por exemplo, <security support-ssl="on|off">
, ainda possuem suporte e serão migrados com êxito. A única diferença é que os valores serão alterados de on/off
para true/false
.
Tabela 4.5. Atributos para desativar ou remover
Elemento | Atributos para serem definidos como desativados (off) |
---|---|
|
|
|
(todos exceto
|
|
|
4.11. Migrar a configuração de subsistema de threads
A configuração de servidor do JBoss EAP 6 incluía um subsistema threads
que era utilizado para gerenciar grupos de thread em vários subsistemas no servidor.
O subsistema threads
não está mais disponível no JBoss EAP 7. Como alternativa, cada subsistema é responsável por gerenciar seus próprios grupos de thread.
For information about how to configure thread pools for the infinispan
subsystem, see Configure Infinispan Thread Pools in the JBoss EAP Configuration Guide.
For information about how to configure thread pools for the jgroups
subsystem, see Configure JGroups Thread Pools in the JBoss EAP Configuration Guide.
In JBoss EAP 6, you configured thread pools for connectors and listeners for the web
subsystem by referencing an executor
that was defined in the threads
subsystem. In JBoss EAP 7, you now configure thread pools for the undertow
subsystem by referencing a worker
that is defined in the io
subsystem. For more information, see Configuring the IO Subsystem in the JBoss EAP Configuration Guide.
For information about about changes to thread pool configuration in the remoting
subsystem, see Migrate the Remoting Subsystem Configuration in this guide, and Configuring the Endpoint in the JBoss EAP Configuration Guide.
4.12. Migrar a configuração de subsistema Remoto
No JBoss EAP 6, você configura o agrupamento de thread para o subsistema remoting
ao determinar vários atributos worker-*
. O agrupamento de thread de worker não é mais configurado no subsistema remoting
no JBoss EAP 7 e caso você tentar modificar a configuração existente, você virá a seguinte mensagem.
WFLYRMT0022: Configuração worker não é mais utilizada, por favor, use configuração endpoint worker
No JBoss EAP 7, o worker thread pool é substituído por uma configuração de ponto de extremidade que referencia um subsistema worker
definido no subsistema io
.
For information about how to configure the endpoint, see Configuring the Endpoint in the JBoss EAP Configuration Guide.
4.13. Alterações de configurações de servidor WebSocket
Para utilizar WebSockets no JBoss EAP 6, você tinha que habilitar o protocolo conector Java NIO2 não bloqueante para conector http
no subsistemaweb
do arquivo de configuração do servidor JBoss EAP utilizando o comando similar ao que segue.
/subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11NioProtocol)
Para utilizar WebSockets em um aplicativo, você tinha também que criar um elemento <enable-websockets>
no arquivo WEB-INF/jboss-web.xml
do aplicativo e defini-lo para true
.
No JBoss EAP 7, você não precisa mais configurar o servidor para suporte WebSocket padrão ou configurar o aplicativo para utilizá-lo. WebSockets são exigências da especificação do Java EE 7 e os protocolos exigidos são configurados por padrão. Configurações de WebSocket mais complexas são feitas no servlet-container
do subsistema undertow
do arquivo de configuração do servidor JBoss EAP. Você pode ver as configurações disponíveis utilizando o seguinte comando.
/subsystem=undertow/servlet-container=default/setting=websockets:read-resource(recursive=true) { "outcome" => "success", "result" => { "buffer-pool" => "default", "dispatch-to-worker" => true, "worker" => "default" } }
Exemplos de códigos WebSocket também podem ser encontrados no início rápido (quickstarts) que é fornecido com JBoss EAP.
4.14. Alterações do servidor Single Sign-on
The infinispan
subsystem still provides distributed caching support for HA services in the form of Infinispan caches in JBoss EAP 7; however the caching and distribution of authentication information is handled differently than in previous releases.
No JBoss EAP 6, se o single sign-on (SSO) não foi fornecido um cache Infinispan, o cache não era distribuído.
No JBoss EAP 7, SSO é distribuído automaticamente quando você seleciona o perfil HA. Quando executar com o perfil HA, cada host tem seu próprio cache Infinispan, que é baseado no cache padrão do contêiner de cache da web. Este cache armazena sessões relevantes e informações de cookie SSO para o host. JBoss EAP trata a propagação de informação de cache individual para todos os hosts. Não existe nenhuma maneira para atribuir especificamente um cache Infinispan para um SSO no JBoss EAP 7.
No JBoss EAP 7, o SSO é configurado no subsistema undertow
do arquivo de configuração do servidor.
Não há exigência de alteração de código de aplicativos para SSO quando migrando para JBoss EAP 7.
4.15. Alterações na configuração da fonte de dados
4.15.1. Nome de driver da fonte de dados JBDC
Quando você configurava uma fonte de dados na versão anterior do JBoss EAP, o valor especificado para o nome do driver dependia no número de classes listadas no arquivo META-INF/services/java.sql.Driver
contido no JAR do driver JDBC.
Driver contendo uma classe única
Se o arquivo META-INF/services/java.sql.Driver
especificou somente uma classe, o valor do nome do driver era simplesmente o nome do JAR do driver JDBC. Isto não foi alterado no JBoss EAP 7.
Driver contendo classes múltiplas
No JBoss EAP 6, se houvesse mais de uma classe listada no arquivo META-INF/services/java.sql.Driver
, você especificaria qual classe seria a classe do driver ao acrescentar seu nome ao nome de JAR, junto com as versões menores e maiores, no seguinte formato.
JAR_NAME + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION
No JBoss EAP 7, isto mudou. Você agora especifica o nome do driver utilizando o seguinte formato.
JAR_NAME + "_" + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION
Um traço sublinhado foi adicionado entre o JAR_NAME e o DRIVER_CLASS_NAME.
O driver MySQL 5.1.31 JDBC é um exemplo de um driver que contém duas classes. O nome de classe do driver é com.mysql.jdbc.Driver
. Os seguintes exemplos demonstram as diferenças de como você especifica o nome do driver na versão anterior e atual do JBoss EAP.
Exemplo de nome de driver no JBoss EAP 6
mysql-connector-java-5.1.31-bin.jarcom.mysql.jdbc.Driver_5_1
Exemplo de nome de driver no JBoss EAP 7
mysql-connector-java-5.1.31-bin.jar_com.mysql.jdbc.Driver_5_1
4.16. Alterações de configurações de servidor de segurança
For information about Java Security Manager server configuration changes, see Considerations Moving from Previous Versions in How To Configure Server Security for JBoss EAP.
4.17. Alterações do subsistema de transações
Alguns atributos de configuração do gerenciamento de transações que estavam disponíveis no subsistema transactions
no JBoss EAP 6 foram alterados no JBoss EAP 7.
Removed Transactions Subsystem Attributes
A seguinte tabela lista os atributos do JBoss EAP 6 que foram removidos do subsistema transactions
no JBoss EAP 7 e os atributos substituídos correspondentes.
Atributo no JBoss EAP 6 | Substituto no JBoss EAP 7 |
---|---|
path |
object-store-path |
relative-to |
object-store-relative-to |
Atributos de subsistema de transações preteridos
The following attributes that were available in the transactions
subsystem in JBoss EAP 6 are deprecated in JBoss EAP 7. The deprecated attributes might be removed in a future release of the product. The following table lists the equivalent replacement attributes.
Atributo no JBoss EAP 6 | Substituto no JBoss EAP 7 |
---|---|
use-hornetq-store |
use-journal-store |
hornetq-store-enable-async-io-to |
journal-store-enable-async-io |
enable-statistics |
statistics-enabled |
4.18. Changes to mod_cluster Configuration
A configuração para listas de proxy estáticas em mod_cluster foi alterada no JBoss EAP 7.
No JBoss EAP 6, você configurava o atributo proxy-list
, que era um lista separada por vírgula de endereços proxy httpd especificados no formato de hostname:port
.
O atributo proxy-list
é preterido no JBoss EAP 7. Ele foi substituído pelo atributo proxies
, que é uma lista de nomes de associação de soquetes de saída.
This change impacts how you define a static proxy list, for example, when disabling advertising for mod_cluster. For information about how to disable advertising for mod_cluster, see Disable Advertising for mod_cluster in the JBoss EAP Configuration Guide.
For more information about mod_cluster attributes, see ModCluster Subsystem Attributes in the JBoss EAP Configuration Guide.
Capítulo 5. Alterações na migração dos aplicativos
5.1. Alterações nos aplicativos de serviços Web
JBossWS 5 traz novos recursos e melhorias de desempenho para servidores web JBoss EAP 7, principalmente através de atualizações de componentes Apache CXF, Apache WSS4J e Apache Santuario .
5.1.1. Alterações de suporte JAX-RPC
A API Java para RPC baseado em XML(JAX-RPC) foi preterida no Java EE 6 e é opcional no Java EE 7. Ela não está mais disponível ou suportada no JBoss EAP 7. Aplicativos que utilizam JAX-RPC devem ser migrados para utilizar JAX-WS, que é a atual framework de serviços web padrões Java EE.
A utilização dos serviços web JAX-RPC pode ser identificada em qualquer uma das seguintes maneiras:
-
A presença de um arquivo de mapeamento JAX-RPC, que é um arquivo XML com o elemento raiz
<java-wsdl-mapping>
. A presença de um arquivo descritor XML
webservices.xml
que contém um elemento<webservice-description>
, que inclui um elemento dependente<jaxrpc-mapping-file>
. Segue um exemplo de arquivo descritorwebservices.xml
que define um serviço web JAX-RPC.<webservices xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd" version="1.1"> <webservice-description> <webservice-description-name>HelloService</webservice-description-name> <wsdl-file>WEB-INF/wsdl/HelloService.wsdl</wsdl-file> <jaxrpc-mapping-file>WEB-INF/mapping.xml</jaxrpc-mapping-file> <port-component> <port-component-name>Hello</port-component-name> <wsdl-port>HelloPort</wsdl-port> <service-endpoint-interface>org.jboss.chap12.hello.Hello</service-endpoint-interface> <service-impl-bean> <servlet-link>HelloWorldServlet</servlet-link> </service-impl-bean> </port-component> </webservice-description> </webservices>
-
A presença de um arquivo
ejb-jar.xml
, que contém um<service-ref>
que referencia um arquivo de mapeamento JAX-RPC.
5.1.2. Alterações dos serviços web Apache CXF Spring
Em versões prévias do JBoss EAP, você podia personalizar a integração do JBossWS e Apache CXF ao incluir um arquivo de configuração jbossws-cxf.xml
com o arquivo de implementação de ponto de extremidade. Um caso de utilização para isto era configurar correntes de interceptores para cliente de serviço web e pontos de extremidades de servidores no barramento Apache CXF. Esta integração exigia a implantação de Spring no servidor JBoss EAP.
A integração do Spring não é mais suportada no JBoss EAP 7. Qualquer aplicativo que contiver um arquivo de configuração de descritor jbossws-cxf.xml
deve ser modificado para substituir a configuração personalizada definida naquele arquivo. Embora ainda seja possível acessar diretamente a API Apache CXF, fique ciente de que o aplicativo não será portátil.
A abordagem sugerida é para substituir configurações personalizadas de Spring com as novas opções de configuração de descritor JBossWS quando possível. A abordagem baseada em descritor JBossWS fornece funcionalidade similar sem exigir modificação do código de ponto de extremidade do cliente. Em alguns casos, você pode substituir Spring por Context Dependency Injection (CDI).
Interceptores Apache CXF
O descritor JBossWS fornece novas opções de configurações que permitem a você declarar os interceptores sem modificar o código de ponto de extremidade do cliente. Alternativamente, você declara interceptores dentro de clientes pré-definidos e configurações de pontos de extremidade ao especificar uma lista de nomes de classe de interceptor para as propriedades cxf.interceptors.in
e cxf.interceptors.out
.
Segue um exemplo de um arquivo jaxws-endpoint-config.xml
que declara interceptores usando estas propriedades.
<?xml version="1.0" encoding="UTF-8"?> <jaxws-config xmlns="urn:jboss:jbossws-jaxws-config:4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="urn:jboss:jbossws-jaxws-config:4.0 schema/jbossws-jaxws-config_4_0.xsd"> <endpoint-config> <config-name>org.jboss.test.ws.jaxws.cxf.interceptors.EndpointImpl</config-name> <property> <property-name>cxf.interceptors.in</property-name> <property-value>org.jboss.test.ws.jaxws.cxf.interceptors.EndpointInterceptor,org.jboss.test.ws.jaxws.cxf.interceptors.FooInterceptor</property-value> </property> <property> <property-name>cxf.interceptors.out</property-name> <property-value>org.jboss.test.ws.jaxws.cxf.interceptors.EndpointCounterInterceptor</property-value> </property> </endpoint-config> </jaxws-config>
Recursos Apache CXF
O descritor JBossWS permite que você declare recursos dentro do cliente pré-definido e configurações de ponto de extremidade ao especificar uma lista de nomes de classe de recursos para a propriedade cxf.features
.
Segue um exemplo de um arquivo jaxws-endpoint-config.xml
que declara um recurso usando esta propriedade.
<?xml version="1.0" encoding="UTF-8"?> <jaxws-config xmlns="urn:jboss:jbossws-jaxws-config:4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="urn:jboss:jbossws-jaxws-config:4.0 schema/jbossws-jaxws-config_4_0.xsd"> <endpoint-config> <config-name>Custom FI Config</config-name> <property> <property-name>cxf.features</property-name> <property-value>org.apache.cxf.feature.FastInfosetFeature</property-value> </property> </endpoint-config> </jaxws-config>
Apache CXF HTTP Transport
Em Apache CXF, a configuração do transporte HTTP é alcançada ao especificar opções org.apache.cxf.transport.http.HTTPConduit
. A Integração JBossWS permite que conduits sejam modificados programaticamente usando a API Apache CXF como segue.
import org.apache.cxf.frontend.ClientProxy; import org.apache.cxf.transport.http.HTTPConduit; import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; // Set chunking threshold before using a JAX-WS port client ... HTTPConduit conduit = (HTTPConduit)ClientProxy.getClient(port).getConduit(); HTTPClientPolicy client = conduit.getClient(); client.setChunkingThreshold(8192); ...
Você pode também controlar e substituir os valores padrão Apache CXF HTTPConduit
ao definir as propriedades de sistema.
Propriedade | Tipo | Descrição |
---|---|---|
cxf.client.allowChunking |
Boolean |
Especifica se envia uma solicitações usando agrupamento |
cxf.client.chunkingThreshold |
Integer |
Define o limite no qual é feita a alteração do modo sem agrupamento para o modo de agrupamento. |
cxf.client.connectionTimeout |
Long |
Define o número de milissegundos de tempo limite da conexão. |
cxf.client.receiveTimeout |
Long |
Define o número de milissegundos para expirar a recepção. |
cxf.client.connection |
String |
Especifica a utilização do tipo de conexão |
cxf.tls-client.disableCNCheck |
Boolean |
Especifica a desativação da verificação de nome de host CN. |
5.1.3. Alterações WS-Security
-
Se seu aplicativo contém um manipulador de retorno de chamada personalizado que acessa a classe
org.apache.ws.security.WSPasswordCallback
, sabia que esta classe foi transferida para o pacoteorg.apache.wss4j.common.ext
. -
A maior parte dos objetos bean SAML do pacote
org.apache.ws.security.saml.ext
foi transferida para o pacoteorg.apache.wss4j.common.saml package
. - O uso de transporte de chave RSA v1.5 e todos dos algoritmos relacionados não são permitidos por padrão.
-
Anteriormente, o Security Token Service (STS) validava somente tokens
onBehalfOf
. Agora também valida tokensActAs
. Como consequência, um nome de usuário válido e senha devem ser especificados noUsernameToken
que é fornecido para o tokenActAs
. -
Agora os tokens SAML Bearer são exigidos para ter uma assinatura interna. Agora a classe
org.apache.wss4j.dom.validate.SamlAssertionValidator
tem um métodosetRequireBearerSignature()
para habilitar ou desabilitar a verificação de assinatura.
5.1.4. Alterações de estruturas de módulos JBoss
Os Jars cxf-api
e cxf-rt-core
foram agrupados em um JAR cxf-core
. Como consequência, o módulo org.apache.cxf
no JBoss EAP agora contém o JAR cxf-core
e expõe mais classes que o lançamento anterior.
5.1.5. Alterações e requisitos de Bouncy Castle
Se você quiser usar criptografia AES com Galois/Counter Mode (GCM) para criptografia simétrica em XML/WS-Security, você precisa do provedor de segurança BouncyCastle.
JBoss EAP 7 envia com módulo org.bouncycastle
e JBossWS agora pode confiar em seus carregadores de classes para obter e usar o provedor de segurança BouncyCastle. Portanto, não é mais necessário instalar estaticamente BouncyCastle em JVM atual. Para aplicativos executando fora do contêiner, o fornecedor de segurança pode ser disponibilizado para JBossWS ao adicionar uma biblioteca BouncyCastle ao caminho da classe.
Você pode desativar este comportamento ao configurar o valor de propriedade org.jboss.ws.cxf.noLocalBC
para true
no arquivo descritor de implementação jaxws-endpoint-config.xml
para o servidor ou no arquivo do descritor jaxws-client-config.xml
para clientes.
Se você quiser uma versão diferente daquela que é enviada com o JBoss EAP, você ainda pode instalar estaticamente o BouncyCastle para a JVM. Neste caso, o provedor de segurança BouncyCastle é escolhido entre o provedor presente no caminho da classe. Para evitar quaisquer problemas, você deve usar BouncyCastle 1.49, 1.51 ou versão superior.
5.1.6. Estratégia de seleção de barramento Apache CXF
A estratégia de seleção do barramento padrão para clientes executando dentro de contêiner mudou de THREAD_BUS
para TCCL_BUS
. Para clientes executando fora de contêiner, a estratégia padrão ainda é THREAD_BUS
. Você pode restaurar o comportamento para o lançamento anterior ao utilizar um dos seguintes métodos.
-
Inicialize o servidor JBoss EAP com o valor da propriedade de sistema
org.jboss.ws.cxf.jaxws-client.bus.strategy
definido paraTHREAD_BUS
. - Defina explicitamente a estratégia de seleção no código do cliente.
5.1.7. Requisitos JAX-WS 2.2 para WebServiceRef
Contêiner deve usar construtores de estilo JAX-WS 2.2, usando a classeWebServiceFeature para compilar clientes que são injetados nas referências do web service. Isto significa que as classes de serviço fornecidas por usuários injetadas pelo contêiner devem implementar JAX-WS 2.2 ou versão superior.
5.1.8. Alterações de verificação CN IgnoreHttpsHost
Em lançamentos prévios, você podia desativar a verificação do nome de host de URL HTTPS com o nome comum (CN - Common Name) do serviço fornecido em seu certificado ao definir a propriedade de sistema org.jboss.security.ignoreHttpsHost
para true
. Este nome de propriedade de sistema foi substituído por cxf.tls-client.disableCNCheck
.
5.1.9. Configuração lado cliente e carregamento de classe
As a consequence of enabling injections into service endpoint and service client handlers, it is no longer possible to automatically load handler classes from the org.jboss.as.webservices.server.integration
JBoss module. If your application depends on a given predefined configuration, you might need to explicitly define new module dependencies for your deployment. For more information, see Migrate Explicit Module Dependencies
5.1.10. O mecanismo de substituição de standards endossados Java está descontinuado.
O mecanismo de substituição de standards endossados Java https://docs.oracle.com/javase/8/docs/technotes/guides/standards/ foi descontinuado no JDK 1.8_40 com a intenção de removê-lo no JDK 9. Este mecanismo permite desenvolvedores disponibilizar bibliotecas para todos os aplicativos implantados ao colocar JARs em um diretório endossado dentro do JRE.
Se seu aplicativo utiliza implementações JBossWS de Apache CXF, o JBoss EAP 7 assegura que as dependências necessárias sejam adicionadas na ordem correta e esta alteração não deve causar impacto para você. Se seu aplicativo acessa Apache CXF diretamente, você deve fornecer agora as dependências Apache CXF depois das dependências JBossWS como parte da implantação de seu aplicativo.
5.1.11. Especificação de descritor no arquivo EAR
Em lançamentos prévios do JBoss EAP, era possível configurar o arquivo de descritor de implantação jboss-webservices.xml
para implantações de servidor web EJB no diretório META-INF/
dos arquivos JAR ou no diretório WEB-INF/
para implantações de serviço web POJO e pontos de extremidades de serviço web EJB agrupados em arquivos WAR.
Agora no JBoss EAP 7, você pode configurar o arquivo de descritor de implantação jboss-webservices.xml
no diretório META-INF/
de um arquivo EAR. Caso um arquivo jboss-webservices.xml
for encontrado em ambos os arquivos EAR e o JAR ou arquivo WAR, os dados de configuração no arquivo jboss-webservices.xml
para o JAR ou WAR substitui os dados correspondentes no arquivo descritor EAR.
5.2. Atualize a porta e conector URL remoto
No JBoss EAP 7, o conector padrão foi alterado de remoto
para http-remoting
e a porta de conexão remota padrão foi alterada de 4447
para 8080
. O URL do fornecedor JNDI para a configuração padrão foi alterado de remote://localhost:4447
para http-remoting://localhost:8080
.
If you use the JBoss EAP 7 migrate
operation to update your configuration, you do not need to modify the remote connector, remote port, or JNDI provider URLs because the migration operation preserves the JBoss EAP 6 remoting connector and 4447
port configuration settings in the subsystem configuration. For more information about the migrate
operation, see Management CLI Migration Operation.
Se você não usar a operação migrate
e em vez disso executar com a configuração padrão nova do JBoss EAP 7, você deve alterar o conector remoto, porta remota e URL do fornecedor JNDI para usar as novas definições conforme descrito acima.
5.3. Alterações de aplicativos de mensagens
5.3.1. Substituir ou atualizar descritores de implantação JMS
Os arquivos de descritores de implantação de recursos JMS proprietários identificados pelo modelo de nomenclatura -jms.xml
são obsoletos no JBoss EAP 7. Segue um exemplo de um arquivo de descritor de implantação de recurso JMS no JBoss EAP 6.
<?xml version="1.0" encoding="UTF-8"?> <messaging-deployment xmlns="urn:jboss:messaging-deployment:1.0"> <hornetq-server> <jms-destinations> <jms-queue name="testQueue"> <entry name="queue/test"/> <entry name="java:jboss/exported/jms/queue/test"/> </jms-queue> <jms-topic name="testTopic"> <entry name="topic/test"/> <entry name="java:jboss/exported/jms/topic/test"/> </jms-topic> </jms-destinations> </hornetq-server> </messaging-deployment>
Se você usou descritores de implantação JMS -jms.xml
em seu aplicativo em lançamentos prévios, você pode converter seu aplicativo para usar o descritor de implantação Java EE 7 padrão, conforme especificado na seção EE.5.18 da especificação Java EE 7, ou você pode atualizar o descritor de implantação para usar o subsistema messaging-activemq
no JBoss EAP 7.
Se você escolher atualizar o descritor, você precisa fazer as seguintes modificações.
- Altere o espaço de nomes de "urn:jboss:messaging-deployment:1.0" para "urn:jboss:messaging-activemq-deployment:1.0".
-
Mude o nome do elemento
<hornetq-server>
para<server>
.
O arquivo modificado deve parecer com o exemplo que segue.
<?xml version="1.0" encoding="UTF-8"?> <messaging-deployment xmlns="urn:jboss:messaging-activemq-deployment:1.0"> <server> <jms-destinations> <jms-queue name="testQueue"> <entry name="queue/test"/> <entry name="java:jboss/exported/jms/queue/test"/> </jms-queue> <jms-topic name="testTopic"> <entry name="topic/test"/> <entry name="java:jboss/exported/jms/topic/test"/> </jms-topic> </jms-destinations> </server> </messaging-deployment>
Para informação sobre alterações de configuração de servidor relacionadas a mensagens, consulte Alterações de configuração de servidor de mensagens.
5.3.2. Atualizar clientes externo JMS
JBoss EAP 7 ainda suporta API JMS 1.1, assim você não precisa modificar seu código.
O conector remoto padrão e porta foram alterados no JBoss EAP 7. Para detalhes sobre esta mudança, consulte Atualize o conector URL remoto e porta.
Se você migrar sua configuração de servidor usando a operação migrate
, as configurações antigas são preservadas e você não precisa atualizar seu PROVIDER_URL
. Porém, se você executar com a configuração padrão nova do JBoss EAP 7, você deve alterar o PROVIDER_URL
no código do cliente para usar a nova configuração http-remoting://localhost:8080
. Para mais informações, consulte Migrar a designação de código de cliente remoto.
Se você planeja migrar seu código para usar a API JMS 2.0, consulte o início rápido helloworld-jms
para um exemplo prático.
5.3.3. Substitua a API HornetQ
O JBoss EAP 6 incluía o módulo org.hornetq
, que permitia que você usasse API HornetQ no código de fonte de seu aplicativo.
Apache ActiveMQ Artemis substitui HornetQ no JBoss EAP 7, por isso você deve migrar qualquer código que utilizava API HornetQ para utilizar API Apache ActiveMQ Artemis . As bibliotecas para esta API estão incluídas no módulo org.apache.activemq.artemis
.
ActiveMQ Artemis é uma evolução do HornetQ, por isso muitos conceitos ainda são válidos.
5.4. Alterações de aplicativos JAX-RS e RESTEasy
Os lançamentos prévios do JBoss EAP agrupava RESTEasy 2, que era uma implementação do JAX-RS 1.x. O JBoss EAP 7 inclui RESTEasy 3, que é uma implementação do JAX-RS 2.0 conforme definido pelo JSR 339: JAX-RS 2.0: A API Java para especificações RESTful Web Services. Para mais informações sobre API Java para RESTful Web Services, consulte a Especificação de API JAX-RS 2.0.
A versão de Jackson incluída no JBoss EAP foi alterada. A versão anterior do JBoss EAP incluía Jackson 1.9.9. O JBoss EAP 7 inclui agora Jackson 2.6.3 ou superior.
This section describes how these changes might impact applications that use RESTEasy or JAX-RS.
5.4.1. Classes preteridas de RESTEasy
Classes de corpo de mensagem e interceptores
JSR 311: JAX-RS: A API Java™ para RESTful Web Services não incluía uma framework de interceptor, por isso RESTEasy 2 forneceu uma. JSR 339: JAX-RS 2.0: A API Java para RESTful Web Services introduziu um interceptor oficial e frameworkd de filtro, por isso a framework do interceptor incluída no RESTEasy 2 está agora preterida e foi substituída pelo interceptor compatível JAX-RS 2.0 no RESTEasy 3.x. As interfaces relevantes estão definidas no pacote javax.ws.rs.ext
do módulo jaxrs-api
.
As interfaces de interceptores seguintes são preteridas no RESTEasy 3.x.
-
A interface
org.jboss.resteasy.spi.interception.PreProcessInterceptor
foi substituída pela interfacejavax.ws.rs.container.ContainerRequestFilter
no RESTEasy 3.x. As seguintes interfaces e classes também foram preteridas no RESTEasy 3.x.
-
org.jboss.resteasy.spi.interception.MessageBodyReaderInterceptor
-
org.jboss.resteasy.spi.interception.MessageBodyWriterInterceptor
-
org.jboss.resteasy.spi.interception.MessageBodyWriterContext
-
org.jboss.resteasy.spi.interception.MessageBodyReaderContext
-
org.jboss.resteasy.core.interception.InterceptorRegistry
-
org.jboss.resteasy.core.interception.InterceptorRegistryListener
-
org.jboss.resteasy.core.interception.ClientExecutionContextImpl
-
-
A interface
org.jboss.resteasy.spi.interception.MessageBodyWriterInterceptor
foi substituída pela interfacejavax.ws.rs.ext.WriterInterceptor
. In addition, some changes to the
javax.ws.rs.ext.MessageBodyWriter
interface might not be backward compatible with respect to JAX-RS 1.x. If your application used JAX-RS 1.x, review your application code to make sure you define@Produces
or@Consumes
for your endpoints. Failure to do so might result in an error similar to the following.org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Não pode encontrar MessageBodyWriter para objeto de resposta do tipo: <OBJECT> de tipo de mídia:
Segue um exemplo de um ponto de extremidade REST que pode causar este erro.
@Path("dates") public class DateService { @GET @Path("daysuntil/{targetdate}") public long showDaysUntil(@PathParam("targetdate") String targetDate) { DateLogger.LOGGER.logDaysUntilRequest(targetDate); final long days; try { final LocalDate date = LocalDate.parse(targetDate, DateTimeFormatter.ISO_DATE); days = ChronoUnit.DAYS.between(LocalDate.now(), date); } catch (DateTimeParseException ex) { // ** DISCLAIMER **. This example is contrived. throw new WebApplicationException(Response.status(400).entity(ex.getLocalizedMessage()).type(MediaType.TEXT_PLAIN) .build()); } return days; } }
Para consertar este problema, adicione a importação de
javax.ws.rs.Produces
e a anotação@Produces
conforme segue.... import javax.ws.rs.Produces; ... @Path("dates") public class DateService { @GET @Path("daysuntil/{targetdate}") @Produces(MediaType.TEXT_PLAIN) public long showDaysUntil(@PathParam("targetdate") String targetDate) { DateLogger.LOGGER.logDaysUntilRequest(targetDate); final long days; try { final LocalDate date = LocalDate.parse(targetDate, DateTimeFormatter.ISO_DATE); days = ChronoUnit.DAYS.between(LocalDate.now(), date); } catch (DateTimeParseException ex) { // ** DISCLAIMER **. This example is contrived. throw new WebApplicationException(Response.status(400).entity(ex.getLocalizedMessage()).type(MediaType.TEXT_PLAIN) .build()); } return days; } }
Todos interceptores de lançamentos prévios do RESTEasy podem executar em paralelo com o novo filtro JAX-RS 2.0 e interfaces de interceptor.
For more information about interceptors, see RESTEasy Interceptors in Developing Web Services Applications for JBoss EAP.
Para mais informações sobre a nova API de substituição, consulte RESTEasy JAX-RS 3.0.13.Final API ou mais recente.
API Cliente
A framework do cliente RESTEasy de resteasy-jaxrs
foi substituída pelo módulo resteasy-client
compatível a JAX-RS 2.0. Sendo assim, algumas classes e métodos de API do cliente RESTEasy são preteridos.
As seguintes classes são preteridas.
-
A exceção
org.jboss.resteasy.client.ClientResponseFailure
e as interfacesorg.jboss.resteasy.client.ClientExecutor
eorg.jboss.resteasy.client.EntityTypeFactory
são também preteridas. Você deve substituir as classes
org.jboss.resteasy.client.ClientRequest
eorg.jboss.resteasy.client.ClientResponse
comorg.jboss.resteasy.client.jaxrs.ResteasyClient
ejavax.ws.rs.core.Response
respectivamente.Segue um exemplo de como enviar um link header com o cliente RESTEasy em RESTEasy 2.3.x.
ClientRequest request = new ClientRequest(generateURL("/linkheader/str")); request.addLink("previous chapter", "previous", "http://example.com/TheBook/chapter2", null); ClientResponse response = request.post(); LinkHeader header = response.getLinkHeader();
O seguinte é um exemplo de como executar a mesma tarefa com cliente RESTEasy em RESTEasy 3.
ResteasyClient client = new ResteasyClientBuilder().build(); Response response = client.target(generateURL("/linkheader/str")).request() .header("Link", "<http://example.com/TheBook/chapter2>; rel=\"previous\"; title=\"previous chapter\"").post(Entity.text(new String())); javax.ws.rs.core.Link link = response.getLink("previous");
Consulte o início rápido
resteasy-jaxrs-client
para um exemplo de um cliente JAX-RS RESTEasy externo que interage com um serviço web JAX-RS.-
As classes e interfaces no pacote
org.jboss.resteasy.client.cache
também são preteridas. Elas foram substituídas pelas interfaces e classes equivalentes no pacoteorg.jboss.resteasy.client.jaxrs.cache
.
Para mais informações sobre classes de API org.jboss.resteasy.client.jaxrs
, consulte RESTEasy JAX-RS JavaDoc.
StringConverter
A classe org.jboss.resteasy.spi.StringConverter
está preterida em RESTEasy 3.x. Esta funcionalidade pode ser substituída usando a classe JAX-RS 2.0 jax.ws.rs.ext.ParamConverterProvider.
5.4.2. Classes de RESTEasy removidas ou protegidas
Métodos de adição de ResteasyProviderFactory
A maior parte de métodos org.jboss.resteasy.spi.ResteasyProviderFactory
add()
foi removida ou protegida do RESTEasy 3.0. Por exemplo, os métodos addBuiltInMessageBodyReader()
e addBuiltInMessageBodyWriter()
foram removidos e os métodos addMessageBodyReader()
e addMessageBodyWriter()
foram protegidos.
Agora, você deve usar os métodos registerProvider()
e registerProviderInstance()
.
Classes suplementares removidas do RESTEasy 3
A anotação @org.jboss.resteasy.annotations.cache.ServerCached
, que especificava a resposta para o método JAX-RS deve ser memorizada no servidor, foi removida do RESTEasy 3 e deve ser removida do código do aplicativo.
5.4.3. Outras alterações de RESTEasy
SignedInput e SignedOuput
-
SignedInput
eSignedOutput
pararesteasy-crypto
deve terContent-Type
configurado paramultipart/signed
no objetoRequest
ouResponse
, ou usar as anotações@Consumes
ou@Produces
. -
SignedOutput
eSignedInput
podem ser usados para retornar o formato tipo MIMEapplication/pkcs7-signature
em forma binária ao definir este tipo nas anotações@Produces
ou@Consumes
. -
Se
@Produces
ou@Consumes
forem tipo MIMEtext/plain
,SignedOutput
será codificado em base64 enviado como um cadeia.
Filtros de segurança
Os filtros de segurança para @RolesAllowed
, @PermitAll
e @DenyAll
agora retornam "403 Forbidden" ao invés de "401 Unauthorized".
Filtros do lado do cliente
Os novos filtros JAX-RS 2.0 lado cliente não serão limitados e executarão quando você estiver usando a API de cliente RESTEasy a partir de um lançamento prévio.
Suporte HTTP assíncrono
Because the JAX-RS 2.0 specification adds asynchronous HTTP support using the @Suspended
annotation and the AsynResponse
interface, the RESTEasy proprietary API for asynchronous HTTP has been deprecated and might be removed as soon as RESTEasy 3.1. The asynchronous Tomcat and asynchronous JBoss Web modules have also been removed from the server installation. If you are not using the Servlet 3.0 container or higher, asynchronous HTTP server-side processing will be simulated and run synchronously in same request thread.
Cache do lado do servidor
A configuração da cache do lado do servidor foi alterada. Por favor, consulte a Documentação RESTEasy para mais informações.
5.4.4. Alterações SPI RESTEasy
Exceções SPI
Todas exceções de falhas SPI foram preteridas e não são mais utilizadas internamente. Elas foram substituídas com a exceção JAX-RS 2.0 correspondente.
Exceção preterida | Exceção de substituição do módulo jaxrs-api |
---|---|
org.jboss.resteasy.spi.ForbiddenException |
javax.ws.rs.ForbiddenException |
org.jboss.resteasy.spi.MethodNotAllowedException |
javax.ws.rs.NotAllowedException |
org.jboss.resteasy.spi.NotAcceptableException |
javax.ws.rs.NotAcceptableException |
org.jboss.resteasy.spi.NotFoundException |
javax.ws.rs.NotFoundException |
org.jboss.resteasy.spi.UnauthorizedException |
javax.ws.rs.NotAuthorizedException |
org.jboss.resteasy.spi.UnsupportedMediaTypeException |
javax.ws.rs.NotSupportedException |
InjectorFactory e Registro
As SPIs InjectorFactory
e Registry
foram alteradas. Isto não deve ser um problema se você usar RESTEasy conforme documentado e suportado.
5.4.5. Alterações do provedor Jackson
A versão de Jackson incluída no JBoss EAP foi alterada. A versão anterior do JBoss EAP incluía Jackson 1.9.9. O JBoss EAP 7 inclui agora Jackson 2.6.3 ou superior. Como resultado, o provedor Jackson foi alterado de resteasy-jackson-provider
para resteasy-jackson2-provider
A atualização para o resteasy-jackson2-provider
requer algumas alterações de pacotes. Por exemplo, o pacote de anotações Jackson foi alterado de org.codehaus.jackson.annotate
para com.fasterxml.jackson.annotation
.
To switch your application to use the default provider that was included in the previous release of JBoss EAP, see Switching the Default Jackson Provider in Developing Web Services Applications for JBoss EAP.
5.4.6. Alterações à integração de Spring RESTEasy
A framework de Spring 4.0 introduziu suporte para Java 8. Se você planeja usar integração RESTEasy 3.x com Spring, certifique-se que especificou 4.2.x como a versão mínima para Spring em sua implantação pois esta é a versão estável mais recente suportada pelo JBoss EAP 7.
5.4.7. Alterações ao fornecedor RESTEasy Jettison JSON
O fornecedor RESTEasy Jettison JSON é preterido no JBoss EAP 7 e não é mais adicionado às implantações por padrão. Aconselhamos que troque para o fornecedor recomendado RESTEasy Jackson. Se preferir continuar a utilizar o fornecedor Jettison, você deve definir uma dependência explicita para ele no arquivo jboss-deployment-descriptor.xml
como demonstrado no seguinte exemplo.
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <exclusions> <module name="org.jboss.resteasy.resteasy-jackson2-provider"/> <module name="org.jboss.resteasy.resteasy-jackson-provider"/> </exclusions> <dependencies> <module name="org.jboss.resteasy.resteasy-jettison-provider" services="import"/> </dependencies> </deployment> </jboss-deployment-structure>
For more information about how to define explicit dependencies, see Add an Explicit Module Dependency to a Deployment in the JBoss EAP Development Guide.
5.5. Alterações aos aplicativos CDI 1.2
JBoss EAP 7 includes support for CDI 1.2. As a result, applications written using CDI 1.0 might see some changes in behavior when migrated to JBoss EAP 7. This section summarizes only a few of those changes.
Você pode encontrar mais informações sobre Weld e CDI 1.2 nas seguintes referências:
Arquivos Bean
As classes Bean de beans ativos devem ser implantadas nos arquivos bean para certificarmos de que estão escaneados pelo CDI para achar e processar as classes bean.
Em CDI 1.0, um arquivo era definido como um arquivo bean explicit se contivesse um arquivo beans.xml
no diretório META-INF/
para um aplicativo cliente, EJB ou biblioteca JAR; ou se contivesse um arquivo beans.xml
no diretório WEB-INF/
para um WAR.
CDI 1.1 introduziu arquivos bean implicit, que são arquivos que contêm uma ou mais classes de bean com uma anotação de definição de bean, ou uma ou mais sessões beans. Arquivos beans implícitos são escaneados por CDI e, durante o descobrimento do tipo, somente classes com anotações de definição bean são descobertas. Para mais informações, consulte Descoberta de Bean e tipo em Injeção de dependências e contextos para plataforma Java EE.
Um arquivo bean possui modos de descobertas de bean all
, annotated
ou none
. Um arquivo bean que contém um arquivo beans.xml
sem versão tem um modo de descoberta de bean padrão all
. Um arquivo bean que contém um arquivo beans.xml
com versão 1.1
ou mais recente deve especificar o atributo bean-discovery-mode
. O valor padrão para o atributo é annotated
.
Um arquivo não é um arquivo bean nos seguintes casos:
-
Contiver um arquivo
beans.xml
com umbean-discovery-mode
denone
. -
Contiver uma extensão CDI sem arquivo
beans.xml
.
Um arquivo é um arquivo bean explicit nos seguintes casos:
-
A pasta de arquivos contém um arquivo
beans.xml
com um número de versão 1.1 ou mais recente e umbean-discovery-mode
deall
. -
A pasta de arquivos contém um arquivo
beans.xml
sem número de versão. -
A pasta de arquivos contém um arquivo
beans.xml
vazio.
Um arquivo é um arquivo bean implicit nos seguintes casos:
-
O arquivo contém uma ou mais classes de bean com uma anotação de definição de bean ou uma ou mais sessões de beans, mesmo que não contenha um arquivo
beans.xml
. -
A pasta de arquivo contém um arquivo
beans.xml
com umbean-discovery-mode
deannotated
.
CDI 1.2 limitava anotações de definição de bean para o seguinte:
-
Anotações
@ApplicationScoped
,@SessionScoped
,@ConversationScoped
e@RequestScoped
- Todos os outros tipos de escopos normais.
-
Anotações
@Interceptor
e@Decorator
-
Todas as anotações de esteriótipos, que são anotações anotadas com
@Stereotype
-
Anotações de escopo
@Dependent
Para mais informações sobre os arquivos bean, consulte Arquivos Bean em Contextos e injeções de dependências para a plataforma Java EE .
Esclarecimento de resolução de conversação
O ciclo de vida de contexto de conversação foi alterado para prevenir conflitos com as especificações do Servlet conforme descrito em Problema de especificação CDI-411. O escopo de conversação está ativo durante todas as requisições servlet e não deve impedir que outros servlets ou filtros de servlet definam o corpo da requisição ou codificação do caractere.
Resolução por observação
A resolução de evento foi parcialmente reescrita em CDI 1.2. Em CDI 1.0, um evento é entregue a um método de observação se o método de observação possui todos os qualificadores de evento. Em CDI 1.2, um evento é entregue a um método de observação se o método de observação não possui qualificadores de evento ou possui um subconjunto dos qualificadores de evento.
5.6. Migrar as dependências de módulo explicito
A introdução de sistema de carregamento de classe modular e JBoss Modules nos lançamentos prévios do JBoss EAP permitiam controle de alta granularidade das classes disponíveis para aplicativos. Este recurso permitia que você configurasse dependências de módulo explícito usando o arquivo MANIFEST.MF
do aplicativo ou o arquivo descritor de implantação jboss-deployment-structure.xml
.
Se você definiu dependências de módulo explícito em seu aplicativo, você deve estar ciente das seguintes alterações no JBoss EAP 7.
Verifique dependências para disponibilidade
Os módulos que estão incluídos no JBoss EAP foram alterados. Quando você migrar seu aplicativo para JBoss EAP 7, verifique suas entradas de arquivo MANIFEST.MF
e jboss-deployment-structure.xml
para certificar-se de que elas não se referem a nenhum módulo que foi removido neste lançamento de produto.
Dependências que requerem scan de anotação
No lançamento prévio do JBoss EAP, caso sua dependência contivesse anotações que precisavam ser processadas durante o scan de anotação, por exemplo quando declarando interceptadores EJB, era solicitado que você gerasse e incluísse um índice Jandex em um novo arquivo JAR e depois definisse um sinalizador no arquivo descritor de implantação MANIFEST.MF
ou jboss-deployment-structure.xml
.
Agora JBoss EAP 7 oferece geração de tempo de execução automática de índices de anotação para módulos estáticos, assim você não precisa mais gerá-los manualmente. Contudo, você ainda precisa adicionar o sinalizador annotations
ao arquivo MANIFEST.MF
do aplicativo ou o arquivo descritor de implantação jboss-deployment-structure.xml
conforme demonstrado abaixo.
Exemplo de sinalizador de anotação no arquivo MANIFEST.MF
Dependências: com.company.my-ejb annotations, com.company.other
Exemplo de sinalizador de anotação no arquivo jboss-deployment-structure.xml
<jboss-deployment-structure> <deployment> <dependencies> <module name="com.company.my-ejb" annotations="true"/> <module name="com.company.other"/> </dependencies> </deployment> </jboss-deployment-structure>
5.7. Alterações de migração JPA e Hibernate
5.7.1. Hibernate ORM 3.0
As classes de integração que facilitaram a utilização do Hibernate ORM 3 em lançamentos prévios foram removidas do JBoss EAP 7. Se seu aplicativo ainda utiliza bibliotecas do Hibernate ORM 3, é altamente recomendável que você migre seu aplicativo para utilizar Hibernate ORM 5 pois Hibernate ORM 3 não funcionará mais em JBoss EAP facilmente. Se você não pode migrar para Hibernate ORM 5, você deve definir um módulo JBoss personalizado para os JARs de Hibernate ORM 3 e excluir as classes de Hibernate ORM 5 de seu aplicativo.
5.7.2. Hibernate ORM 4.0 - 4.3
Caso seu aplicativo necessite que o cache de segundo nível seja ativado, você deve migrar para Hibernate ORM 5.0, que é integrado com Infinispan 8.x.
Aplicativos escritos com Hibernate ORM 4.x ainda podem usar Hibernate 4.x. Você deve definir um módulo JBoss personalizado para os JARs Hibernate 4.x e excluir as classes Hibernate 5 de seu aplicativo. Contudo, é altamente recomendável que você reescreva o código de seu aplicativo para usar Hibernate 5. Para information sobre como migrar para Hibernate ORM 5, consulte Migrating to Hibernate ORM 5.
5.7.3. Hibernate ORM 5
Caso seu aplicativo contiver um arquivo persistence.xml
ou o código usa anotações @PersistenceContext
ou @PersistenceUnit
, JBoss EAP 7 detecta isto durante a implantação e presume que o aplicativo usa JPA. As bibliotecas Hibernate ORM 5.O são implicitamente adicionadas, assim como algumas outras dependências, ao caminho de classe de seu aplicativo e estas bibliotecas são usadas por padrão.
5.7.4. Migrando para Hibernate ORM 5
Esta seção destaca as alterações que você precisa fazer quando migrar do Hbernate ORM versão 4.3 para versão 5. Para mais informações sobe as alterações implementadas entre o Hibernate ORM 4 e Hibernate ORM 5, consulte o Guia de migração Hibernate ORM 5.0.
Classes preteridas e excluídas
The following deprecated classes were removed from Hibernate ORM 5.
Outras alterações às classes e pacotes
-
A interface
org.hibernate.integrator.spi.Integrator
mudou para contabilizar o novo projeto do bootstrap. -
Um novo pacote
org.hibernate.engine.jdbc.env
package foi criado. Ele contém a interfaceorg.hibernate.engine.jdbc.env.spi.JdbcEnvironment
, que foi extraída da interfaceorg.hibernate.engine.jdbc.spi.JdbcServices
. -
Uma nova interface
org.hibernate.boot.model.relational.ExportableProducer
foi introduzida que irá afetar implementaçõesorg.hibernate.id.PersistentIdentifierGenerator
. -
A assinatura de
org.hibernate.id.Configurable
foi alterada para aceitarorg.hibernate.service.ServiceRegistry
ao invés de sóorg.hibernate.dialect.Dialect
. -
A interface
org.hibernate.metamodel.spi.TypeContributor
foi migrada paraorg.hibernate.boot.model.TypeContributor
. -
A interface
org.hibernate.metamodel.spi.TypeContributions
foi migrada paraorg.hibernate.boot.model.TypeContributions
.
Type Handling
-
Implementações incorporadas
org.hibernate.type.descriptor.sql.SqlTypeDescriptor
não mais se auto registrarão comorg.hibernate.type.descriptor.sql.SqlTypeDescriptorRegistry
. Os aplicativos utilizando implementações personalizadasSqlTypeDescriptor
que estendem as implementações incorporadas e apóiam-se neste comportamento devem ser atualizadas para chamarem-seSqlTypeDescriptorRegistry.addDescriptor()
. -
Para IDs definidas como UUIDs geradas, alguns bancos de dados precisavam que você definisse explicitamente o
@Column(length=16)
para gerar oBINARY(16)
para que as comparações funcionem adequadamente. -
Para
mapeamento tipo Enum
definido emhbm.xml
, onde você desejajavax.persistence.EnumType.STRING
name-mapping
, esta configuração deve ser declarada explicitamente ao usar definiçãouseNamed(true)
ou ao especificar um VARCHAR valor de12
.
Gerenciamento de transação.
-
A IDA de transação passou por uma reformulação considerável no Hibernate ORM 5. Em Hibernate ORM 4.3, você utilizava a API
org.hibernate.Transaction
para acessar diretamente estratégias de transações back-end. Hibernate ORM 5 introduziu um nível de indireção. No back end, a implementaçãoorg.hibernate.Transaction
agora conversa com umorg.hibernate.resource.transaction.TransactionCoordinator
, que representa o contexto transacional para uma dada sessão de acordo com a estratégia de back-end. Mesmo que isto não tenha um impacto direto nos desenvolvedores, pode afetar a configuração do bootstrap. Anteriormente, aplicativos especificavam propriedadehibernate.transaction.factory_class
, que agora tornou-se preterida, e referiam aoorg.hibernate.engine.transaction.spi.TransactionFactory
FQN (fully qualified name). Com o Hibernate ORM 5, você especifica a configuraçãohibernate.transaction.coordinator_class
e refere a umorg.hibernate.resource.transaction.TransactionCoordinatorBuilder
. Vejaorg.hibernate.cfg.AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY
para informações adicionais. Os seguintes nomes curtos são agora reconhecidos.
-
jdbc: Manage transactions using the JDBC
java.sql.Connection
. This is the default for non-JPA transactions. jta: Manage transactions using JTA.
ImportanteIf a JPA application does not provide a setting for the
hibernate.transaction.coordinator_class
property, Hibernate will automatically build the proper transaction coordinator based on the transaction type for the persistence unit.If a non-JPA application does not provide a setting for the
hibernate.transaction.coordinator_class
property, Hibernate will default tojdbc
to manage the transactions. This default will cause problems if the application actually uses JTA-based transactions. A non-JPA application that uses JTA-based transactions should explicitly set thehibernate.transaction.coordinator_class
property value tojta
or provide a customorg.hibernate.resource.transaction.TransactionCoordinatorBuilder
that builds aorg.hibernate.resource.transaction.TransactionCoordinator
that properly coordinates with JTA-based transactions.
-
jdbc: Manage transactions using the JDBC
Outra alteração Hibernate ORM 5
-
Os arquivos
cfg.xml
são novamente completamente analisados e integrados com eventos, segurança e outras funções. -
As propriedades carregadas a partir de
cfg.xml
usando aEntityManagerFactory
não colocou prefixos anteriormente comhibernate
. Isto tornou-se consistente. - A configuração não é serializável.
-
O método
org.hibernate.dialect.Dialect.getQuerySequencesString()
agora recupera valores de catálogo, esquema e incremento. -
O modificador
AuditConfiguration
foi removido deorg.hibernate.envers.boot.internal.EnversService
. -
Os parâmetros de método
AuditStrategy
foram alterados para excluirAuditConfiguration
preterido e usar o novoEnversService
. -
Várias classes e interfaces no
org.hibernate.hql.spi
package and subpackages have been moved to the neworg.hibernate.hql.spi.id
package. Isto inclui a classeMultiTableBulkIdStrategy
e interfaces e suas subclassesAbstractTableBasedBulkIdHandler
,TableBasedDeleteHandlerImpl
, eTableBasedUpdateHandlerImpl
. - Houve um redesenho completo de contratos de acesso a propriedade.
-
Valores de definição válidos
hibernate.cache.default_cache_concurrency_strategy
agora são definidos utilizando o métodoorg.hibernate.cache.spi.access.AccessType.getExternalName()
em vez de constantes enumorg.hibernate.cache.spi.access.AccessType
. Isto é mais consistente com outras definições de Hibernate.
5.8. Alterações no Hibernate Search
A versão do Hibernate Search fornecida com JBoss EAP 7 foi alterada. O lançamento prévio do JBoss EAP fornecia Hibernate Search 4.6.x. O JBoss EAP 7 fornece Hibernate Search 5.5.x.
Hibernate Search 5.5 is built upon Apache Lucene 5.3.1. If you use any native Lucene APIs, be sure to align with this version. The Hibernate Search 5.5 API wraps and hides the complexity of many of the Lucene API changes made between version 3 and version 5, however, some classes are now deprecated, renamed, or repackaged. This section describes how these changes might impact your application code.
Alterações de mapeamento do Hibernate Search
Indexing of id Fields of Embedded Relations
Quando usar uma anotação @IndexedEmbedded
para incluir campos de uma entidade relacionada, a id
da entidade relacionada não é mais incluída. Você pode ativar a inclusão da id
ao usar o atributo includeEmbeddedObjectId
da anotação @IndexedEmbedded
.
@IndexedEmbedded(includeEmbeddedObjectId=true)
Modificações na formatação do índice de data e número
Agora, números e datas são indexados por padrão como campos numéricos. Propriedades de tipo int
, long
, float
, double
, e suas classes encapsuladas correspondentes não são mais indexadas como cadeias. Ao invés, elas são agora indexadas usando codificação Lucene numérica apropriada. Os campos id
são é uma exceção a esta regra. Mesmo quando são representados por um tipo numérico, eles ainda são indexados como uma palavra-chave de cadeia por padrão. Agora, o uso de @NumericField
é preterido, a não ser que você queira especificar uma precisão personalizada para a codificação numérica. Você pode manter o antigo formato de índice baseado em cadeia ao especificar explicitamente uma ponde de campo de codificação em cadeia. No caso de inteiros, isto é o org.hibernate.search.bridge.builtin.IntegerBridge. Verifique o pacote org.hibernate.search.bridge.builtin para outras pontes de campos acessíveis publicamente.
Data
e Calendário
não são mais indexados como cadeias. Ao invésdisso, instâncias são codificadas como valores compridos representando o número de milissegundos desde 1 de janeiro de 1970, 00:00:00 GMT. Você pode trocar o formato de indexação ao usar EncodingType enum. Por exemplo:
@DateBridge(encoding=EncodingType.STRING) @CalendarBridge(encoding=EncodingType.STRING)
A alteração de codificação para números e datas é importante e pode ter um grande impacto no comportamento do aplicativo. Se você tem uma consulta que se destina a um campo que foi previamente codificado em cadeia, mas está agora codificado numericamente, você deve atualizar esta consulta. Campos numéricos devem ser pesquisados com um NumericRangeQuery
. Você deve também certificar-se que todos os campos destinados por facetamento são codificados em cadeia. Se você usar a consulta DSL Search, a consulta correta deve ser criada automaticamente para você .
Alterações diversas no Hibernate Search
-
Opções de classificação foram melhoradas e agora codificação de campos especificados incorretamente para opções de classificação resultam em exceções de tempo de execução. Lucene também oferece classificação mais eficaz se os campos utilizados na classificação são conhecidos antecipadamente. Hibernate Search 5.5 fornece uma nova anotação
@SortableField
e seu companheiro multi-valorizado@SortableFields
. Consulte o link Guia de Migração do Hibernate Search 5.4 para 5.5 para mais informações . A API
SortField
da Lucene requer a seguinte alteração de código de aplicativo.No lançamento prévio do JBoss EAP, você definia o tipo do campo de classificação na consulta conforme segue.
fulltextQuery.setSort(new Sort(new SortField("title", SortField.STRING)));
O seguinte é um exemplo de como definir no JBoss EAP 7.
fulltextQuery.setSort(new Sort(new SortField("title", SortField.Type.STRING)));
-
Já que
SearchFactory
deve ser somente usado por integração ORM, ele foi movido do módulohibernate-search-engine
para o módulohibernate-search-orm
. Outros integradores devem depender exclusivamente emSearchIntegrator
, que substitui o preteridoSearchFactoryIntegrator
. -
O valor enum
SpatialMode.GRID
foi renomeado paraSpatialMode.HASH
. -
FullTextIndexEventListener
agora é uma classe final. Se você atualmente estende esta classe, você deve achar uma solução alternativa para conseguir a mesma funcionalidade. -
O módulo
hibernate-search-analyzers
foi removido. A abordagem recomendada é usar diretamente o artefato Lucene apropriado, por exemploorg.apache.lucene:lucene-analyzers-common
. -
The JMS controller API has changed. The JMS back-end dependency on Hibernate ORM was removed so that it could be used in other non-ORM environments. A consequence is that implementors of
org.hibernate.search.backend.impl.jms.AbstractJMSHibernateSearchController
must adjust to the new signature. This class is an internal class and it is recommended to use it as an example instead of extending it. -
A SPI
org.hibernate.search.spi.ServiceProvider
foi refatorada. Se você estava integrando com o contrato de serviço antigo, consulte Hibernate Search 5.5 Javadoc doServiceManager
,Service
,Startable
eStoppable
para detalhes sobre o novo contrato. -
Se você manteve índices gerados pelo Lucene 3.x e não os reconstruiu com Hibernate Search 5.0 ou mais recente, você receberá um
IndexFormatTooOldException
. É recomendado que você reconstrua os índices com o indexador em massa. Se você não pode fazer isto, tente usar oIndexUpgrader
do Lucerne. Você deve atualizar cuidadosamente o mapeamento do Hibernate Search caso o comportamento padrão tenha sido alterado. Para mais informações, consulte Guia de migração do Apache Lucene . - O Apache Lucene foi atualizado do 3.6 para 5.3 no JBoss EAP 7. Se o seu código importa o código Lucene diretamente, consulte Guia de migração do Apache Lucene para detalhes das alterações. Informações adicionais podem também serem encontradas no Lucene Change Log.
-
Quando usar
@Field(indexNullAs=)
para codificar um valor de marcação nulo no índice, o tipo de marcação deve ser compatível com todos os outros valores que estão indexados no mesmo campo. Por exemplo, anteriormente, era possível codificar um valor nulo para campos numéricos usando uma cadeia "nula". Isto não é mais possível. Ao invés disso, você deve escolher um número para representar o valornulo
, como por exemplo-1
. -
Foram feitos aprimoramentos significantes ao mecanismo de faceta. A maior parte das alterações não afetam a API. Uma exceção importante é que agora você deve anotar quaisquer campos que pretende usar a faceta com a anotação
@Facet
ou@Facets
.
Classes de Hibernate Search renomeadas e reempacotadas
A lista que segue é uma lista de classes de Hibernate Search que foram reempacotadas ou renomeadas.
Pacote e anterior e classe | Novo pacote e classe |
---|---|
org.hibernate.search.Environment |
org.hibernate.search.cfg.Environment |
org.hibernate.search.FullTextFilter |
org.hibernate.search.filter.FullTextFilter |
org.hibernate.search.ProjectionConstants |
org.hibernate.search.engine.ProjectionConstants |
org.hibernate.search.SearchException |
org.hibernate.search.exception.SearchException |
org.hibernate.search.Version |
org.hibernate.search.engine.Version |
Lucene - Classes renomeadase reempacotadas
Os analisadores de consultas foram movidos para um novo módulo, resultando em uma alteração de pacotes de org.apache.lucene.queryParser.QueryParser
para org.apache.lucene.queryparser.classic.QueryParser
.
Vários analisadores Lucene foram refatorados resultando em alterações de pacotes. Consulte Documentação Apache Lucene para procurar pacotes substitutos.
Algumas classes de utilidades Apache Solr, por exemplo TokenizerFactory
ou TokenFilterFactory
, foram movidas para o Apache Lucene. Caso seu aplicativo usar estas utilidades ou analisadores personalizados, você deve procurar o novo nome de pacote no Apache Lucene.
Consulte o Guia de Migração Apache Lucene para mais informações.
APIs Hibernate Search preteridas
Para a lista completa de interfaces preteridas de Hibernate Search, de classes, de enums, tipos de anotações, métodos, construtores e constantes de enum, consulte o documento Hibernate Search Deprecated API.
Interfaces preteridas de Hibernate Search
Interface | Descrição |
---|---|
org.hibernate.search.store.IndexShardingStrategy |
Preterida desde Hibernate Search 4.4. Pode ser removida em Search 5. Em seu lugar use ShardIdentifierProvider. |
org.hibernate.search.store.Workspace |
Esta interface será movida e deve ser considerada API não-pública. Para mais informações, vejaHSEARCH-1915. |
Classes Hibernate Search preteridas
Classe | Descrição |
---|---|
org.hibernate.search.filter.FilterKey |
As chaves de filtragem personalizadas são preteridas e estão programadas para serem removidas em Hibernate Search 6. A partir de Hibernate Search 5.1, as chaves para caching os filtros Lucene são calculadas automaticamente baseando-se nos parâmetros de filtros fornecidos. |
org.hibernate.search.filter.StandardFilterKey |
As chaves de filtragem personalizadas são preteridas e estão programadas para serem removidas em Hibernate Search 6. A partir de Hibernate Search 5.1, as chaves para caching os filtros Lucene são calculadas automaticamente baseando-se nos parâmetros de filtros fornecidos. |
Hibernate Search Deprecated Enums
Enum | Descrição |
---|---|
org.hibernate.search.annotations.FieldCacheType |
Remova a anotação |
Anotações preteridas de Hibernate Search
Anotação | Descrição |
---|---|
org.hibernate.search.annotations.CacheFromIndex |
Remover anotação. Não é necessário um substituto alternativo. |
org.hibernate.search.annotations.Key |
As chaves de cache de filtro personalizado são uma funcionalidade preterida e estão programadas para serem removidas em Hibernate Search 6. A partir de Hibernate Search 5.1, as chaves de cache de filtro são definidas automaticamente baseadas nos parâmetros de filtros, portanto não é mais necessário fornecer um objeto chave. |
Métodos preteridos de Hibernate Search
Método | Descrição |
---|---|
org.hibernate.search.FullTextSharedSessionBuilder.autoClose() |
Sem substitução |
org.hibernate.search.FullTextSharedSessionBuilder.autoClose(boolean) |
Sem substitução |
org.hibernate.search.cfg.IndexedMapping.cacheFromIndex(FieldCacheType…) |
Isto será removido sem substituição. |
org.hibernate.search.cfg.EntityDescriptor.getCacheInMemory() |
Isto será removido sem substituição. |
org.hibernate.search.cfg.ContainedInMapping.numericField() |
Invoke |
org.hibernate.search.cfg.EntityDescriptor.setCacheInMemory(Map<String, Object>) |
Isto será removido sem substituição. |
org.hibernate.search.MassIndexer.threadsForSubsequentFetching(int) |
Este método será removido. |
org.hibernate.search.query.dsl.FuzzyContext.withThreshold(float) |
Utilize |
Construtores preteridos de Hibernate Search
Construtor | Descrição |
---|---|
org.hibernate.search.cfg.NumericFieldMapping(PropertyDescriptor, EntityDescriptor, SearchMapping) |
Utilize |
Alterações que impactam integradores avançados
Esta seção descreve alterações que não fazem parte da API pública. Isto não deve impactar o desenvolvedor comum pois estes artefatos devem ser acessados somente por integradores que estendem a framework Hibernate Search.
-
As constantes de enum
IndexWriterSetting.MAX_THREAD_STATES
eIndexWriterSetting.TERM_INDEX_INTERVAL
são preteridas. Elas afetam quais as propriedades são lidas a partir da configuração, portanto o fato de serem ausentes significa que propriedades de configuração comohibernate.search.Animals.2.indexwriter.term_index_interval = default
agora são ignoradas. O único efeito colateral é que a propriedade não é aplicada. -
A interface
SearchFactoryIntegrator
agora esta preterida. Você deve migar imediatamente todo código para utilizarSearchIntegrator
. -
A classe
SearchFactoryBuilder
agora está preterida. UtilizeSearchIntegrationBuilder
em seu lugar. -
The
HSQuery.getExtendedSearchIntegrator()
method has been deprecated. It might be possible to useSearchIntegrator
, but it is preferable to remove it altogether. -
O método
DocumentBuilderIndexedEntity.getFieldCacheOption()
foi preterido. Não há substituto. -
O método
BuildContext.getIndexingStrategy()
esta preterido. UtilizeBuildContext.getIndexingMode()
em seu lugar. -
O método
DirectoryHelper.getVerifiedIndexDir(String, Properties, boolean)
está preterido. UtilizeDirectoryHelper.getVerifiedIndexPath(java.lang.String, java.util.Properties, boolean)
em seu lugar. A lista que segue é uma lista de classes de Hibernate Search que foram reempacotadas ou renomeadas.
Pacote e anterior e classe Novo pacote e classe org.hibernate.search.engine.impl.SearchMappingBuilder
org.hibernate.search.engine.spi.SearchMappingHelper
org.hibernate.search.indexes.impl.DirectoryBasedIndexManager
org.hibernate.search.indexes.spi.DirectoryBasedIndexManager
org.hibernate.search.spi.MassIndexerFactory
org.hibernate.search.batchindexing.spi.MassIndexerFactory
org.hibernate.search.spi.SearchFactoryBuilder
org.hibernate.search.spi.SearchIntegratorBuilder
org.hibernate.search.spi.SearchFactoryIntegrator
org.hibernate.search.spi.SearchIntegrator
5.9. Migrar de beans de entidade para JPA
Suporte para beans de entidade EJB é facultativo em Java EE 7 e não são suportados em JBoss EAP 7. Isto significa que beans de entidade de persistência gerenciada por contêiner (CMP) e persistência gerenciada pelo bean (BMP) devem ser reescritos para usar entidades Java Persistence API (JPA) quando você migrar para JBoss EAP 7.
Nas versões anteriores de JBoss EAP, beans de entidade eram criados em código fonte de aplicativo ao estender a classe javax.ejb.EntityBean
e implementar os métodos requeridos. A partir dai, eles eram configurados no arquivo ejb-jar.xml
. Um bean de entidade CMP era especificado usando um elemento <entity>
que continha um elemento filho <persistence-type>
com um valor de Container. Um bean de entidade BMP era especificado usando um elemento <entity>
que continha um elemento filho <persistence-type>
com um valor de Bean.
EmJBoss EAP 7, você deve substituir quaisquer beans de entidade CMP e BMP em seu código com entidades Java Persistence API (JPA). Entidades JPA são criadas usando as classesjavax.persistence.* e são definidas no arquivo persistence.xml
.
O que segue é um exemplo de uma classe de entidade JPA.
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity // User is a keyword in some SQL dialects! @Table(name = "MyUsers") public class MyUser { @Id @GeneratedValue private Long id; @Column(unique = true) private String username; private String firstName; private String lastName; public Long getId() { return id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; }
O seguinte é um exemplo de um arquivo persistence.xml
.
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="my-unique-persistence-unit-name"> <properties> // properties... </properties> </persistence-unit> </persistence>
Para obter exemplos de entidades JPA, consulte o início rápido bmt
, cmt
e hibernate5
que fornecido em JBoss EAP 7.
5.10. Alterações de propriedades de persistência JPA
Uma nova propriedade de persistência, jboss.as.jpa.deferdetach
, foi adicionada para fornecer compatibilidade com o comportamento de persistência em lançamentos prévios de JBoss EAP.
A propriedade jboss.as.jpa.deferdetach
controla se o contexto de persistência transaction-scoped utilizado em uma thread de transação non-JTA desanexa entidades carregadas após cada invocação EntityManager
ou se aguarda até que o contexto de persistência esteja fechado, por exemplo, quando é finalizada a sessão de invocação de bean. O valor de propriedade é por padrão false
, o que significa que entidades são desanexadas ou removidas após cada invocação EntityManager
. Este é o comportamento padrão correto conforme definido em especificação JPA . Caso o valor de propriedade estiver definido para true
, as entidade não são desanexadas até que o contexto de persistência esteja fechado.
Em JBoss EAP 5, as persistências comportavam-se como se a propriedade jboss.as.jpa.deferdetach
estivesse definida para true
. Para obter este mesmo comportamento quando migrar seu aplicativo do JBoss EAP 5 para JBoss EAP 7, você deve definir o valor de propriedade jboss.as.jpa.deferdetach
para true
em seu persistence.xml
conforme explicado no seguinte exemplo.
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> <persistence-unit name="EAP5_COMPAT_PU"> <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source> <properties> <property name="jboss.as.jpa.deferdetach" value="true" /> </properties> </persistence-unit> </persistence>
Em JBoss EAP 6, as persistências comportavam-se como se a propriedade jboss.as.jpa.deferdetach
estivesse definida para falso
. Este é o mesmo comportamento encontrado em JBoss EAP 7, por isso não há necessidades de alterações quando você migrar seu aplicativo.
5.11. Migrar o código de cliente EJB
O conector remoto padrão e porta foram alterados no JBoss EAP 7. Para detalhes sobre esta mudança, consulte Atualize o conector URL remoto e porta.
Se você usou a operação migrate
para migrar sua configuração de servidor, as definições antigas são preservadas e você não precisa fazer as alterações detalhadas abaixo. Contudo, se você executa com a nova configuração padrão de JBoss EAP 7, você deve fazer as seguintes alterações.
5.11.1. Atualize a porta de conexão remota padrão
Modifique o valor de porta da conexão remota de 4447
para 8080
no arquivo jboss-ejb-client.properties
.
Os exemplos seguintes são de um arquivo jboss-ejb-client.properties
na versão antiga e na atual.
Examplo: arquivo JBoss EAP 6 jboss-ejb-client.properties
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false remote.connections=default remote.connection.default.host=localhost remote.connection.default.port=4447 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
Examplo: arquivo JBoss EAP 7 jboss-ejb-client.properties
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false remote.connections=default remote.connection.default.host=localhost remote.connection.default.port=8080 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
5.11.2. Atualizar o conector padrão
Se você esta executando com a nova configuração de JBoss EAP 7, o conector padrão foi modificado de remote
para http-remoting
. Esta alteração impacta clientes que utilizam bibliotecas de uma versão de JBoss EAP para conectar-se ao servidor em uma versão diferente.
-
Se um aplicativo cliente utiliza a biblioteca cliente EJB de JBoss EAP 6 e deseja conectar-se ao servidor JBoss EAP 7, o servidor deve estar configurado para expor um conector
remote
em uma porta além da8080
. O cliente deve então conectar-se utilizando aquele conector recém-configurado. Um aplicativo cliente que utiliza biblioteca cliente EJB de JBoss EAP 7 e deseja conectar-se ao servidor JBoss EAP 6 deve estar ciente que a instância do servidor não utiliza o conector
http-remoting
, em vez disto utiliza um conectorremote
. Isto é realizado ao definir uma nova propriedade de conexão lado cliente.remote.connection.default.protocol=remote
5.11.3. Migrar código de cliente de nomeação remota
Se você está executando com a nova configuração padrão JBoss EAP 7, você deve modificar seu código cliente para usar a nova porta remota padrão e conector.
O exemplo seguinte é de como propriedades de nomeação remota foram especificadas no código cliente no JBoss EAP 6.
java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory java.naming.provider.url=remote://localhost:4447
O exemplo seguinte é de como especificar as propriedades de nomeação remota no código cliente no JBoss EAP 7.
java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory java.naming.provider.url=http-remoting://localhost:8080
5.12. Migrar configurações de planos de implementação
A especificação Java EE Application Deployment (JSR-88) destinava-se a definir um contrato padrão para permitir que ferramentas de vários provedores configurassem e implantarem aplicativos em qualquer produto de plataforma Java EE. O contrato exigia que os provedores de produtos Java EE implementassem as interfaces DeploymentManager
e outras interfaces javax.enterprise.deploy.spi
para serem acessadas pelos provedores de ferramentas. No caso do JBoss EAP 6, um plano de implementação é identificado por um descritor XML denominado deployment-plan.xml
que está incluído em um arquivo ZIP ou JAR.
Esta especificação teve pouca aceitação pois a maioria dos produtos de servidores de aplicativos fornecem suas próprias soluções de implementação mais "ricas em recursos ". Por esta razão, o suporte JSR-88 foi abandonado a partir do Java EE 7, por sua vez, abandonado a partir do JBoss EAP 7.
If you used JSR-88 to deploy your application, you must now use another method to deploy the application. The JBoss EAP management CLI deploy
command provides a standard way to deploy archives to standalone servers or to server groups in a managed domain. For more information about the management CLI, see the Management CLI Guide.
5.13. Migrar válvulas de aplicativos personalizadas
Você deve migrar manualmente válvulas personalizadas ou qualquer válvulas que estão definidas no arquivo XMLjboss-web.xml
. Isto inclui válvulas criadas ao estender as classes org.apache.catalina.valves.ValveBase
e configuradas no elemento <valve>
do arquivo descritor jboss-web.xml
.
Válvulas personalizadas e válvulas que são definidas no arquivo jboss-web.xml
devem ser regravadas ou substituídas por manipuladores Undertow internos correspondentes. Para informações sobre associação de válvulas ao manipulador Undertow, consulte Migrar válvulas web JBoss .
Válvulas de autenticação devem ser substituídas manualmente usando mecanismos de autenticação internos Undertow.
Migrar válvulas configuradas em implementações
No JBoss EAP 6, você podia definir válvulas personalizadas ao nível de aplicativo ao configurá-las no arquivo descritor de aplicativo web jboss-web.xml
. No JBoss EAP 7, é possível fazer isto também com os manipuladores Undertow.
O que segue é um exemplo de uma válvula configurada no arquivo jboss-web.xml
no JBoss EAP 6.
<jboss-web> <valve> <class-name>org.jboss.examples.MyValve</class-name> <param> <param-name>myParam</param-name> <param-value>foobar</param-value> </param> </valve> </jboss-web>
For more information about how to create and configure custom handlers in JBoss EAP, see Creating Custom Handlers in the JBoss EAP Development Guide.
Migrar válvulas de autenticador personalizadas
Para informação sobre como migrar válvulas de autenticador, consulte Alterações de aplicativos de segurança
5.14. Alterações de aplicativos de segurança
A substituição de JBoss Web com Undertow requer alterações nas configurações de segurança no JBoss EAP 7.
5.14.1. Migrar válvulas do autenticador
As válvulas do autenticador devem ser substituídas manualmente usando o mecanismo de autenticação interno Undertow. Consulte as seções seguintes para informações sobre como migrar válvulas do autenticador.
5.14.2. Alterações de PicketLink
For information about the changes required for SSO with SAML v2 configuration, see Changes from Previous Versions of JBoss EAP in How to Set Up SSO with SAML v2 for JBoss EAP.
5.14.3. Outras alterações de aplicativos de segurança
For information about the differences in SSO configuration with Kerberos, see Differences from Configuring Previous Versions JBoss EAP in How to Set Up SSO with Kerberos for JBoss EAP.
5.15. Alterações de JBoss Logging
Se seu aplicativo usa JBoss Logging, esteja ciente de que as anotações no pacote org.jboss.logging
agora são preteridas no JBoss EAP 7. Elas foram movidas para o pacote org.jboss.logging.annotations
, então você deve atualizar seu código-fonte para importar o novo pacote.
As anotações também foram movidas para um ID de Maven groupId:artifactId:version
(GAV) separado, assim você precisa adicionar uma nova dependência de projeto para org.jboss.logging:jboss-logging-annotations
em seu arquivo de projeto pom.xml
.
Somente as anotações registradas em log foram movidas. A org.jboss.logging.BasicLogger
e org.jboss.logging.Logger
ainda existem no pacote org.jboss.logging
.
A tabela seguinte lista as classes de anotações preteridas e substituições correspondentes.
Tabela 5.1. Substituições de anotações de registro em log preteridas
Classes preteridas | Classes de substituição |
---|---|
org.jboss.logging.Cause |
org.jboss.logging.annotations.Cause |
org.jboss.logging.Field |
org.jboss.logging.annotations.Field |
org.jboss.logging.FormatWith |
org.jboss.logging.annotations.FormatWith |
org.jboss.logging.LoggingClass |
org.jboss.logging.annotations.LoggingClass |
org.jboss.logging.LogMessage |
org.jboss.logging.annotations.LogMessage |
org.jboss.logging.Message |
org.jboss.logging.annotations.Message |
org.jboss.logging.MessageBundle |
org.jboss.logging.annotations.MessageBundle |
org.jboss.logging.MessageLogger |
org.jboss.logging.annotations.MessageLogger |
org.jboss.logging.Param |
org.jboss.logging.annotations.Param |
org.jboss.logging.Property |
org.jboss.logging.annotations.Property |
5.16. Alterações ao código JavaServer Faces (JSF)
Suporte para JSF 1.2 descontinuado
JBoss EAP 6 permitia que você continuasse a usar JSF 1.2 com sua implementação de aplicativo ao criar um arquivo jboss-deployment-structure.xml
.
JBoss EAP 7 inclui JSF 2.2 e não suporta mais a API JSF 1.2. Se seu aplicativo usa JSF 1.2, você deve regravá-lo para usar JSF 2.2.
Problema de compatibilidade entre JSF 2.1 e JSF 2.2
As APIs JSF 2.1 e JSF 2.2 APIs não são totalmente compatíveis. O valor da constante FACELET_CONTEXT_KEY
mudou de com.sun.faces.facelets.FACELET_CONTEXT
para javax.faces.FACELET_CONTEXT
entre os lançamentos. Este valor é inlined pelo compilador e compilador de código para uma versão não funcionará para outra.
Os aplicativos que contém código similar ao exemplo seguinte e são compilados com a API JSF 2.1 mas são executados no JBoss EAP 7 que utiliza a API JSF 2.2, resulta em um NullPointerException
. Para corrigir este problema, você deve recompilar o aplicativo com API JSF 2.2.
Object obj = FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
Consulte JAVASERVERFACES_SPEC_PUBLIC-1257 para mais informações.
5.17. Alterações ao carregamento de classes de módulos
No JBoss EAP 7, o comportamento do carregamento de classe foi alterado em casos onde múltiplos módulos contêm as mesmas classes ou pacotes.
Presuma que existam dois módulos: MODULE_A
e MODULE_B
; que dependem uns dos outros e contêm alguns pacotes iguais. No JBoss EAP 6, as classes ou pacotes que eram carregados a partir de dependências sobrepunham-se àqueles especificados no resource-root
do arquivo module.xml
. Isto significava que MODULE_A
visualizava os pacotes para MODULE_B
e MODULE_B
visualizava os pacotes para MODULE_A
. Este comportamento era confuso e poderia causar conflitos. Este comportamento foi alterado no JBoss EAP 7. Agora as classes ou pacotes especificados pelo resource-root
no arquivo module.xml
sobrepõem-se àqueles especificados pela dependência. Isto significa que MODULE_A
visualiza os pacotes para MODULE_A
e MODULE_B
visualiza os pacotes para MODULE_B
. Isto previne conflitos e proporciona um comportamento mais adequado.
If you have defined custom modules that include resource-root
libraries or packages that contain classes that are duplicated in their module dependencies, you might see ClassCastException
, LinkageError
, class loading errors, or other changes in behavior when you migrate to JBoss EAP 7. To resolve these issues, you must configure your module.xml
file to ensure only one version of a class is used. This can be accomplished by using either of the following approaches.
-
Você pode evitar especificar um
resource-root
que duplica classes em dependências de módulos. Você pode usar os sub-elementos
include
eexclude
dos elementosimports
eexports
para controlar o carregamento de classe no arquivomodule.xml
. O que segue é um elemento de exportação que exclui classes nos pacotes especificados.<exports> <exclude path="com/mycompany/duplicateclassespath/"/> </exports>
Se você prefere preservar seu comportamento existente, você deve filtrar os pacotes de dependências da resource-root
dependente no arquivo module.xml
usando o elemento filter
. Isto permitirá que você retenha o comportamento existente sem o looping que você notaria com o JBoss EAP 6. A seguir, veja um exemplo de um root-resource
que filtra classes em um pacote especificado.
<resource-root path="mycompany.jar"> <filter> <exclude path="com/mycompany/duplicateclassespath"/> </filter> </resource-root>
For more information about modules and class loading, see Class Loading and Modules in the JBoss EAP Development Guide.
5.18. Alterações à clusterização de aplicativos
5.18.1. Visão geral de novas funcionalidades de clusterização
A lista seguinte descreve algumas das novas funcionalidades de clusterização para considerar quando fizer a migração de seu aplicativo do JBoss EAP 6 para JBoss EAP 7.
- JBoss EAP 7 introduces a new public API for building singleton services that significantly simplifies the process. For more information, see Implement an HA Singleton in Developing EJB Applications for JBoss EAP.
- A singleton deployment can be configured to deploy and start on only a single node in the cluster at a time. For more information, see HA Singleton Deployments in the JBoss EAP Development Guide.
- You can now define clustered singleton MDBs. For more information, see Clustered Singleton MDBs in Developing EJB Applications for JBoss EAP.
- JBoss EAP 7 includes the Undertow mod_cluster implementation. This offers a pure Java load balancing solution that does not require an httpd web server. For more information, see Configuring JBoss EAP as a Front-end Load Balancer in the JBoss EAP Configuration Guide.
The remainder of this section describes how clustering changes might impact the migration of your applications to JBoss EAP 7.
5.18.2. Alterações nas Web Session Clustering
O JBoss EAP 7 introduz uma nova implementação em web session clustering. Ela substitui a implementação anterior, que era acoplada rigidamente ao código-fonte do subsistema JBoss Web herdado.
A nova implementação Web Session Clustering impacta em como o aplicativo é configurado no arquivo descritor XML do aplicativo web proprietário jboss-web.xml
do JBoss. Segue os únicos elementos de configuração de clustering que permaneceram neste arquivo.
<jboss-web> ... <max-active-sessions>...</max-active-sessions> ... <replication-config> <replication-granularity>...</replication-granularity> <cache-name>...</cache-name> </replication-config> ... </jboss-web>
A tabela seguinte descreve como conseguir um comportamento similar para elementos no arquivojboss-web.xml
que são obsoletos agora.
Elemento de configuração | Descrição da alteração |
---|---|
<max-active-sessions/> |
Anteriormente, a criação de uma sessão falhava se ela tivesse causado com que o número de sessões ativas excedesse o valor especificado por
Na nova implementação, |
<passivation-config/> |
Este elemento de configuração e seus subelementos não são mais utilizados em JBoss EAP 7. |
<use-session-passivation/> |
Anteriormente, a passivação era ativada utilizando este atributo.
Na nova implementação, a passivação é ativada ao especificar um valor não-negativo para |
<passivation-min-idle-time/> |
Anteriormente, as sessões precisavam estar ativas por um período mínimo de tempo antes de tornarem-se candidatas à passivação. Isto poderia causar uma falha na criação de sessão, mesmo que a passivação estivesse habilitada. A nova implementação não suporta esta lógica e assim evita esta vulnerabilidade de recusa de serviço (Denial of Service - DoS) . |
<passivation-max-idle-time/> |
Anteriormente, uma sessão tornaria-se passiva após estar inativa por um período especifico de tempo.
A nova implementação suporta somente passivação lazy. Não suporta passivação eager. As sessões são somente passivadas quando necessário para estar em conformidade com |
<replication-config/> |
A nova implementação torna preterido um certo número de subelementos. |
<replication-trigger/> |
Previously, this element was used to determine when session replication was triggered. The new implementation replaces this configuration option with a single, robust strategy. For more information, see Immutable Session Attributes in the JBoss EAP Development Guide. |
<use-jk/> |
Anteriormente, a
Na nova implementação, a |
<max-unreplicated-interval/> |
Anteriormente, esta opção de configuração era destinada a ser uma otimização para evitar a replicação de um carimbo de data/hora de sessão se não houvesse alteração de atributo de sessão. Isto parece bom, mas na prática não evita quaisquer RPCs, já que acesso à sessão necessita transação de cache RPCs independente de qualquer alteração de atributo de sessão. Na nova implementação, o carimbo de data/hora de uma sessão é replicado a cada solicitação. Isto previne metadados de sessões obsoletas após um failover. |
<snapshot-mode/> |
Anteriormente, podia-se configurar |
<snapshot-interval/> |
Isto era relevante somente para |
<session-notification-policy/> |
Anteriormente, o valor especificado por este atributo definia uma política de acionamento de eventos de sessões. Na nova implementação este comportamento é acionado na especificação e não configurável. |
Esta nova implementação também suporta armazenamentos de cache de gravação, bem como armazenamentos de cache somente de passivação. Normalmente, armazenamentos de cache de gravação é usado em conjunto com um cache de invalidação. A implementação de cluster de sessões web no JBoss EAP 6 não funcionou corretamente quando usada com um cache de invalidação.
5.18.3. Alterações em Stateful Session EJB Clustering
No JBoss EAP 6, era exigido que você habilitasse o comportamento do clustering para stateful session beans (SFSBs) em uma das seguintes maneiras.
Você podia adicionar a anotação
org.jboss.ejb3.annotation.Clustered
à sessão bean.@Stateful @Clustered public class MyBean implements MySessionInt { public void myMethod() { // } }
Você podia adicionar o elemento
<clustered>
ao arquivojboss-ejb3.xml
.<c:clustering> <ejb-name>DDBasedClusteredSFSB</ejb-name> <c:clustered>true</c:clustered> </c:clustering>
O JBoss EAP 7 não exige mais que você habilite o comportamento do clustering. Por padrão, se o servidor for iniciado utilizando um perfil HA, o estado de SFSBs será replicado automaticamente.
Você pode desabilitar este comportamento padrão com uma das seguintes maneiras.
-
Você pode desabilitar o comportamento padrão para um único stateful session bean ao utilizar
@Stateful(passivationCapable=false)
, que é novo à especificação EJB 3.2. -
Você pode desabilitar este comportamento globalmente na configuração do subsistema
ejb3
na configuração do servidor.
Se a anotação @Clustered
não for removida do aplicativo, ela será simplesmente ignorada e não afetará a implementação do aplicativo.
5.18.4. Alterações nos serviços de clustering
No JBoss EAP 6, as APIs para serviços de clustering estavam em módulos privados e não eram suportadas.
O JBoss EAP 7 introduz uma API de serviço de clustering público para ser utilizada pelos aplicativos. Os novos serviços são projetados para serem leves, facilmente injetáveis e não necessitar de dependências externas.
-
A nova interface
org.wildfly.clustering.group.Group
fornece acesso ao status atual do cluster e permite escutar alterações de adesão ao cluster. -
A nova interface
org.wildfly.clustering.dispatcher.CommandDispatcher
permite executar código no cluster, em todos os nós ou em determinados subgrupos.
Estes serviços substituem APIs similares que estavam disponíveis em versões prévias, isto é, HAPartition
do JBoss EAP 5 e GroupCommunicationService
, GroupMembershipNotifier
e GroupRpcDispatcher
do JBoss EAP 6.
For more information, see Public API for Clustering Services in the JBoss EAP Development Guide.
5.18.5. Migrar Clustering HA Singleton
No JBoss EAP 6, não havia API pública disponível para o serviço global de cluster HA singleton. Se você utilizava as classes privadas org.jboss.as.clustering.singleton.*
, você deve alterar seu código para utilizar os novos pacotes públicos org.wildfly.clustering.singleton.*
quando você migar seu aplicativo para JBoss EAP 7.
For more information about how to implement an HA singleton, see HA Singleton Service in the Development Guide for JBoss EAP.
Capítulo 6. Alterações diversas
6.1. Alterações no modo de entrega do JBoss EAP Natives e Servidor HTTP Apache
JBoss EAP 7 nativos são entregues de uma forma diferente neste lançamento. Agora alguns são enviados com o novo produto Red Hat JBoss Core Services, que é um grupo de softwares suplementares que é comum em muitos produtos middleware da Red Hat JBoss. O novo produto permite distribuição mais rápida de atualizações e uma experiência de atualização mais consistente. O produto JBoss Core Services está disponível para download em uma localidade diferente no Portal do Cliente Red Hat .
A seguinte tabela lista as diferenças nos métodos de entrega entre os lançamentos.
Pacote JBoss EAP 6 JBoss EAP 7 AIO Natives para mensagens
Entregue com o produto em um dowload "Native Utilities" separado
Incluído na distribuição de JBoss EAP. Não é necessário nenhum download adicional.
Servidor HTTP Apache
Entregue com o produto em um download "Servidor HTTP Apache" separado.
Entregue com o novo produto JBoss Core Services
mod_cluster, mod_jk, isapi, e conectores nsapi
Entregue com o produto em um download "Webserver Connector Natives" separado
Entregue com o novo produto JBoss Core Services
JSVC
Entregue com o produto em um dowload "Native Utilities" separado
Entregue com o novo produto JBoss Core Services
OpenSSL
Entregue com o produto em um dowload "Native Utilities" separado
Isto foi eliminado no JBoss EAP 7
tcnatives
Entregue com o produto em um download "Native Components" separado
Isto foi eliminado no JBoss EAP 7
Você também deve estar ciente das seguintes alterações:
Foi eliminado o suporte para conectores mod_cluster e mod_jk usados com servidor HTTP Apache a partir dos canais RPM do Red Hat Enterprise Linux RPM. Se você executar o servidor Apache HTTP a partir dos canais PRM do Red Hat Enterprise Linux e precisar configurar balanceamento de carga para servidores JBoss EAP 7, você pode utilizar uma das seguintes opções:
- Use o servidor HTTP Apache fornecido pelo JBoss Core Services.
- You can configure JBoss EAP 7 to act as a front-end load balancer. For more information, see Configuring JBoss EAP as a Front-end Load Balancer in the JBoss EAP Configuration Guide.
- You can deploy Apache HTTP Server on a machine that is supported and certified and then run the load balancer on that machine. For the list of supported configurations, see Overview of HTTP Connectors in the JBoss EAP 7 Configuration Guide.
Foi eliminado suporte para conectores mod_cluster e mod_jk utilizados com o servidor HTTP Apache a partir do HP-UX Web Server Suites. Se você executar o servidor HTTP Apache a partir do HP-UX Web Server Suites e precisar configurar balanceamento de carga para servidores JBoss EAP 7, você pode fazer uma das seguintes opções:
- You can configure JBoss EAP 7 to act as a front-end load balancer. For more information, see Configuring JBoss EAP as a Front-end Load Balancer in the JBoss EAP Configuration Guide.
- You can deploy Apache HTTP Server on a machine that is supported and certified and then run the load balancer on that machine. For the list of supported configurations, see Overview of HTTP Connectors in the JBoss EAP Configuration Guide.
- You can find more information about JBoss Core Services in the Apache HTTP Server Installation Guide.
6.2. Alterações às implementações no Amazon EC2
A number of changes have been made to the Amazon Machine Images (AMI) in JBoss EAP 7. This section briefly summarizes some of those changes.
- O modo como você inicia instâncias JBoss EAP clusterizadas e não clusterizadas e domínios no Amazon EC2 foram alterados significativamente.
-
JBoss EAP 6 utilizava o campo
User Data:
para configuração JBoss EAP. Os scripts AMI que analisavam a configuração no campoUser Data:
e iniciavam os servidores automaticamente na inicialização de instância foram removidos no JBoss EAP 7. - O agente Red Hat JBoss Operations Network era instalado em lançamentos prévios do JBoss EAP. No JBoss EAP 7, você deve instalá-lo separadamente.
For details on deploying JBoss EAP 7 on Amazon EC2, see Deploying Red Hat JBoss Enterprise Application Platform on Amazon EC2.
6.3. Alterações nos scripts do JBoss EAP
The add-user
script behavior has changed in JBoss EAP 7 due to a change in password policy. JBoss EAP 6 had a strict password policy. As a result, the add-user
script rejected weak passwords that did not satisfy the minimum requirements. In JBoss EAP 7, weak passwords are accepted and a warning is issued. For more information, see Setting Add-User Utility Password Restrictions in the JBoss EAP Configuration Guide.
6.4. Remoção de suporte OSGi
Quando o JBoss EAP 6.0 GA foi lançado pela primeira vez, o JBoss OSGi, uma implementação da especificação OSGi, foi incluído como um recurso de apresentação prévia de tecnologia. Com o lançamento do JBoss EAP 6.1.0, o JBoss OSGi foi rebaixado de apresentação técnica para não suportado.
No JBoss EAP 6.1.0, os módulos de extensão e configuração de subsistema para um servidor autônomo configadmin
e osgi
foram movidos para um arquivo de configuração independente EAP_HOME/standalone/configuration/standalone-osgi.xml
. Como você não deve migrar este arquivo de configuração não suportado, a remoção do suporte ao JBoss OSGi não deve afetar a migração de uma configuração de servidor autônomo. Se você modificou qualquer um dos outros arquivos de configuração autônomos para configurar osgi
ou configadmin
, essas configurações devem ser removidas.
Para um domínio gerenciado, a extensão e a configuração do subsistema osgi
foram removidas do arquivo EAP_HOME/domain/configuration/domain.xml
na versão do JBoss EAP 6.1.0. No entanto, a extensão do módulo configadmin
e a configuração do subsistema permanecem no arquivo EAP_HOME/domain/configuration/domain.xml
. Esta configuração não é mais suportada no JBoss EAP 7 e deve ser removida.
Capítulo 7. Migrando a partir de versões mais antigas do JBoss EAP
7.1. Migrando do JBoss EAP 5 para o JBoss EAP 7
Este guia concentra-se nas alterações necessárias para executar e implementar com êxito os aplicativos JBoss EAP 6 no JBoss EAP 7. Se você planeja migrar seus aplicativos diretamente do JBoss EAP 5 para o JBoss EAP 7, há uma série de recursos disponíveis para ajudá-lo planejar e executar sua migração. Sugerimos que você adote a seguinte abordagem.
- Consulte Resumo das alterações feitas em cada versão neste guia para obter uma visão geral rápida e de alto nível das alterações feitas em cada lançamento do JBoss EAP.
- Leia o JBoss EAP 6 Guia de Migração e este guia para se familiarizar com o conteúdo de cada um.
- Use a referência de atualização de componente do JBoss EAP 5 como uma referência rápida às informações de migração sobre componentes e recursos específicos.
- A ferramenta de migração baseada em regras Windup continua a adicionar regras para ajudá-lo a migrar diretamente do JBoss EAP 5 para o JBoss EAP 7. Você pode usar essa ferramenta para analisar seu aplicativo e gerar relatórios detalhados sobre as mudanças necessárias para migrar para o JBoss EAP 7. Para obter mais informações, consulte Usar Windup para Analisar Aplicativos para Migração .
- A base de conhecimento do Portal do Cliente contém atualmente artigos e soluções para ajudar na migração do JBoss EAP 5 para o JBoss EAP 6. Existem planos para adicionar conteúdo adicional para a migração do JBoss EAP 5 para o JBoss EAP 7 ao longo do tempo.
7.2. Resumo das alterações feitas em cada lançamento
Antes de planejar a sua migração, você deve estar ciente das alterações feitas no JBoss EAP 6 e no JBoss EAP 7.
O Guia de Migração JBoss EAP 6 abrange as alterações feitas entre o JBoss EAP 5 e o JBoss EAP 6. A seguir, uma lista condensada das alterações mais significativas feitas no JBoss EAP 6.
- Implementado uma nova arquitetura construída no contêiner de serviço modular
- Uma implementação certificada da especificação Java Enterprise Edition 6
- Introduziu gerenciamento de domínio, nova configuração de implantação e nova estrutura de diretórios de arquivo e scripts
- Padronizado em novos namespaces JNDI portáteis
Consulte Revise o que há de novo e diferente no JBoss EAP 6 no JBoss EAP 6 Guia de Migração para obter uma lista detalhada das alterações feitas nessa versão.
O JBoss EAP 7 é construído na mesma estrutura modular como o JBoss EAP 6 e inclui o mesmo gerenciamento de domínio, configuração de implantação, estrutura de diretório de arquivos e scripts. Ele também usa os mesmos espaço de nomes JNDI padronizados. Porém, o JBoss EAP 7 introduz as seguintes alterações.
- Adiciona suporte para a especificação Java Enterprise Edition 7
- Substitui o servidor web por Undertow
- Substitui a implementação JacORB IIOP por um ramificação downstream do OpenJDK ORB
- Inclui o Apache ActiveMQ Artemis como o novo provedor de mensagens
-
Remove os subsistemas
cmp
,jaxr
ethreads
. - Remove o suporte para beans de entidade EJB
Para uma lista completa das alterações, consulte Revise o que há de novo no JBoss EAP 7
7.3. Revise o conteúdo nos Guias de Migração
Revise todo o conteúdo do Guia de Migração para cada lançamento conhecer os recursos que foram adicionados ou preteridos e para entender a configuração do servidor e as alterações de aplicativo necessárias para executar os aplicativos existentes para a versão.
Como a arquitetura subjacente não foi alterada entre o JBoss EAP 6 e o JBoss EAP 7, muitas das alterações documentadas no Guia de Migração do JBoss EAP 6 ainda são válidas. Por exemplo, alterações documentadas sob Alterações necessárias pela maioria dos aplicativos são relacionadas as alterações de arquitetura subjacentes feitas no JBoss EAP 6, que ainda se aplicam a esta versão. A mudança para o novo sistema modular de carregamento de classe é significativa e afeta o empacotamento e as dependências de quase todas as aplicações JBoss EAP 5. Muitas das alterações listadas sob Alterações dependentes da arquitetura de seus aplicativos e componentes também são válidas. Entretanto, como o JBoss EAP 7 substituiu o servidor Web, ORB e provedor de mensagens; removeu os subsistemas cmp
, threads
e jaxr
e removeu suporte para beans de entidade EJB, você deve consultar este guia para quaisquer alterações relacionadas as áreas destes componentes. Preste atenção especial ao Alterações às configurações de servidor e Alterações na migração de aplicativo detalhadas neste guia antes de começar.
7.4. Referência de atualização do componente JBoss EAP 5
Use a tabela a seguir para encontrar informações sobre como migrar um recurso ou componente específico do JBoss EAP 5 para JBoss EAP 7.
JBoss EAP 5 Recurso ou componente | Resumo de alterações e Onde encontrar informações de migração |
---|---|
Empacotamento de aplicativo e carregamento de classe |
In JBoss EAP 6, the previous hierarchical class loading structure was replaced with a modular architecture based on JBoss Modules. Application packaging also changed due to the new modular class loading structure. This architecture is still used in JBoss EAP 7. For information about the new modular architecture, see the following chapter in the JBoss EAP 7 Development Guide. For information about how to update and repackage applications for the new modular architecture, see the following section in the JBoss EAP 6 Migration Guide. |
Application Configuration Files |
Due to the changes in JBoss EAP 6 to use modular class loading, you might need to create or modify one or more application configuration files to add dependencies or to prevent automatic dependencies from loading. This has not changed in JBoss EAP 7. For details, see the following section in the JBoss EAP 6 Migration Guide. |
Caching and Infinispan |
JBoss Cache was replaced by Infinispan for internal use by the server only in JBoss EAP 6. See the following sections in the JBoss EAP 6 Migration Guide for information about how to replace JBoss Cache in application code. Infinispan caching strategy and configuration changes for JBoss EAP 7 are documented in the following section of this guide. |
Data Sources and Resource Adapters |
JBoss EAP 6 consolidated configuration of data sources and resource adapters into mainly one file and this is still true in JBoss EAP 7. See the following section in the JBoss EAP 6 Migration Guide for more information. In addition, the ability to configure a generic JMS resource adapter to connect to a JMS provider is no longer supported in JBoss EAP 7. See the following section in this guide. |
Directory Structure, Scripts, and Deployment Configuration |
In JBoss EAP 6, the directory structure, scripts, and deployment configuration changed. These changes are still valid in JBoss EAP 7. See the following section of the JBoss EAP 6 Migration Guide for more information. |
EJB |
The Java EE 7 specification made EJB 2.x and earlier features optional, so it is strongly recommended that you rewrite your application code to use the EJB 3.x specification and JPA. For information about deprecated features and changes required to run EJB 2.x, see the following section in the JBoss EAP 6 Migration Guide.
In JBoss EAP 6, stateful EJB cache and stateless session bean pool size is configured in the The default remote connector and port has changed in JBoss EAP 7. For more information about this and server configuration changes, see the following sections in this guide. EJB entity beans are not supported in JBoss EAP 7. For information about how to migrate entity beans to JPA, see the following section in this guide. |
Hibernate e JPA |
In JBoss EAP 6, Hibernate was updated from version 3 to version 4. This version of JBoss EAP also implemented the JPA 2.0 specification and changes were made to JPA persistence properties. For information about how to modify your application for these changes, see the following section in the JBoss EAP 6 Migration Guide. JBoss EAP 7 implements JPA 2.1 and includes Hibernate 5. It also updates Hibernate Search from version 4.6.x to version 5.5.x. Other changes include removal of support for EJB entity beans and additional updates to JPA persistence properties. For information about how these changes impact your applications, see the following sections in this guide. |
JAX-RS and RESTEasy |
JBoss EAP 6 bundled RESTEasy 2, which automatically configured RESTEasy and required changes in application configuration. See the following section in the JBoss EAP 6 Migration Guide for information. JBoss EAP 7 includes RESTEasy 3 and many classes have been deprecated. The version of Jackson changed from version 1.9.9 to version 2.6.3 or greater. For details about these changes, see the following section in this guide. |
JBoss AOP |
JBoss AOP (Aspect Oriented Programming) was removed in JBoss EAP 6. For information about how to refactor applications that use JBoss AOP, see the following section in the JBoss EAP 6 Migration Guide. |
JGroups and Clustering |
The way you enable clustering and specify bind addresses changed in JBoss EAP 6. See the following section in the JBoss EAP 6 Migration Guide for more information.
In JBoss EAP 7, JGroups now defaults to using a private network interface instead of a public network interface and also introduces |
JNDI |
JBoss EAP 6 implemented a new standardized global JNDI namespace and a series of related namespaces that map to the various scopes of a Java EE application. See the following section of the JBoss EAP 6 Migration Guide for information about application changes needed to use the new JNDI namespace rules. |
JSF |
JBoss EAP 6 included JSF 2.0 and allowed you to configure your application to use an older version. This is no longer possible in JBoss EAP 7, which now includes JSF 2.2. See the following section in this guide for more information. |
Registro em Log |
JBoss EAP 6 introduced a new JBoss Logging framework that is still used in JBoss EAP 7. Applications that use third-party logging frameworks might be impacted by the modular class loading changes. Review the following section in the JBoss EAP 6 Migration Guide for information about these changes.
In JBoss EAP 7, annotations in the |
Messaging and JMS |
In JBoss EAP 6, HornetQ replaced JBoss Messaging as the default JMS implementation. Then in JBoss EAP 7, ActiveMQ Artemis replaced HornetQ as the built-in messaging provider. The best approach to migrating your messaging configuration is to start with the JBoss EAP 7 default server configuration and use the following guide to apply your current messaging configuration changes.
If you want to understand the changes required to move from JBoss Messaging to HornetQ, review the following section of the JBoss EAP 6 Migration Guide. Then review the following information about how to migrate the HornetQ configuration and related messaging data in this guide. |
ORB |
In JBoss EAP 6, JacORB configuration was moved from the The best approach to migrating your ORB configuration is to start with the JBoss EAP 7 default server configuration and use the following section in the JBoss EAP 7 Configuration Guide to apply the your current ORB configuration changes. |
Remote Invocation |
A new EJB client API was introduced in JBoss EAP 6 for remote invocations; however, if you preferred not to rewrite your application code to use the new API, you could modify your existing code to use the In JBoss EAP 7, the default connector and default remote connection port changed. For more information, see the following sections in this guide. |
Seam 2.x |
While official support for Seam 2.2 applications was dropped in JBoss EAP 6, it was still possible to configure dependencies for JSF 1.2 and Hibernate 3 to allow Seam 2.2 applications to run on that release. JBoss EAP 7, which now includes JSF 2.2 and Hibernate 5, does not support Seam 2.2 or Seam 2.3 due to end of life of Red Hat JBoss Web Framework Kit. It is recommended that you rewrite your Seam components using Weld CDI beans. |
Segurança |
Security updates in JBoss EAP 6 included changes to security domain names and changes to how to configure security for basic authentication. The LDAP security realm configuration was moved to the server configuration file. See the following sections in the JBoss EAP 6 Migration Guide for more information. Updates that impact security in JBoss EAP 7 include server configuration changes and application changes. Information can be found in the following sections of this guide. |
Spring Applications |
Spring 4.2.x is the earliest stable Spring version supported by JBoss EAP 7. For information about Apache CXF Spring web services and Spring RESTEasy integration changes, see the following sections in this guide. |
Transações |
JBoss EAP 6 consolidated transaction configuration and moved it to the server configuration file. Other updates included changes to JTA node identifier settings and how to enable JTS. For details, see the following section in the JBoss EAP 6 Migration Guide.
Some Transaction Manager configuration attributes that were available in the |
Valves |
Undertow replaced JBoss Web in JBoss EAP 7 and valves are no longer supported. See the following sections in this guide. |
Serviços da Web |
JBoss EAP 6 included JBossWS 4. For information about the changes required by that version update, see the following section in the JBoss EAP 6 Migration Guide. JBoss EAP 7 introduced JBossWS 5. See the following section in this guide for required updates. |
Apêndice A. Material de Referência
A.1. Avisos de operação de migração de subsistema JacORB
The migrate
operation is not able to process all resources and attributes. The following table lists some of the warnings you might see when you run either the migrate
or describe-migration
operation for the jacorb
subsystem.
Se você vir entradas "Não foi possível migrar" ou "Não pode migrar" na saída da operação migrate
, isto indica que a migração da configuração do servidor foi completada com sucesso porém não conseguiu migrar automaticamente todos os elementos e atributos. Você deve seguir as sugestões fornecidas pelo "avisos de migração" para modificar estas configurações.
Mensagens de aviso | O que significa / Como resolver |
---|---|
A migração |
A operação $ EAP_HOME/bin/standalone.sh --admin-only |
Propriedades X não podem ser emuladas utilizando OpenJDK ORB e não são suportadas |
A configuração de propriedade específica não é suportada e não é incluída na configuração do novo subsistema
Propriedades não suportadas incluem: |
As propriedades X usam expressões. Propriedades de configuração que são usadas para resolver essas expressões devem ser transformadas manualmente para o novo formato do subsistema |
Propriedades que usam expressões devem ser configuradas manualmente pelo administrador.
Por exemplo, o subsistema |
Não é possivel migar: o novo subsistema |
A mensagem contém a explicação. |
A.2. Avisos para a operação de migração de subsistema de mensagem
The migrate
operation is not able to process all resources and attributes. The following table lists some of the warnings you might see when you run either the migrate
or describe-migration
operation for the messaging
subsystem.
Se você vir entradas "Não foi possível migrar" ou "Não pode migrar" na saída da operação migrate
, isto indica que a migração da configuração do servidor foi completada com sucesso porém não conseguiu migrar automaticamente todos os elementos e atributos. Você deve seguir as sugestões fornecidas pelo "avisos de migração" para modificar estas configurações.
Mensagens de aviso | O que significa / Como resolver |
---|---|
A operação |
A operação $ EAP_HOME/bin/standalone.sh --admin-only |
Não foi possível migar o atributo |
A mensagem contém explicação e indica como fazer para corrigir o problema. |
Não foi possível migar o atributo |
A mensagem contém explicação e indica como fazer para corrigir o problema. |
Não foi possível migrar o atributo |
A mensagem contém explicação e indica como fazer para corrigir o problema. |
Não foi possível migar o atributo |
O recurso |
As classes que fornecem X são descartadas durante a migração. Para usá-las no novo subsistema |
O suporte de interceptores de mensagem está significativamente diferente no JBoss EAP 7. Todos os interceptores configurados em versões prévias do subsistema são descartados durante a migração. Consulte Migrando interceptores de mensagem para mais informações. |
Não foi possível migrar a configuração de alta disponibilidade de X. Os seus atributos |
Isto significa que os atributos |
Não foi possível migar o atributo |
A mensagem contém explicação e indica como fazer para corrigir o problema. |
Não foi possível migar o atributo |
A mensagem contém explicação e indica como fazer para corrigir o problema. |
Não foi possível migar o atributo |
A mensagem contém explicação e indica como fazer para corrigir o problema. |
Não foi possível migar o atributo |
O recurso |
Não foi possível criar |
Os recursos remotos herdados de |
Não foi possível migrar o atributo X a partir do recurso Y. O atributo utiliza uma expressão que pode ser resolvida de modo diferente dependendo das propriedades do sistema. Após a migração, este atributo deve ser adicionado novamente com um valor real ao invés de uma expressão. |
Este aviso aparece quando a migração não consegue resolver o atributo X para um valor concreto durante o processo de migração. O valor é descartado e o atributo deve ser migrado manualmente. Isto acontece nos seguintes casos:
|
Não foi possível migrar atributo X a partir do recurso Y. Este atributo não é suportado pelo novo subsistema |
Alguns atributos não são mais suportados no novo subsistema
|
Não é possível migrar o atributo |
A mensagem contém a explicação. |
Substituir os atributos preteridos broadcast-group ou discovery-group
Se for recomendado que você substitua os atributos broadcast-group
ou discovery-group
com o atributo socket-binding
, você pode adicionar o novo atributo usando a CLI de gerenciamento.
Este exemplo presume que você está migrando um servidor autônomo que contém a seguinte configuração discovery-group
no subsistema messaging
.
<discovery-groups> <discovery-group name="my-discovery-group"> <group-address>224.0.1.105</group-address> <group-port>56789</group-port> </discovery-group> </discovery-groups>
Quando você executa a operação migrate
para o subsistema messaging
, você vê os seguintes avisos e resultado:
[standalone@localhost:9999 /] /subsystem=messaging:migrate { "outcome" => "success", "result" => {"migration-warnings" => [ "WFLYMSG0084: Can not migrate attribute group-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"discovery-group\" => \"my-discovery-group\") ]. Use instead the socket-binding attribute to configure this discovery-group.", "WFLYMSG0084: Can not migrate attribute group-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"discovery-group\" => \"my-discovery-group\") ]. Use instead the socket-binding attribute to configure this discovery-group." ]} }
A operação migrate
cria um discovery-group
chamado "my-discovery-group" no novo subsistema messaging-activemq
que agora está configurado como o que segue.
<discovery-group name="my-discovery-group"/>
Agora você deve usar o seguinte comando da CLI de gerenciamento para criar um elemento socket-binding
no arquivo de configuração do servidor chamado "my-discovery-group-socket-binding".
/socket-binding-group=standard-sockets/socket-binding=my-discovery-group-socket-binding:add(multicast-address=224.0.1.105, multicast-port=56789)
A seguir, adicione o socket-binding
recém criado ao discovery-group
chamado "my-discovery-group" no subsistema messaging-activemq
no arquivo de configuração do servidor usando o seguinte comando da CLI de gerenciamento.
/subsystem=messaging-activemq/server=default/discovery-group=my-discovery-group:write-attribute(name=socket-binding,value=my-discovery-group-socket-binding)
Estes comandos criam o seguinte XML no arquivo de configuração do servidor.
<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0"> <server name="default"> ... <discovery-group name="my-discovery-group" socket-binding="my-discovery-group-socket-binding"/> ... </server> </subsystem> ... <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> ... <socket-binding name="my-discovery-group-socket-binding" multicast-address="224.0.1.105" multicast-port="56789"/> ... </socket-binding-group>
A.3. Avisos para operação de migração de subsistema web
The migrate
operation is not able to process all resources and attributes. The following table lists some of the warnings you might see when you run either the migrate
or describe-migration
operation for the web
subsystem.
Se você vir entradas "Não foi possível migrar" ou "Não pode migrar" na saída da operação migrate
, isto indica que a migração da configuração do servidor foi completada com sucesso porém não conseguiu migrar automaticamente todos os elementos e atributos. Você deve seguir as sugestões fornecidas pelo "avisos de migração" para modificar estas configurações.
Mensagens de aviso | O que significa / Como resolver |
---|---|
Operação de migração permitida somente em modo admin |
A operação $ EAP_HOME/bin/standalone.sh --admin-only |
Não foi possível migrar recurso X |
O comportamento exibido por este recurso na versão anterior de JBoss EAP não foi migrado. O administrador deve verificar se o novo subsistema |
Não foi possível migrar o atributo X a partir do recurso Y. |
O comportamento exibido por este atributo de recurso na versão anterior de JBoss EAP não foi migrado. O administrador deve verificar se o novo subsistema See Web Subsystem Migration Operation Attribute Warnings for the list of attributes that are not migrated. |
Não foi possível migrar conector SSL pois nenhuma configuração SSL está definida. |
A mensagem contém a explicação. |
Não foi possível migrar atributo |
A mensagem contém a explicação. |
Não foi possível migrar a expressão |
A mensagem contém a explicação. |
Não foi possível migrar a válvula X |
O comportamento exibido por este recurso na versão anterior de JBoss EAP não foi migrado. O administrador deve verificar se o novo subsistema This warning can occur for the following valves:
|
Não foi possível migrar atributo X a partir da válvula Y |
The behavior exhibited by this valve attribute in the previous release of JBoss EAP was not migrated. The administrator must verify if the new
|
Web Subsystem Migration Operation Attribute Warnings
The migrate
operation is not able to process all JBoss Web attributes. See the following reference tables for information about how to migrate the unprocessed attributes manually.
Web SSL Connector Attributes
The following attributes were used in JBoss EAP 6 to configure the SSL connector. OpenSSL native libraries are not supported in JBoss EAP 7 so there are no equivalent settings.
Attribute | Descrição | Undertow Equivalent |
---|---|---|
ca-revocation-url |
The file or URL that contains the revocation list. |
No equivalent in Undertow. |
certificate-file |
When using OpenSSL encryption, the path to the file containing the server certificate. |
No equivalent in Undertow. |
ssl-protocol |
The SSL protocol string. |
No equivalent in Undertow. |
verify-depth |
The maximum number of intermediate certificate issuers checked before deciding that the clients do not have a valid certificate. |
No equivalent in Undertow. |
Web Static Resource Attributes
The following static-resources
element attributes were used to describe how static resources were handled by the DefaultServlet
or by the WebdavServlet
. There are no equivalents for these attributes because WebDAV is not supported by Undertow. For more information, see https://issues.jboss.org/browse/JBEAP-1036.
Attribute | Descrição | Undertow Equivalent |
---|---|---|
disabled |
Enable the default Servlet mapping. |
No equivalent setting in Undertow. |
file-encoding |
File encoding to be used when reading static files. |
No equivalent setting in Undertow. |
max-depth |
Maximum recursion for |
This is a WebDAV setting and WebDAV is not supported by Undertow. |
read-only |
Allow write HTTP methods (PUT, DELETE). |
This is a WebDAV setting and WebDAV is not supported by Undertow. |
secret |
Secret for WebDAV locking operations. |
This is a WebDAV setting and WebDAV is not supported by Undertow. |
sendfile |
Enable sendfile if possible, for files bigger than the specified byte size. |
This is set to a sensible default value in Undertow and is not configurable. |
webdav |
Enable WebDAV functionality. |
WebDAV is not supported by Undertow. |
Web SSO Resource Attributes
SSO is handled differently than in the previous release and there are no equivalent attribute settings in JBoss EAP 7.
JBoss Web Attribute | Descrição | Undertow Equivalent |
---|---|---|
cache-container |
Name of the cache container to use for clustered SSO. |
This setting is no longer needed in Undertow. This works by default across a distributed clustered environment. |
cache-name |
Name of the cache to use for clustered SSO. |
This setting is no longer needed in Undertow. This works by default across a distributed clustered environment. |
reauthenticate |
Whether each request should cause a reauthentication. |
There is no equivalent setting in Undertow, which behaves similarly to the |
Web Access Log Attributes
JBoss Web Attribute | Descrição | Undertow Equivalent |
---|---|---|
resolve-hosts |
Whether to enable resolving hosts for access logging. |
Use the setting on the connector to accomplish the same behavior. |
Web Connector Attributes
JBoss Web Attribute | Descrição | Undertow Equivalent |
---|---|---|
executor |
The name of the executor that should be used to process the threads of this connector. |
You now reference a worker that is defined in the See Migrate the Threads Subsystem Configuration for more information. |
proxy-binding |
The socket binding to define the host and port that is used when sending a redirect. |
There is no direct equivalent. See https-listener Attributes in the JBoss EAP Configuration Guide for available configuration options. |
redirect-port |
The port for redirection to a secure connector. |
This attribute was deprecated in JBoss EAP 6 and replaced with See https-listener Attributes in the JBoss EAP Configuration Guide for more information. |
A.4. Migrate JBoss Web System Properties Reference
This reference describes how to map system properties previously used for JBoss Web configuration to the equivalent configuration for Undertow in JBoss EAP 7.
Tabela A.1. Map Servlet Container and Connectors System Properties
JBoss EAP 6 System Property |
Description |
Equivalent in JBoss EAP 7 | |
jvmRoute |
Provides a default value for the
It supports |
Management CLI command: /subsystem=undertow:write-attribute(name=instance-id,value=VALUE) | |
org.apache.tomcat.util.buf.StringCache.byte.enabled |
If |
No equivalent configuration | |
org.apache.tomcat.util.buf.StringCache.char.enabled |
If |
No equivalent configuration | |
org.apache.tomcat.util.buf.StringCache.cacheSize |
The size of the String cache. If the value is not specified, the default value of |
No equivalent configuration | |
org.apache.tomcat.util.buf.StringCache.maxStringSize |
The maximum length of String that will be cached. If the value is not specified, the default value of |
No equivalent configuration | |
org.apache.tomcat.util.http.FastHttpDateFormat.CACHE_SIZE |
The size of the cache to use parsed and formatted date value. If the value is not specified, the default value of |
No equivalent configuration | |
org.apache.catalina.core.StandardService.DELAY_CONNECTOR_STARTUP |
If |
No equivalent configuration | |
org.apache.catalina.connector.Request.SESSION_ID_CHECK |
If |
No equivalent configuration | |
org.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADER |
If |
Must be enabled programmatically by implementing a custom | |
org.apache.tomcat.util.http.Parameters.MAX_COUNT |
The maximum number of parameters that can be parsed in a post body. If exceeded, parsing fails using an |
Management CLI command: /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-parameters,value=VALUE) /subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=max-parameters,value=VALUE) /subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=max-parameters,value=VALUE) | |
org.apache.tomcat.util.http.MimeHeaders.MAX_COUNT |
The maximum number of headers that can be sent in the HTTP request. If exceeded, parsing will fail using an |
Management CLI command: /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-headers,value=VALUE) /subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=max-headers,value=VALUE) /subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=max-headers,value=VALUE) | |
org.apache.tomcat.util.net.MAX_THREADS |
The maximum number of threads a connector is going to use to process requests. The default value is |
Management CLI command: /subsystem=io/worker=default:write-attribute(name=task-max-threads, value=VALUE) | |
org.apache.coyote.http11.Http11Protocol.MAX_HEADER_SIZE |
The maximum size of the HTTP headers, in bytes. If exceeded, parsing will fail using an |
Management CLI command: /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=max-header-size,value=VALUE) /subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=max-header-size,value=VALUE) /subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=max-header-size,value=VALUE) | |
org.apache.coyote.http11.Http11Protocol.COMPRESSION |
Allows using simple compression with the HTTP connector. The default value is |
Configure a filter using the management CLI: # Create a filter /subsystem=undertow/configuration=filter/gzip=gzipfilter:add() /subsystem=undertow/server=default-server/host=default-host/filter-ref=gzipfilter:add() | |
org.apache.coyote.http11.Http11Protocol.COMPRESSION_RESTRICTED_UA |
User agents regexps that will not receive compressed content. The default value is empty. |
Configure a predicate in a filter using the management CLI: # Use a predicate in a filter /subsystem=undertow/configuration=filter/gzip=gzipfilter:add() /subsystem=undertow/server=default-server/host=default-host/filter-ref=gzipfilter:add(predicate="regex[pattern='AppleWebKit',value=%{i,User-Agent}]") | |
org.apache.coyote.http11.Http11Protocol.COMPRESSION_MIME_TYPES |
Content type prefixes of compressible content. The default value is |
Configure a predicate in a filter using the management CLI: # Use a predicate in a filter /subsystem=undertow/configuration=filter/gzip=gzipfilter:add() /subsystem=undertow/server=default-server/host=default-host/filter-ref=gzipfilter:add(predicate="regex[pattern='text/html',value=%{o,Content-Type}]") | |
org.apache.coyote.http11.Http11Protocol.COMPRESSION_MIN_SIZE |
Minimum size of content that will be compressed. The default value is |
Configure a predicate in a filter using the management CLI: # Use a predicate in a filter /subsystem=undertow/configuration=filter/gzip=gzipfilter:add() /subsystem=undertow/server=default-server/host=default-host/filter-ref=gzipfilter:add(predicate="max-content-size[value=MIN_SIZE]") | |
org.apache.coyote.http11.DEFAULT_CONNECTION_TIMEOUT |
Default socket timeout. The default value is |
Management CLI command: /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=no-request-timeout,value=VALUE) /subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=no-request-timeout,value=VALUE) /subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=no-request-timeout,value=VALUE) | |
org.jboss.as.web.deployment.DELETE_WORK_DIR_ONCONTEXTDESTROY |
Use this property to remove |
No equivalent configuration | |
org.apache.tomcat.util.buf.StringCache.trainThreshold |
Specifies the number of times |
No equivalent configuration |
Tabela A.2. Map EL System Properties
JBoss EAP 6 System Property |
Description |
Equivalent in JBoss EAP 7 | |
org.apache.el.parser.COERCE_TO_ZERO |
If |
System property is still valid and processed by the EL |
Tabela A.3. Map JSP System Properties
JBoss EAP 6 System Property |
Description |
Equivalent in JBoss EAP 7 | |
org.apache.jasper.compiler.Generator.VAR_EXPRESSIONFACTORY |
The name of the variable to use for the expression language expression factory. If value is not specified, the default value of |
System property has not changed | |
org.apache.jasper.compiler.Generator.VAR_INSTANCEMANAGER |
The name of the variable to use for the instance manager factory. If value is not specified, the default value of |
System property has not changed | |
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING |
If |
System property has not changed | |
org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE |
Any tag buffer that expands beyond |
System property has not changed | |
org.apache.jasper.runtime.JspFactoryImpl.USE_POOL |
If |
System property has not changed | |
org.apache.jasper.runtime.JspFactoryImpl.POOL_SIZE |
The size of the ThreadLocal PageContext. If value is not specified, the default value of |
System property has not changed | |
org.apache.jasper.Constants.JSP_SERVLET_BASE |
The base class of the Servlets generated from the JSPs. If value is not specified, the default value of |
System property has not changed | |
org.apache.jasper.Constants.SERVICE_METHOD_NAME |
The name of the service method called by the base class. If value is not specified, the default value of |
System property has not changed | |
org.apache.jasper.Constants.SERVLET_CLASSPATH |
The name of the ServletContext attribute that provides the class path for the JSP. If value is not specified, the default value of |
System property has not changed | |
org.apache.jasper.Constants.JSP_FILE |
The name of the request attribute for |
System property has not changed | |
org.apache.jasper.Constants.PRECOMPILE |
The name of the query parameter that causes the JSP engine to just pregenerate the servlet but not invoke it. If value is not specified, the default value of |
System property has not changed | |
org.apache.jasper.Constants.JSP_PACKAGE_NAME |
The default package name for compiled JSP pages. If value not specified, the default value of |
System property has not changed | |
org.apache.jasper.Constants.TAG_FILE_PACKAGE_NAME |
The default package name for tag handlers generated from tag files. If value is not specified, the default value of |
System property has not changed | |
org.apache.jasper.Constants.TEMP_VARIABLE_NAME_PREFIX |
Prefix to use for generated temporary variable names. If value is not specified, the default value of |
System property has not changed | |
org.apache.jasper.Constants.USE_INSTANCE_MANAGER_FOR_TAGS |
If |
System property has not changed | |
org.apache.jasper.Constants.INJECT_TAGS |
If |
System property has not changed |
Tabela A.4. Map Security System Properties
JBoss EAP 6 System Property |
Description |
Equivalent in JBoss EAP 7 | |
org.apache.catalina.connector.RECYCLE_FACADES |
If this is |
No equivalent configuration | |
org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH |
If this is |
No equivalent configuration | |
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH |
If this is |
Management CLI command: /subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=allow-encoded-slash,value=VALUE) /subsystem=undertow/server=default-server/https-listener=default:write-attribute(name=allow-encoded-slash,value=VALUE) /subsystem=undertow/server=default-server/ajp-listener=default:write-attribute(name=allow-encoded-slash,value=VALUE) | |
org.apache.catalina.STRICT_SERVLET_COMPLIANCE |
If value is not specified, |
Compliant by default | |
org.apache.catalina.core.StandardWrapperValve.SERVLET_STATS |
If |
No equivalent configuration | |
org.apache.catalina.session.StandardSession.ACTIVITY_CHECK |
If this is |
No equivalent configuration |
A.5. Compatibilidade e interoperabilidade entre os lançamentos
Esta seção descreve a compatibilidade e interoperabilidade de cliente e servidor EJB e componentes de mensagem entre os lançamentos JBoss EAP 5, JBoss EAP 6, e JBoss EAP 7.
EJB remoto via IIOP
Você não deve encontrar problemas em quaisquer das seguintes configurações.
- Conexão a partir de um cliente JBoss EAP 5 para um servidor JBoss EAP 7
- Conexão a partir de um cliente JBoss EAP 6 para um servidor JBoss EAP 7
- Conexão a partir de um cliente EAP 7 para um servidor JBoss EAP 6
- Conexão a partir de um cliente JBoss EAP 7 para um servidor JBoss EAP 5
EJB remoto usando JNDI
Você não deve encontrar problemas em quaisquer das seguintes configurações.
- Conexão a partir de um cliente JBoss EAP 6 para um servidor JBoss EAP 7
- Conexão a partir de um cliente EAP 7 para um servidor JBoss EAP 6
JBoss EAP 6 fornecia suporte para a especificação EJB 3.1 e introduziu o uso de espaço de nomes JNDI globais padronizados, que ainda são usados em JBoss EAP 7. Devido à alteração dos espaço de nomes JNDI, as seguintes configurações não são compatíveis:
- Conexão a partir de um cliente JBoss EAP 5 para um servidor JBoss EAP 7 ou JBoss EAP 6
- Conexão a partir de um cliente JBoss EAP 7 ou JBoss EAP 6 para um servidor JBoss EAP 5
Para mais informações sobre alterações de espaço de nome JNDI padronizados, consulte Alterações JNDI no Guia de Migração de JBoss EAP 6
EJB remoto utilizando @WebService
Você não deve encontrar problemas em quaisquer das seguintes configurações.
- Conexão a partir de um cliente JBoss EAP 5 para um servidor JBoss EAP 7
- Conexão a partir de um cliente JBoss EAP 6 para um servidor JBoss EAP 7
- Conexão a partir de um cliente EAP 7 para um servidor JBoss EAP 6
- Conexão a partir de um cliente JBoss EAP 7 para um servidor JBoss EAP 5
Cliente autônomo de mensagem
Você não deve encontrar problemas em quaisquer das seguintes configurações.
- Conexão a partir de um cliente JBoss EAP 6 para um servidor JBoss EAP 7
- Conexão a partir de um cliente EAP 7 para um servidor JBoss EAP 6
Nas seguintes configurações, se o cliente estiver usando a API HornetQ de mensagem específica ao invés da API JMS genérica, a conexão é possível. Contudo, as pesquisas JNDI devem ser endereçadas utilizando a extensão de nome JNDI herdada de JBoss EAP que é distribuída com JBoss EAP 7.
- Conexão a partir de um cliente JBoss EAP 5 para um servidor JBoss EAP 7
O sistema de mensagens integrado ao JBoss EAP 7 não pode conectar-se ao HornetQ 2.2.x que é distribuído com JBoss EAP 5 devido a questões de incompatibilidade de protocolo. Por esta razão, as seguintes configurações não são compatíveis.
- Conexão a partir de um cliente JBoss EAP 7 para um servidor JBoss EAP 5
Messaging MDBs
Você não deve encontrar problemas em quaisquer das seguintes configurações.
- Conexão a partir de um cliente JBoss EAP 6 para um servidor JBoss EAP 7
- Conexão a partir de um cliente EAP 7 para um servidor JBoss EAP 6
Nas seguintes configurações, se o cliente estiver usando a API HornetQ de mensagem específica ao invés da API JMS genérica, a conexão é possível. Contudo, as pesquisas JNDI devem ser endereçadas utilizando a extensão de nome JNDI herdada de JBoss EAP que é distribuída com JBoss EAP 7.
- Conexão a partir de um cliente JBoss EAP 5 para um servidor JBoss EAP 7
O sistema de mensagens integrado ao JBoss EAP 7 não pode conectar-se ao HornetQ 2.2.x que é distribuído com JBoss EAP 5 devido a questões de incompatibilidade de protocolo. Por esta razão, as seguintes configurações não são compatíveis.
- Conexão a partir de um cliente JBoss EAP 7 para um servidor JBoss EAP 5
Pontes JMS
Você não deve encontrar problemas em quaisquer das seguintes configurações.
- Conexão a partir de um cliente JBoss EAP 5 para um servidor JBoss EAP 7
- Conexão a partir de um cliente JBoss EAP 6 para um servidor JBoss EAP 7
- Conexão a partir de um cliente EAP 7 para um servidor JBoss EAP 6
- Conexão a partir de um cliente JBoss EAP 7 para um servidor JBoss EAP 5
Revised on 2018-01-05 08:51:00 EST