Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

Guia de Migração

Red Hat JBoss Enterprise Application Platform 7.0

For Use with Red Hat JBoss Enterprise Application Platform 7.0

Red Hat Customer Content Services

Resumo

Este livro fornece informações para a migração do seu aplicativo de versões anteriores do Red Hat JBoss Enterprise Application Platform.

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\
  • 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 ou C:\Documents e Settings\USER_NAME\jbdevstudio\runtimes\jboss-eap\
Nota

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.

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.
Importante

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 arquivos deployment-* 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

Importante

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.

Nota

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 novo http-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 subsistema ejb3. 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, messaginge web da versão anterior para a nova configuração. Você pode também executar a operação describe-migration para os subsistemas jacorb, messagingeweb 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.

Importante

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 6Subsistema JBoss EAP 7Operaçã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.

  1. 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.
  2. Inicie o servidor JBoss EAP 7 com a configuração do JBoss EAP 6.

    1. Faça o backup dos arquivos do servidor JBoss EAP 7.
    2. 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
    3. 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
      Nota

      Você 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.
  3. 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

  1. 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")]
                }
            ]
        }
    }

  2. 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
    Nota

    O subsistema messaging describe-migration e operações migrate 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.

  3. 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çãomigrate 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."
        ]}
    }

    Nota

    A lista de alertas migrate e describe-migration para cada subsistema está localizada no Material de Referência no final deste guia.

  4. 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.

    Nota

    Você deve repetir este processo para cada um dos subsistemas jacorb, messaging e web, usando os seguintes comandos.

    /subsystem=jacorb:migrate
    /subsystem=messaging:migrate
    /subsystem=web:migrate
  5. Remova os subsistemas cmp, jaxr e threads e extensões da configuração do servidor.

    Enquanto ainda no prompt de comando da CLI de gerenciamento, remova os subsistemas obsoletos cmp, jaxr e threads 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
Importante

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 nomes urn:jboss:domain:undertow:3.1 .
  • O módulo de extensão org.jboss.as.web, localizado em EAP_HOME/modules/system/layers/base/, foi substituído pelo módulo de extensão org.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.

Nota

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 descritor jboss-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álvulaManipulador

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>
  1. Crie um módulo de driver para o banco de dados que irá armazenar as entradas de registro.
  2. 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>
  3. Configure um expression-filter no subsistema undertow 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.

Importante

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.

  1. Siga as instruções para Iniciar o servidor e a CLI de gerenciamento.
  2. 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 HornetQNome 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:

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.

Atenção

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
Importante

O servidor JBoss EAP 6 deve ser interrompido antes de exportar os dados de mensagens.

A utilidade exporterdo 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>
Nota

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.

  1. Encerre os processos do servidor JBoss EAP 6.
  2. Crie um módulo personalizado conforme descrito acima.
  3. 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
  4. Certifique-se de que não há erros ou mensagens de aviso no registro na conclusão do comando.
  5. 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
  1. Encerre os processos do servidor JBoss EAP 6.
  2. Fazendo o back up do diário HornetQ e arquivos de configuração.

  3. Certifique-se que a fila JMS InQueue que contém as mensagens JMS está definida no servidor JBoss EAP 6.
  4. Certifique-se que a configuração do subsistema messaging contém uma entrada para o RemoteConnectionFactory 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
  1. 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 7 EAP_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/
    • Remova o <resource-root> para caminho HornetQ libdo arquivo JBoss EAP 7 EAP_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ção

        Falha ao remover o HornetQ lib path resource-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.nettypara o diretório JBoss EAP 7 EAP_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
  2. 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 subsistema messaging-activemq do servidor JBoss EAP 7.

    <jms-queue name="MigratedMessagesQueue" entries="jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue"/>
  3. Certifique-se de que o servidorpadrão do subsistema messaging-activemq contém uma configuração para o InVmConnectionFactory 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])
  4. Crie e implemente uma ponte JMS que lê mensagens a partir da fila JMS InQueue configurada no servidor JBoss EAP 6 e as transfere ao MigratedMessagesQueue 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 subsistema messaging-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>
  5. 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 um source-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
  1. 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
  2. Certifique-se que você implantou a destinação JMS alvo para o servidor JBoss EAP 7.
  3. 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 6Nome de diretório JBoss EAP 7

messagingbindings/

activemq/bindings/

messagingjournal/

activemq/journal/

messaginglargemessages/

activemq/largemessages/

messagingpaging/

activemq/paging/

Nota

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.

  1. Connect to the JConsole using the following command.

    EAP_HOME/bin/jconsole.sh
  2. Connect to JBoss EAP local process. Note that it should start with "jboss-modules.jar".
  3. In the MBeans tab, choose jboss.asmessaging-activemqdefaultOperations 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

ElementoAtributos sem suporte

<orb>

  • client-timeout
  • max-managed-buf-size
  • max-server-connections
  • outbuf-cache-timeout
  • outbuf-size
  • connection retries
  • retry-interval
  • name
  • server-timeout

<poa>

  • queue-min
  • queue-max
  • pool-size
  • max-threads

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

ElementoAtributos para serem definidos como desativados (off)

<orb>

  • cache-poa-names
  • cache-typecodes
  • print-version
  • use-bom
  • use-imr

<interop>

(todos exceto sun)

  • comet
  • iona
  • chunk-custom-rmi-valuetypes
  • indirection-encoding-disable
  • lax-boolean-encoding
  • strict-check-on-tc-creation

<poa/>

  • monitoring
  • queue-wait

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 undertowdo 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
Nota

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 6Substituto 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 6Substituto 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 descritor webservices.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.

PropriedadeTipoDescriçã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 Keep-Alive ou close.

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 pacote org.apache.wss4j.common.ext.
  • A maior parte dos objetos bean SAML do pacote org.apache.ws.security.saml.ext foi transferida para o pacote org.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 tokens ActAs. Como consequência, um nome de usuário válido e senha devem ser especificados no UsernameToken que é fornecido para o token ActAs.
  • 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étodo setRequireBearerSignature() 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.xmlpara 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 para THREAD_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.

Nota

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.

Nota

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 e SignedOutput para resteasy-crypto deve ter Content-Type configurado para multipart/signed no objeto Request ou Response, ou usar as anotações @Consumes ou @Produces.
  • SignedOutput e SignedInput podem ser usados para retornar o formato tipo MIME application/pkcs7-signature em forma binária ao definir este tipo nas anotações @Produces ou @Consumes.
  • Se @Produces ou @Consumes forem tipo MIME text/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 preteridaExceçã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 um bean-discovery-mode de none.
  • 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 um bean-discovery-mode de all.
  • 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 um bean-discovery-mode de annotated.

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
Type Handling
  • Implementações incorporadas org.hibernate.type.descriptor.sql.SqlTypeDescriptor não mais se auto registrarão com org.hibernate.type.descriptor.sql.SqlTypeDescriptorRegistry. Os aplicativos utilizando implementações personalizadas SqlTypeDescriptor que estendem as implementações incorporadas e apóiam-se neste comportamento devem ser atualizadas para chamarem-se SqlTypeDescriptorRegistry.addDescriptor().
  • Para IDs definidas como UUIDs geradas, alguns bancos de dados precisavam que você definisse explicitamente o @Column(length=16) para gerar o BINARY(16) para que as comparações funcionem adequadamente.
  • Para mapeamento tipo Enum definido em hbm.xml, onde você deseja javax.persistence.EnumType.STRING name-mapping, esta configuração deve ser declarada explicitamente ao usar definição useNamed(true) ou ao especificar um VARCHAR valor de 12.
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ção org.hibernate.Transaction agora conversa com um org.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 propriedade hibernate.transaction.factory_class, que agora tornou-se preterida, e referiam ao org.hibernate.engine.transaction.spi.TransactionFactory FQN (fully qualified name). Com o Hibernate ORM 5, você especifica a configuração hibernate.transaction.coordinator_class e refere a um org.hibernate.resource.transaction.TransactionCoordinatorBuilder. Veja org.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.

      Importante

      If 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 to jdbc 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 the hibernate.transaction.coordinator_class property value to jta or provide a custom org.hibernate.resource.transaction.TransactionCoordinatorBuilder that builds a org.hibernate.resource.transaction.TransactionCoordinator that properly coordinates with JTA-based transactions.

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 a EntityManagerFactory não colocou prefixos anteriormente com hibernate. 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 de org.hibernate.envers.boot.internal.EnversService.
  • Os parâmetros de método AuditStrategy foram alterados para excluir AuditConfiguration preterido e usar o novo EnversService.
  • Várias classes e interfaces no org.hibernate.hql.spi package and subpackages have been moved to the new org.hibernate.hql.spi.id package. Isto inclui a classe MultiTableBulkIdStrategy e interfaces e suas subclasses AbstractTableBasedBulkIdHandler, TableBasedDeleteHandlerImpl, e TableBasedUpdateHandlerImpl .
  • 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étodo org.hibernate.cache.spi.access.AccessType.getExternalName() em vez de constantes enum org.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ódulo hibernate-search-engine para o módulo hibernate-search-orm. Outros integradores devem depender exclusivamente em SearchIntegrator, que substitui o preterido SearchFactoryIntegrator.
  • O valor enum SpatialMode.GRID foi renomeado para SpatialMode.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 exemplo org.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 do ServiceManager, Service, Startable e Stoppable 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 o IndexUpgrader 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 valor nulo, 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 classeNovo 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
InterfaceDescriçã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
ClasseDescriçã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
EnumDescrição

org.hibernate.search.annotations.FieldCacheType

Remova a anotação CacheFromIndex pois é preterida. Consulte Anotações preteridas de Hibernate Search.

Anotações preteridas de Hibernate Search
AnotaçãoDescriçã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étodoDescriçã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 field().numericField() instead.

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 FuzzyContext.withEditDistanceUpTo(int).

Construtores preteridos de Hibernate Search
ConstrutorDescrição

org.hibernate.search.cfg.NumericFieldMapping(PropertyDescriptor, EntityDescriptor, SearchMapping)

Utilize NumericFieldMapping.NumericFieldMapping(String, PropertyDescriptor, EntityDescriptor, SearchMapping) em seu lugar.

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.

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 da 8080. 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 conector remote. 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.

Importante

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.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.

Nota

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_Avisualizava 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 e exclude dos elementos imports e exports para controlar o carregamento de classe no arquivo module.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 <max-active-sessions/>.

Na nova implementação, <max-active-sessions/> é utilizada para habilitar passivação de sessão. Se a criação de sessão for resultar em um número de sessões ativas que excede o <max-active-sessions/>, então a sessão mais antiga conhecida ao gerenciador de sessão irá passivar para dar lugar à nova sessã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 <max-active-sessions/>.

<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 <max-active-sessions/>.

<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 instance-id do nó gerenciando uma determinada solicitação era anexada a jsessionid para uso dos balanceadores de carga, como mod_jk, mod_proxy_balancer, mod_cluster, dependendo do valor especificado para <use-jk/>.

Na nova implementação, a instance-id, se for definida , é sempre anexada ao jsessionid.

<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-mode/> como INSTANT ou INTERVAL. A replicação assíncrona de Infinispan torna esta opção de configuração obsoleta.

<snapshot-interval/>

Isto era relevante somente para <snapshot-mode>INTERVAL</snapshot-mode>. Desde que <snapshot-mode/> é obsoleta, agora esta opção também é obsoleta.

<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 arquivo jboss-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.
Nota

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.

    PacoteJBoss EAP 6JBoss 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 campo User 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.

  1. 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.
  2. Leia o JBoss EAP 6 Guia de Migração e este guia para se familiarizar com o conteúdo de cada um.
  3. 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.
  4. 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 .
  5. 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 e threads .
  • 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 ejb3 subsystem of the server configuration file. The jboss-ejb3.xml deployment descriptor replaces the jboss.xml deployment descriptor file. For more information about these changes, see the following section in the JBoss EAP 6 Migration Guide.

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 <channel> elements to the jgroups subsystem. JBoss EAP 7 also includes the Undertow mod_cluster implementation, introduces a new API for building singleton services, and other new clustering features. These changes are documented in the following sections of this guide.

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 org.jboss.logging package are now deprecated, which impacts source code and Maven GAVs (groupId:artifactId:version). The prefixes for all log messages were also changed. For more information about these changes, see the following sections in this guide.

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 EAP_HOME/server/production/conf/jacorb.properties file to the server configuration file. JBoss EAP 7 then replaced the JacORB IIOP implementation with a downstream branch of the OpenJDK ORB.

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 ejb:BEAN_REFERENCE for remote access to EJBs. See the following section in the JBoss EAP 6 Migration Guide for more information.

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 transactions subsystem in JBoss EAP 6 have changed in JBoss EAP 7. For more information, see the following section in this guide.

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.

Nota

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 avisoO que significa / Como resolver

A migração iiop pode ser realizada quando o servidor está no modo admin-only

A operação migrate requer iniciar o servidor em modo admin-only, que é feito ao adicionar o parâmetro --admin-only ao comando de início do servidor:

$ 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 iiop-openjdk. O comportamento exibido por esta propriedade na versão anterior de JBoss EAP não é migrado e o administrador deve verificar se o novo subsistema iiop-openjdk no JBoss EAP 7 é capaz de operar corretamente sem esse comportamento.

Propriedades não suportadas incluem: cache-poa-names, cache-typecodes, chunk-custom-rmi-valuetypes, client-timeout, comet, indirection-encoding-disable, iona, lax-boolean-encoding, max-managed-buf-size, max-server-connections, max-threads, outbuf-cache-timeout, outbuf-size, queue-max, queue-min, poa-monitoring, print-version, retries, retry-interval, queue-wait, server-timeout, strict-check-on-tc-creation, use-bom, use-imr.

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 iiop-openjdk

Propriedades que usam expressões devem ser configuradas manualmente pelo administrador.

Por exemplo, o subsistema jacorb no JBoss EAP 6 definia uma propriedade giop-minor-version. O subsistema iiop-openjdk no JBoss EAP 7 define uma propriedade giop-version. Suponha que o atributo da versão de manutenção do subsistema jacorb está definido para ${iiop-giop-minor-version} e a propriedade de sistema está configurada no arquivo standalone.conf como -Diiop-giop-minor-version=1. Após a operação migrate, o administrador deve alterar o valor da propriedade de sistema para 1.1 para certificar-se que o novo subsistema está configurado corretamente.

Não é possivel migar: o novo subsistema iiop-openjdk já está definido

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.

Nota

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 avisoO que significa / Como resolver

A operação migrate não pode realizada: o servidor deve estar em modo admin-only

A operação migrate requer iniciar o servidor em modo admin-only, que é feito ao adicionar o parâmetro --admin-only ao comando de início do servidor:

$ EAP_HOME/bin/standalone.sh --admin-only

Não foi possível migar o atributo local-bind-address a partir do recurso X. Alternativamente, utilize o atributo socket-binding para configurar este broadcast-group.

A mensagem contém explicação e indica como fazer para corrigir o problema.

Não foi possível migar o atributo local-bind-port a partir do recurso X. Alternativamente, utilize o atributo socket-binding para configurar este broadcast-group.

A mensagem contém explicação e indica como fazer para corrigir o problema.

Não foi possível migrar o atributo group-address a partir do recurso X. Alternativamente, utilize o atributo socket-binding para configurar este broadcast-group.

A mensagem contém explicação e indica como fazer para corrigir o problema.

Não foi possível migar o atributo group-port a partir do recurso X. Alternativamente, utilize o atributo socket-binding para configurar este broadcast-group.

O recurso broadcast-group não aceita mais os atributos local-bind-address, local-bind-port, group-address, ou group-port. Aceita somente um atributo socket-binding. O aviso é uma notificação de que o recurso X tem um atributo sem suporte. Você deve definir manualmente o atributo socket-binding no recurso e certificar-se que corresponde a um recurso socket-binding definido.

As classes que fornecem X são descartadas durante a migração. Para usá-las no novo subsistema messaging-activemq, você deve estender o Interceptor baseado em Artemis.

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 shared-store e backup contêm expressões e não é possível determinar sem ambiguidade como criar a ha-policy correspondente para o servidor do messaging-activemq.

Isto significa que os atributos hornetq-server X: shared-store ou backup continham uma expressão, tal como ${xxx}, e a operação de migração não conseguiu resolvê-la para uma expressão concreta. O valor é descartado e a ha-policy para o messaging-activemq deve ser atualizada manualmente.

Não foi possível migar o atributo local-bind-address a partir do recurso X. Alternativamente, utilize o atributo socket-binding para configurar este discovery-group.

A mensagem contém explicação e indica como fazer para corrigir o problema.

Não foi possível migar o atributo local-bind-port a partir do recurso X. Alternativamente, utilize o atributo socket-binding para configurar este discovery-group.

A mensagem contém explicação e indica como fazer para corrigir o problema.

Não foi possível migar o atributo group-address a partir do recurso X. Alternativamente, utilize o atributo socket-binding para configurar este discovery-group.

A mensagem contém explicação e indica como fazer para corrigir o problema.

Não foi possível migar o atributo group-port a partir do recurso X. Alternativamente, utilize o atributo socket-binding para configurar este discovery-group.

O recurso discovery-group não aceita mais os atributos local-bind-address, local-bind-port, group-address, ou group-port. Aceita somente um atributo socket-binding. O aviso é uma notificação de que o recurso X tem um atributo sem suporte. Você deve definir manualmente o atributo socket-binding no recurso e certificar-se que corresponde a um recurso socket-binding definido.

Não foi possível criar legacy-connection-factory baseado em connection-factory X. Ele utiliza um conector in-vm HornetQ que não é compatível com o conector in-vm Artemis.

Os recursos remotos herdados de connection-factory de HornetQ são migrados para os recursos legacy-connection-factory para permitir que clientes JBoss EAP 6 conectem-se ao JBoss EAP 7. Entretanto, os recursos legacy-connection-factory são criados somente quando connection-factory estiver usando conectores remotos. Qualquer connection-factory que estiver utilizando in-vm não será migrado pois clientes in-vm são baseados em JBoss EAP 7, não JBoss EAP 6. Este aviso é uma notificação de que in-vm connection-factory não foi migrado.

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:

  • cluster-connection forward-when-no-consumers:

    Este atributo boleano foi substituído pelo atributo message-load-balancing-type, que é um enum com um valor de OFF, STRICT, ou ON_DEMAND.

  • Para broadcast-group e discovery-group, os atributos jgroups-stack e jgroups-channel

    Eles referenciam outros recursos e JBoss EAP 7 não aceita mais estas expressões.

Não foi possível migrar atributo X a partir do recurso Y. Este atributo não é suportado pelo novo subsistema messaging-activemq.

Alguns atributos não são mais suportados no novo subsistema messaging-activemq e são simplesmente descartados:

  • hornetq-server’s failback-delay
  • Atributo http-connector’s use-nio
  • Atributo http-acceptor’s use-nio
  • Atributo remote-connector’s use-nio
  • Atributo remote-acceptor’s use-nio

Não é possível migrar o atributo failback-delay a partir do recurso X. Artemis detecta failback de forma determinística e não exige mais que um atraso seja especificado para que ocorra o failback.

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.

Nota

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 avisoO que significa / Como resolver

Operação de migração permitida somente em modo admin

A operação migrate requer iniciar o servidor em modo admin-only, que é feito ao adicionar o parâmetro --admin-only ao comando de início do servidor:

$ 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 Undertow em JBoss EAP 7 é capaz de operar corretamente sem este comportamento ou se o comportamento deve ser migrado manualmente.

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 Undertow em JBoss EAP 7 é capaz de operar corretamente sem este comportamento ou se o comportamento deve ser migrado manualmente.

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 verify-client X para o equivalente de Undertow

A mensagem contém a explicação.

Não foi possível migrar a expressão verify-client X

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 Undertow em JBoss EAP 7 é capaz de operar corretamente sem este comportamento ou se o comportamento deve ser migrado manualmente.

This warning can occur for the following valves:

  • org.apache.catalina.valves.RemoteAddrValve

    Deve ter pelo menos um valor permitido ou negado.

  • org.apache.catalina.valves.RemoteHostValve

    Deve ter pelo menos um valor permitido ou negado.

  • org.apache.catalina.authenticator.BasicAuthenticator
  • org.apache.catalina.authenticator.DigestAuthenticator
  • org.apache.catalina.authenticator.FormAuthenticator
  • org.apache.catalina.authenticator.SSLAuthenticator
  • org.apache.catalina.authenticator.SpnegoAuthenticator
  • Válvulas personalizadas

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 undertow subsystem in JBoss EAP 7 is able to operate correctly without that behavior or whether the behavior must be migrated manually. This warning can occur for the following valve attributes:

  • org.apache.catalina.valves.AccessLogValve

    • resolveHosts
    • fileDateFormat
    • renameOnRotate
    • encoding
    • locale
    • requestAttributesEnabled
    • buffered
  • org.apache.catalina.valves.ExtendedAccessLogValve

    • resolveHosts
    • fileDateFormat
    • renameOnRotate
    • encoding
    • locale
    • requestAttributesEnabled
    • buffered
  • org.apache.catalina.valves.RemoteIpValve

    • httpServerPort
    • httpsServerPort
    • remoteIpHeader

      Se estiver definido porém não configurado para "x-forwarded-for"

    • protocolHeader

      Se estiver definido porém não configurado para "x-forwarded-proto"

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.

AttributeDescriçãoUndertow 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.

AttributeDescriçãoUndertow 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 PROPFIND.

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 AttributeDescriçãoUndertow 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 reauthenticate=true setting in JBoss EAP 6. While reauthenticate=false could possibly improve performance, it could also create security issues.

Web Access Log Attributes
JBoss Web AttributeDescriçãoUndertow 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 AttributeDescriçãoUndertow 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 io subsystem.

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 redirect-binding. Undertow provides the redirect-socket attribute on the http-listener element, which is a replacement for redirect-binding.

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 jvmRoute attribute. It does not override the automatically generated value when using the standalone-ha.xml configuration file.

It supports reload.

Management CLI command:

/subsystem=undertow:write-attribute(name=instance-id,value=VALUE)

org.apache.tomcat.util.buf.StringCache.byte.enabled

If true, the String cache is enabled for ByteChunk. If the value is not specified, the default value of false is used.

No equivalent configuration

org.apache.tomcat.util.buf.StringCache.char.enabled

If true, the String cache is enabled for CharChunk. If the value is not specified, the default value of false is used.

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 5000 is used.

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 128 is used.

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 1000 is used.

No equivalent configuration

org.apache.catalina.core.StandardService.DELAY_CONNECTOR_STARTUP

If true, the connector startup is not done automatically. It is useful in embedded mode.

No equivalent configuration

org.apache.catalina.connector.Request.SESSION_ID_CHECK

If true, the Servlet container verifies that a session exists in a context with the specified session ID before creating a session with that ID.

No equivalent configuration

org.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADER

If true, custom HTTP status messages are used within HTTP headers. Users must ensure that any such message is ISO-8859-1 encoded, particularly if user provided input is included in the message, to prevent a possible XSS vulnerability. If value is not specified the default value of false is used.

Must be enabled programmatically by implementing a custom io.undertow.servlet.ServletExtension. Then use the extension to call setSendCustomReasonPhraseOnError(true) on the io.undertow.servlet.api.DeploymentInfo structure instance.

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 IllegalStateException. The default value is 512 parameters.

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 IllegalStateException. The default value is 128 headers.

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 32 x 512. (512 x Runtime.getRuntime().availableProcessors() for the JIO connector)

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 ArrayOutOfBoundsException. The default value is 8192 bytes.

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 off, and compression can be enabled using the value on to enable it conditionally, or force to always enable it.

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 text/html,text/xml,text/plain.

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 2048 bytes.

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 60000 ms.

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 .java and .class files to ensure that JSP sources are recompiled. The default value is false. Default socket timeout for keep-alive. The default value is -1 ms, which means it will use the default socket timeout.

No equivalent configuration

org.apache.tomcat.util.buf.StringCache.trainThreshold

Specifies the number of times toString() must be invoked before activating cache. The default value is 100000.

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 true, when coercing expressions to numbers, empty strings ("") and null will be coerced to zero as required by the specification. If a value is not specified, the default value of true is used.

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 _el_expressionfactory is used.

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 _jsp_instancemanager is used.

System property has not changed

org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING

If false, the requirements for escaping quotes in JSP attributes are relaxed so that a missing required quote does not cause an error. If value is not specified, the specification compliant default of true is used.

System property has not changed

org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE

Any tag buffer that expands beyond org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE is destroyed and a new buffer is created of the default size. If value is not specified, the default value of 512 is used.

System property has not changed

org.apache.jasper.runtime.JspFactoryImpl.USE_POOL

If true, a ThreadLocal PageContext pool is used. If value is not specified, the default value of true is used.

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 8 is used.

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 org.apache.jasper.runtime.HttpJspBase is used.

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 _jspService is used.

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 org.apache.catalina.jsp_classpath is used.

System property has not changed

org.apache.jasper.Constants.JSP_FILE

The name of the request attribute for <jsp-file> element of a servlet definition. If present on a request, this overrides the value returned by request.getServletPath() to select the JSP page to be executed. If value is not specified, the default value of org.apache.catalina.jsp_file is used.

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 org.apache.catalina.jsp_precompile is used.

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 org.apache.jsp is used.

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 org.apache.jsp.tag is used.

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 _jspx_temp is used.

System property has not changed

org.apache.jasper.Constants.USE_INSTANCE_MANAGER_FOR_TAGS

If true, the instance manager is used to obtain tag handler instances. If value is not specified, true is used.

System property has not changed

org.apache.jasper.Constants.INJECT_TAGS

If true, annotations specified in tags will be processed and injected. This can have a performance impact when using simple tags, or if tag pooling is disabled. If value is not specified, false is used.

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 true or if a security manager is in use a new facade object is created for each request. If value is not specified, the default value of false is used.

No equivalent configuration

org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH

If this is true the '\' character is permitted as a path delimiter. If value is not specified, the default value of false is used.

No equivalent configuration

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH

If this is true, '%2F' and '%5C' is permitted as path delimiters. If value is not specified, the default value of false is used.

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, true is used. If this is true the following actions will occur: any wrapped request or response object passed to an application dispatcher is checked to ensure that it has wrapped the original request or response. (SRV.8.2 / SRV.14.2.5.1) a call to Response.getWriter() if no character encoding has been specified results in subsequent calls to Response.getCharacterEncoding() returning ISO-8859-1 and the Content-Type response header will include a charset=ISO-8859-1 component. (SRV.15.2.22.1) every request that is associated with a session causes the session’s last accessed time to be updated regardless of whether or not the request explicity accesses the session. (SRV.7.6)

Compliant by default

org.apache.catalina.core.StandardWrapperValve.SERVLET_STATS

If true or if org.apache.catalina.STRICT_SERVLET_COMPLIANCE is true, the wrapper will collect the JSR-77 statistics for individual servlets. If value is not specified, the default value of false is used.

No equivalent configuration

org.apache.catalina.session.StandardSession.ACTIVITY_CHECK

If this is true or if org.apache.catalina.STRICT_SERVLET_COMPLIANCE is true Tomcat tracks the number of active requests for each session. When determining if a session is valid, any session with at least one active request is always be considered valid. If value is not specified, the default value of false is used.

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

Nota Legal

Copyright © 2018 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.