Capítulo 4. Mudanças de configuração de servidor [Esta é uma tradução automática]
4.1. Mudanças na instalação do RPM [Esta é uma tradução automática]
No JBoss EAP 6, o caminho padrão para a instalação do RPM era o /usr/share/jbossas/ diretório.
O JBoss EAP 7 foi construído para Biblioteca de coleções de software convenções. O diretório raiz de coleções de software é normalmente localizado no /opt/ diretório para evitar possíveis conflitos entre as Coleções de Software ea instalação do sistema básico. O uso do /opt/ O diretório é recomendado pelo Filesystem Hierarchy Standard (FHS). Como resultado, o caminho padrão para a instalação do RPM foi alterado para /opt/rh/eap7/root/usr/share/wildfly/ no JBoss EAP 7.
4.2. Opções de migração de configuração de servidor [Esta é uma tradução automática]
Para migrar a configuração do servidor do JBoss EAP 6 para o JBoss EAP 7, você pode usar o Ferramenta de Migração do JBoss Server ou você pode executar uma migração manual com a ajuda do CLI de gerenciamento migrate Operação.
Alterações de configurações de servidor EJB [Esta é uma tradução automática]
A Ferramenta de Migração do JBoss Server é 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. Para obter informações sobre como configurar e executar a ferramenta, consulte Usando a Ferramenta de Migração do JBoss Server.
Operação de migração da CLI de gerenciamento [Esta é uma tradução automática]
Você pode usar o CLI de gerenciamento migrate operação para atualizar o jacorb, messaging, e web subsistemas no arquivo de configuração do servidor do JBoss EAP 6 para permitir que eles sejam executados no novo release, mas esteja ciente de que o resultado não é uma configuração completa do JBoss EAP 7. Por exemplo:
-
A operação não atualiza o original
remoteconfigurações de protocolo e porta para o novohttp-remotinge novas configurações de porta agora usadas 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.
-
o
migrateoperação não migra oejb3configuração do subsistema. Para obter informações sobre possíveis problemas de migração do EJB, consulte Alterações na Configuração do Servidor EJB.
Para mais informações sobre como usar o migrate operação para migrar a configuração do servidor, consulte Operação de Migração do CLI de Gerenciamento.
4.3. Operação de migração da CLI de gerenciamento [Esta é uma tradução automática]
Você pode usar a CLI de gerenciamento para atualizar seus arquivos de configuração do servidor JBoss EAP 6 para executar no JBoss EAP 7. O CLI de gerenciamento migrate operação para atualizar automaticamente jacorb, messaging, e web subsistemas do release anterior para a nova configuração. Você também pode executar o describe-migration operação para o jacorb, messaging, e web subsistemas para revisar as alterações de configuração de migração propostas antes de executar a migração. Não há substitutos para o cmp, jaxr, ou threads subsistemas e devem ser removidos da configuração do servidor.
Vejo Opções de Migração de Configuração do Servidor para limitações do migrate Operação. A Ferramenta de Migração do JBoss Server é 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. Para obter informações sobre como configurar e executar a ferramenta, consulte Usando a Ferramenta de Migração do JBoss Server.
Tabela 4.1. Migração de subsistemas e operação de Cli de gerenciamento [Esta é uma tradução automática]
| Subsistema JBoss EAP 6 | Subsistema JBoss EAP 7 | Operação de migração da CLI de gerenciamento [Esta é uma tradução automática] |
|---|---|---|
|
cmp |
sem substitução |
remove |
|
jacorb |
iiop-openjdk |
migrate |
|
jaxr |
sem substitução |
remove |
|
messaging |
messaging-activemq |
migrate |
|
threads |
sem substitução |
remove |
|
web |
undertow |
migrate |
Inicie o servidor e a CLI de gerenciamento
Siga as etapas abaixo para atualizar sua configuração do servidor JBoss EAP 6 para executar em JBoss EAP 7.
- Antes de começar, revise Faça backup de dados importantes e revise o estado do servidor. Ele contém informações importantes sobre como garantir que o servidor esteja em bom estado e que os arquivos apropriados sejam armazenados em backup.
Inicie o servidor JBoss EAP 7 com a configuração do JBoss EAP 6.
- Faça o backup dos arquivos do servidor JBoss EAP 7.
Copie o arquivo de configuração da versão anterior no diretório do JBoss EAP 7.
$ cp EAP6_HOME/standalone/configuration/standalone-full.xml EAP7_HOME/standalone/configuration
Navegue até o diretório de instalação do JBoss EAP 7 e inicie o servidor com o
--start-mode=admin-onlyargumento.$ bin/standalone.sh -c standalone-full.xml --start-mode=admin-only
NotaVocê verá o seguinte
org.jboss.as.controller.management-operationERROS no log do servidor quando você inicia o servidor. Esses erros são esperados e indicam que as configurações do subsistema legado devem ser removidas ou migradas para o JBoss EAP 7.- WFLYCTL0402: Subsystems [cmp] provided by legacy extension 'org.jboss.as.cmp' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [jacorb] provided by legacy extension 'org.jboss.as.jacorb' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [jaxr] provided by legacy extension 'org.jboss.as.jaxr' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [messaging] provided by legacy extension 'org.jboss.as.messaging' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [threads] provided by legacy extension 'org.jboss.as.threads' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
- WFLYCTL0402: Subsystems [web] provided by legacy extension 'org.jboss.as.web' are not supported on servers running this version. Both the subsystem and the extension must be removed or migrated before the server will function.
Abra um novo terminal, navegue até o diretório de instalação do JBoss EAP 7 e inicie a CLI de gerenciamento usando o
--controller=remote://localhost:9999argumentos.$ bin/jboss-cli.sh --connect --controller=remote://localhost:9999
Migrar JacORB, Messaging e subsistemas Web
Para revisar as alterações de configuração que serão feitas no subsistema antes de executar a migração, execute o
describe-migrationOperação.o
describe-migrationoperação usa a seguinte sintaxe./subsystem=SUBSYSTEM_NAME:describe-migrationO exemplo a seguir descreve as mudanças de configuração feitas no JBoss EAP 6.4
standalone-full.xmlarquivo de configuração quando ele é migrado para o JBoss EAP 7. As entradas foram removidas da saída para melhorar a legibilidade e economizar espaço.Exemplo: operação describe-migration [Esta é uma tradução automática]
/subsystem=messaging:describe-migration { "outcome" => "success", "result" => { "migration-warnings" => [], "migration-operations" => [ { "operation" => "add", "address" => [("extension" => "org.wildfly.extension.messaging-activemq")], "module" => "org.wildfly.extension.messaging-activemq" }, { "operation" => "add", "address" => [("subsystem" => "messaging-activemq")] }, <!-- *** Entries removed for readability *** --> { "operation" => "remove", "address" => [("subsystem" => "messaging")] }, { "operation" => "remove", "address" => [("extension" => "org.jboss.as.messaging")] } ] } }Execute o
migrateoperação para migrar a configuração do subsistema para o subsistema que a substitui no JBoss EAP 7. A operação usa a seguinte sintaxe./subsystem=SUBSYSTEM_NAME:migrateNotao
messagingsubsistemadescribe-migrationemigrateoperações permitem que você passe um argumento para configurar o acesso por clientes legados. Para obter mais informações sobre a sintaxe de comando, consulte Migração de Subsistema de Mensagens e Compatibilidade de Encaminhamento.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 [Esta é uma tradução automática]
/subsystem=messaging:migrate { "outcome" => "success", "result" => {"migration-warnings" => []} }Se você vir entradas de "avisos de migração" no log, isso indica que a migração da configuração do servidor foi concluída com êxito, mas não conseguiu migrar todos os elementos e atributos. Você deve seguir as sugestões fornecidas pelos "avisos de migração" e executar comandos CLI de gerenciamento adicionais para modificar essas configurações. O seguinte é um exemplo de um
migrateoperação que retorna "avisos de migração".Examplo: operação de migração com alertas [Esta é uma tradução automática]
/subsystem=messaging:migrate { "outcome" => "success", "result" => {"migration-warnings" => [ "WFLYMSG0080: Could not migrate attribute group-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupB\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute group-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupB\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute local-bind-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute local-bind-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute group-address from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group.", "WFLYMSG0080: Could not migrate attribute group-port from resource [ (\"subsystem\" => \"messaging-activemq\"), (\"server\" => \"default\"), (\"broadcast-group\" => \"groupA\") ]. Use instead the socket-binding attribute to configure this broadcast-group." ]} }NotaA lista de
migrateedescribe-migrationavisos para cada subsistema estão localizados no Material de referência no final deste guia.- Avisos de Operação da Migração do Subsistema Jacorb
- Avisos para a operação de migração de subsistema de mensagem [Esta é uma tradução automática]
- Avisos para a operação de migração de subsistema de mensagem [Esta é uma tradução automática]
Revise o arquivo de configuração de servidor para verificar se extensão, subsistema e espaço de nomes foram atualizados e as configurações dos subsistemas existentes foram migradas para o JBoss EAP 7.
NotaVocê deve repetir este processo para cada um dos
jacorb,messaging, ewebsubsistemas usando os seguintes comandos./subsystem=jacorb:migrate /subsystem=messaging:migrate /subsystem=web:migrate
Remova o
cmp,jaxr, ethreadssubsistemas e extensões da configuração do servidor.Ainda no prompt do CLI de gerenciamento, remova o obsoleto
cmp,jaxr, ethreadssubsistemas executando os seguintes comandos./subsystem=cmp:remove /extension=org.jboss.as.cmp:remove /subsystem=jaxr:remove /extension=org.jboss.as.jaxr:remove /subsystem=threads:remove /extension=org.jboss.as.threads:remove
Você deve migrar o messaging, jacorb, e web subsistemas e remova o cmp, jaxr, e threads extensões e subsistemas antes que você possa reiniciar o servidor para operação normal. Se você precisar reiniciar o servidor antes de concluir esse processo, inclua o --start-mode=admin-only argumento na linha de comando do início do servidor. Isso permite que você continue com as alterações de configuração.
4.4. Alterações de registro [Esta é uma tradução automática]
4.4.1. Alterações de prefixos dos registros de mensagens [Esta é uma tradução automática]
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.
Para uma lista completa dos novos prefixos de código de projeto de mensagem de log usados no JBoss EAP 7, veja Códigos de Projeto Utilizados no JBoss EAP no JBoss EAP Guia de desenvolvimento.
4.4.2. Alterações do manipulador de console do criador de logs raiz [Esta é uma tradução automática]
O criador de logs raiz do JBoss EAP 7.0 incluiu um manipulador de logs do console para todos os perfis de servidor de domínio e para todos os perfis independentes padrão, exceto o standalone-full-ha perfil. O criador de logs raiz do JBoss EAP 7.1 não inclui mais um manipulador de logs do console para os perfis de domínio gerenciados. O controlador host e o controlador de processo registram no console por padrão. Para obter a mesma funcionalidade que foi fornecida no JBoss EAP 7.0, veja Configurar um manipulador de log do console no Guia de configuração para o JBoss EAP.
4.5. Alterações de configurações do servidor web [Esta é uma tradução automática]
4.5.1. Substituição do subsistema web com Undertow [Esta é uma tradução automática]
Undertow substitui o JBoss Web como o servidor web no JBoss EAP 7. Isso significa que o legado web A configuração do subsistema deve ser migrada para o novo JBoss EAP 7 undertow configuração do subsistema.
-
o
urn:jboss:domain:web:2.2o namespace de configuração do subsistema no arquivo de configuração do servidor foi substituído pelourn:jboss:domain:undertow:4.0namespace. -
o
org.jboss.as.webmódulo de extensão, localizado emEAP_HOME/modules/system/layers/base/, foi substituído peloorg.wildfly.extension.undertowmódulo de extensão.
Você pode usar o CLI de gerenciamento migrate operação para migrar o web subsistema para undertow no arquivo de configuração do servidor. No entanto, esteja ciente de que esta operação não é capaz de migrar todas as configurações do subsistema Web do JBoss. Se você vir entradas de "aviso de migração", deverá executar comandos CLI de gerenciamento adicionais para migrar essas configurações para Undertow. Para mais informações sobre o CLI de gerenciamento migrate operação, consulte Operação de Migração do CLI de Gerenciamento.
O seguinte é um exemplo do padrão web configuração do subsistema 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>
O seguinte é um exemplo do padrão undertow configuração do subsistema no JBoss EAP 7.
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<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.5.2. Migrar as condições de regravação do JBoss Web [Esta é uma tradução automática]
O CLI de gerenciamento migrate operação não é capaz de migrar automaticamente as condições de reescrita. Eles são relatados como "avisos de migração" e você deve migrá-los manualmente. Você pode criar a configuração equivalente no JBoss EAP 7 usando Atributos e manipuladores de predicados inferiores.
O seguinte é um exemplo de um web configuração do subsistema no JBoss EAP 6 que inclui rewrite configuração.
<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>
Segue o Operação de Migração do CLI de Gerenciamento instruções para iniciar seu servidor e a CLI de gerenciamento, depois migrar web arquivo de configuração do subsistema usando o seguinte comando.
/subsystem=web:migrate
Os seguintes "avisos de migração" são relatados quando você executa o migrate operação na 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\")
]
}"
]}
}
Revise o arquivo de configuração do servidor e você verá a seguinte configuração para o undertow subsistema.
Configuração lado cliente e carregamento de classe [Esta é uma tradução automática]
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<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>
Use a CLI de gerenciamento para criar o filtro para substituir a configuração de reconfiguração no undertow subsistema. Você deve ver "{" resultado "⇒" sucesso "}" 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
Revise o arquivo de configuração do servidor atualizado. O subsistema Web JBoss está agora completamente migrado e configurado no undertow subsistema.
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<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>Para obter mais informações sobre como configurar filtros e manipuladores usando a CLI de gerenciamento, consulte Configurando o Servidor da Web no JBoss EAP 7 Guia de configuração.
4.5.3. Migrar propriedades de sistemas JBoss Web [Esta é uma tradução automática]
Na versão anterior do JBoss EAP, as propriedades do sistema poderiam ser usadas para modificar o comportamento padrão do JBoss. Para obter informações sobre como configurar o mesmo comportamento no Undertow, consulte Referência de Migração de Propriedades do Sistema JBoss Web
4.5.4. Atualizar o padrão de cabeçalho do log de acesso [Esta é uma tradução automática]
Quando você migra do JBoss EAP 6.4 para o JBoss EAP 7.1, você pode achar que os logs de acesso não gravam mais os valores esperados "Referer" e "User-agent". Isto é porque o JBoss Web, que foi incluído no JBoss EAP 6.4, usou um padrão de %{headername}i no access-log para registrar um cabeçalho de entrada.
Exemplo: Access Log Format no JBoss EAP 6.4 [Esta é uma tradução automática]
<access-log pattern="%h %l %u %t "%T sec" "%r" %s %b "%{Referer}i" "%{User-agent}i""/>
Com a mudança para usar o Undertow no JBoss EAP 7.1, o padrão para um cabeçalho de entrada foi alterado para %{i,headername}.
Exemplo: Acesse o Formato Header no JBoss EAP 7.1 [Esta é uma tradução automática]
<access-log pattern="%h %l %u %t "%T sec" "%r" %s %b "%{i,Referer}" "%{i,User-Agent}""/>
4.5.5. Migrar válvulas globais [Esta é uma tradução automática]
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.
-
As válvulas de aplicação personalizadas foram criadas ao estender
org.apache.catalina.valves.ValveBaseclasse e configurado no<valve>elemento dojboss-web.xmlarquivo descritor. Essas válvulas devem ser migradas manualmente.
Esta seção descreve como migrar válvulas globais. A migração de válvulas personalizadas e autenticadoras é coberta Migrar válvulas de aplicativos personalizados seção 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.
Para obter mais informações sobre como configurar manipuladores, consulte Configurando manipuladores no JBoss EAP 7 Guia de configuração.
Para obter mais informações sobre como configurar filtros, consulte Configurando Filtros no JBoss EAP 7 Guia de configuração.
Migrar válvulas globais [Esta é uma tradução automática]
A tabela a seguir lista as válvulas que foram fornecidas pelo JBoss Web no release anterior do JBoss EAP e o manipulador integrado Undertow correspondente. As válvulas do JBoss Web estão localizadas no org.apache.catalina.valves pacote.
Tabela 4.2. Mapeamento das válvulas para manipuladores [Esta é uma tradução automática]
| Válvula | Manipulador |
|---|---|
|
AccessLogValve |
io.undertow.server.handlers.accesslog.AccessLogHandler |
|
CrawlerSessionManagerValve |
io.undertow.servlet.handlers.CrawlerSessionManagerHandler |
|
ExtendedAccessLogValve |
io.undertow.server.handlers.accesslog.AccessLogHandler |
|
JDBCAccessLogValve |
Veja o |
|
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 |
Vejo Migrar as condições do JBoss Web Rewrite para instruções de como migrar essas válvulas manualmente. |
|
StuckThreadDetectionValve |
io.undertow.server.handlers.StuckThreadDetectionHandler |
Você pode usar o CLI de gerenciamento migrate operação para migrar automaticamente válvulas globais que atendam aos seguintes critérios:
- Elas estão limitadas às válvulas listadas na tabela anterior que não necessitam de processamento manual.
-
Eles devem ser definidos no
websubsistema do arquivo de configuração do servidor.
Para mais informações sobre o CLI de gerenciamento migrate operação, consulte Operação de Migração do CLI de Gerenciamento.
Procedimento de migração manual JDBCAccessLogValve
o org.apache.catalina.valves.JDBCAccessLogValve válvula é uma exceção à regra e não pode ser migrada automaticamente para io.undertow.server.handlers.JDBCLogHandler. Siga as etapas abaixo para migrar a seguinte válvula de exemplo.
<valve name="jdbc" module="org.jboss.as.web" class-name="org.apache.catalina.valves.JDBCAccessLogValve">
<param param-name="driverName" param-value="com.mysql.jdbc.Driver" />
<param param-name="connectionName" param-value="root" />
<param param-name="connectionPassword" param-value="password" />
<param param-name="connectionURL" param-value="jdbc:mysql://localhost:3306/wildfly?zeroDateTimeBehavior=convertToNull" />
<param param-name="format" param-value="combined" />
</valve>- Crie um módulo de driver para o banco de dados que irá armazenar as entradas de registro.
Configure a fonte de dados para o banco de dados e adicione o driver à lista de drivers disponíveis no
datasourcessubsistema.<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>Configurar um
expression-filternoundertowsubsistema 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.6. Alterações no comportamento do conjunto de cookies [Esta é uma tradução automática]
Especificações anteriores para Set-Cookie A sintaxe do cabeçalho de resposta HTTP, por exemplo, RFC2109 e RFC2965, permitia espaço em branco e outros caracteres separadores no valor do cookie quando o valor do cookie era citado. O JBoss Web no JBoss EAP 6.4 estava de acordo com as especificações anteriores e automaticamente citava um valor de cookie quando continha quaisquer caracteres separadores.
o RFC6265 especificação para Set-Cookie A sintaxe do cabeçalho de resposta HTTP indica que os valores de cookie no Set-Cookie O cabeçalho de resposta deve estar em conformidade com as restrições gramaticais específicas. Por exemplo, eles devem ser caracteres US-ASCII, mas não podem incluir CTRLs (controles), espaço em branco, aspas duplas, vírgulas, ponto e vírgula ou caracteres de barra invertida.
No JBoss EAP 7.0, antes do patch cumulativo Red Hat JBoss Enterprise Application Platform 7,0 atualização 08, Undertow não restringe esses caracteres inválidos e não cita cookies que continham os caracteres excluídos. Se você aplicar esse patch cumulativo ou um patch cumulativo mais recente, poderá ativar a validação de cookie compatível com RFC6265 definindo io.undertow.cookie.DEFAULT_ENABLE_RFC6265_COOKIE_VALIDATION propriedade do sistema para true.
No JBoss EAP 7.1, por padrão, Undertow não habilita a validação de cookie compatível com RFC6265. Ele cita cookies que contêm os caracteres excluídos. No JBoss EAP 7.1, você não pode usar o io.undertow.cookie.DEFAULT_ENABLE_RFC6265_COOKIE_VALIDATION propriedade do sistema para ativar a validação de cookie compatível com RFC6265. Em vez disso, você ativa a validação de cookie compatível com RFC6265 para um ouvinte HTTP, HTTPS ou AJP configurando o rfc6265-cookie-validation atributo de ouvinte para true. O valor padrão para este atributo é false. O exemplo a seguir ativa a validação de cookie compatível com RFC6265 para o ouvinte HTTP.
/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=rfc6265-cookie-validation,value=true)
4.5.7. Alterações no comportamento de chamadas de método HTTP [Esta é uma tradução automática]
O JBoss EAP 6.4, que incluía o JBoss Web como servidor web, permitia TRACE chamadas de método por padrão.
Undertow, que substitui o JBoss Web como o servidor web no JBoss EAP 7, não permite HTTP TRACE chamadas de método por padrão. Esta configuração é configurada usando o disallowed-methods atributo do http-listener elemento no undertow subsistema. Isso pode ser confirmado pela análise da saída dos seguintes read-resource comando. Observe que o valor para o disallowed-methods atributo é ["TRACE"].
/subsystem=undertow/server=default-server/http-listener=default:read-resource
{
"outcome" => "success",
"result" => {
"allow-encoded-slash" => false,
"allow-equals-in-cookie-value" => false,
"always-set-keep-alive" => true,
"buffer-pipelined-data" => false,
"buffer-pool" => "default",
"certificate-forwarding" => false,
"decode-url" => true,
"disallowed-methods" => ["TRACE"],
...
}
}
Para ativar o HTTP TRACE chamadas de método no JBoss EAP 7 e posterior, você deve remover a entrada "TRACE" do disallowed-methods lista de atributos executando o seguinte comando.
/subsystem=undertow/server=default-server/http-listener=default:list-remove(name=disallowed-methods,value="TRACE")
Quando você executa o read-resource comando novamente, você vai notar o TRACE chamada de método não está mais na lista de métodos não permitidos.
/subsystem=undertow/server=default-server/http-listener=default:read-resource
{
"outcome" => "success",
"result" => {
"allow-encoded-slash" => false,
"allow-equals-in-cookie-value" => false,
"always-set-keep-alive" => true,
"buffer-pipelined-data" => false,
"buffer-pool" => "default",
"certificate-forwarding" => false,
"decode-url" => true,
"disallowed-methods" => [],
...
}
}Para obter mais informações sobre o comportamento padrão dos métodos HTTP, consulte Comportamento Padrão de Métodos HTTP no JBoss EAP Guia de configuração.
4.5.8. Mudanças no Comportamento do Módulo da Web Padrão no JBoss EAP 7.1 [Esta é uma tradução automática]
No JBoss EAP 7.0, o contexto raiz de uma aplicação web foi desabilitado por padrão em mod_cluster.
Este não é mais o caso no JBoss EAP 7.1. Isso pode ter conseqüências inesperadas se você estiver esperando que o contexto raiz seja desativado. Por exemplo, as solicitações podem ser desviadas para nós indesejados ou um aplicativo particular que não deve ser exposto pode ser acessado inadvertidamente por meio de um proxy público. As localizações inferiores também são registradas com o balanceador de carga mod_cluster automaticamente, a menos que sejam explicitamente excluídas.
Use o seguinte comando CLI de gerenciamento para excluir ROOT do modcluster configuração do subsistema.
/subsystem=modcluster/mod-cluster-config=configuration:write-attribute(name=excluded-contexts,value=ROOT)
Use o seguinte comando da CLI de gerenciamento para desativar o aplicativo da web de boas-vindas padrão.
/subsystem=undertow/server=default-server/host=default-host/location=\/:remove /subsystem=undertow/configuration=handler/file=welcome-content:remove reload
Para obter mais informações sobre como configurar o aplicativo da Web de boas-vindas padrão, consulte Configurar o aplicativo da Web de boas-vindas padrão no Guia de desenvolvimento para o JBoss EAP.
4.6. Alterações de configurações do servidor JGroups [Esta é uma tradução automática]
4.6.1. JGroups é pre-definido para uma interface de rede privada [Esta é uma tradução automática]
Na configuração padrão do JBoss EAP 6, os JGroups usaram o public interface definida no <interfaces> seção do arquivo de configuração do servidor.
Como é uma prática recomendada usar uma interface de rede dedicada, o JGroups agora usa o novo padrão private interface que é definida no <interfaces> seção do arquivo de configuração do servidor no JBoss EAP 7.
4.6.2. Alterações de Canais JGroups [Esta é uma tradução automática]
O JGroups fornece suporte de comunicação de grupo para serviços de alta disponibilidade na forma de canais do JGroups. O JBoss EAP 7 apresenta <channel> elementos para o jgroups subsistema no arquivo de configuração do servidor. Você pode adicionar, remover ou alterar a configuração de canais do JGroups usando a CLI de gerenciamento.
Para obter mais informações sobre como configurar JGroups, consulte Comunicação de Cluster com JGroups no JBoss EAP Guia de configuração.
4.7. Alterações de configuração de servidor Infinispan [Esta é uma tradução automática]
4.7.1. Alterações de configurações de cachês por padrão de Infinispan [Esta é uma tradução automática]
No JBoss EAP 6, os caches clusterizados padrão para replicação de sessão da web e replicação EJB foram replicados ASYNC caches. Isso mudou no JBoss EAP 7. Os caches clusterizados padrão agora são distribuídos ASYNC caches. Os caches replicados não são mais configurados por padrão. Vejo Configurar o modo de cache no JBoss EAP Guia de configuração para obter informações sobre como adicionar um cache replicado e torná-lo o padrão.
Isso só afeta você quando você usa a nova configuração padrão do JBoss EAP 7. Se você migrar a configuração do JBoss EAP 6, a configuração do infinispan subsistema será preservado.
4.7.2. Alterações de estratégia de cachê Infinispan [Esta é uma tradução automática]
O comportamento de ASYNC A estratégia de cache mudou no JBoss EAP 7.
No JBoss EAP 6, ASYNC Leituras de cache eram livres de bloqueio. Embora eles nunca fossem bloqueados, eles eram propensos a leituras sujas de dados obsoletos, por exemplo, em failover. Isso ocorre porque permitiria solicitações subsequentes para o mesmo usuário iniciar antes que a solicitação anterior fosse concluída. Essa permissividade não é aceitável ao usar o modo distribuído, já que as alterações da topologia de cluster podem afetar a afinidade da sessão e facilmente resultar em dados obsoletos.
No JBoss EAP 7, ASYNC leituras de cache exigem bloqueios. Como agora bloqueiam novas solicitações do mesmo usuário até que a replicação anterior termine, leituras sujas são evitadas.
4.7.3. Configurando o Cache do Bean de Sessão de Estado Customizado para Passivação [Esta é uma tradução automática]
Esteja ciente das seguintes restrições ao configurar um cache SFSB personalizado para passivação no JBoss EAP 7.1.
-
o
idle-timeoutatributo, que é configurado noinfinispanpassivation-storedoejb3subsistema, está obsoleto no JBoss EAP 7.1. O JBoss EAP 6.4 suportava passivação rápida, passivando de acordo com oidle-timeoutvalor. O JBoss EAP 7.1 suporta passivação preguiçosa, passivando quando omax-sizelimiar é alcançado. -
No JBoss EAP 7.1, o nome do cluster usado pelo cliente EJB é determinado pelo nome real do cluster do canal, conforme configurado no
jgroupssubsistema. -
O JBoss EAP 7.1 ainda permite que você defina
max-sizeatributo para controlar o limiar de passivação. Você não deve configurar o despejo ou a expiração em sua configuração de cache do EJB.
-
Você deve configurar o despejo usando o
max-sizeatributo dopassivation-storenoejb3subsistema. -
Você deve configurar a expiração usando o
@StatefulTimeoutanotação no código fonte do SFSB Java ou especificando umstateful-timeoutvalor noejb-jar.xmlArquivo.
-
Você deve configurar o despejo usando o
4.7.4. Alterações no Transporte do Contêiner de Cache Infinispan [Esta é uma tradução automática]
Uma mudança de comportamento entre o JBoss EAP 7.0 e o JBoss EAP 7.1 requer que quaisquer atualizações no protocolo de transporte do contêiner de cache sejam feitas no modo batch ou usando um cabeçalho especial. Essa mudança de comportamento também afeta quaisquer ferramentas usadas para gerenciar o servidor do JBoss EAP.
A seguir, um exemplo dos comandos CLI de gerenciamento usados para configurar o protocolo de transporte do contêiner de cache no JBoss EAP 7.0.
/subsystem=infinispan/cache-container=my:add() /subsystem=infinispan/cache-container=my/transport=jgroups:add() /subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC)
A seguir, um exemplo dos comandos CLI de gerenciamento necessários para executar a mesma configuração no JBoss EAP 7.1. Note que os comandos são executados em modo batch.
batch /subsystem=infinispan/cache-container=my:add() /subsystem=infinispan/cache-container=my/transport=jgroups:add() /subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC) run-batch
Se preferir não usar o modo batch, você pode especificar o cabeçalho da operação allow-resource-service-restart=true ao definir o transporte. Esteja ciente de que isso reinicia o serviço para que as operações entrem em vigor, e alguns serviços podem parar de funcionar até que o serviço seja reiniciado.
Se você usar scripts para atualizar o protocolo de transporte do contêiner de cache, não deixe de revisá-los e adicionar o modo em lote.
4.8. Alterações de configurações de servidor EJB [Esta é uma tradução automática]
Não há migrate operação para o ejb3 subsistema, por isso, se você usar o CLI de gerenciamento migrate operações para atualizar suas outras configurações existentes do JBoss EAP 6.4, esteja ciente de que ejb3 a configuração do subsistema não é migrada. Porque a configuração do ejb3 subsistema é um pouco diferente no JBoss EAP 7.1 do que no JBoss EAP 6.4, você pode ver exceções no log do servidor quando você implementa seus aplicativos EJB.
Se você usar a Ferramenta de Migração do JBoss Server para atualizar a configuração do servidor, ejb3 O subsistema deve ser configurado corretamente e você não deve ver nenhum problema ao implementar seus aplicativos EJB. Para obter informações sobre como configurar e executar a ferramenta, consulte Usando a Ferramenta de Migração do JBoss Server.
DuplicateServiceException no log do servidor [Esta é uma tradução automática]
Os seguintes DuplicateServiceException é causado por alterações de cache no JBoss EAP 7.
DuplicateServiceException no log do servidor [Esta é uma tradução automática]
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."mdb-1.0-SNAPSHOT.jar".cache-dependencies-installer: org.jboss.msc.service.StartException in service jboss.deployment.unit."mdb-1.0-SNAPSHOT.jar".cache-dependencies-installer: Failed to start service ... Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.infinispan.ejb."mdb-1.0-SNAPSHOT.jar".config is already registered
Você deve reconfigurar o cache para resolver este erro.
- Siga as instruções para Inicie o servidor e a CLI de gerenciamento.
Emita os seguintes comandos para reconfigurar o armazenamento em cache no
ejb3subsistema./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.9. Alterações de configuração do servidor de mensagens [Esta é uma tradução automática]
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.9.1. Alterações de configuração do servidor de subsistema de mensagens [Esta é uma tradução automática]
o org.jboss.as.messaging extensão de módulo, localizada em EAP_HOME/modules/system/layers/base/, foi substituído pelo org.wildfly.extension.messaging-activemq módulo de extensão.
o urn:jboss:domain:messaging:3.0 o namespace de configuração do subsistema foi substituído pelo urn:jboss:domain:messaging-activemq:2.0 namespace.
Mudanças no gerenciamento de JMX [Esta é uma tradução automática]
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 [Esta é uma tradução automática]
| Nome HornetQ | Nome ActiveMQ |
|---|---|
|
hornetq-server |
servidor |
|
Tipo de hornetq-server |
serverType |
|
conectores |
conector |
|
discovery-group-name |
discovery-group |
As operações de gerenciamento invocadas no novo messaging-activemq subsistema mudou de /subsystem=messaging/hornetq-server= para /subsystem=messaging-activemq/server=.
Você pode migrar um JBoss EAP 6 existente messaging configuração do subsistema para o messaging-activemq subsistema em um servidor JBoss EAP 7 invocando sua migrate Operação.
/subsystem=messaging:migrate
Antes de executar o migrate operação, você pode invocar o describe-migration operação para revisar a lista de operações de gerenciamento que serão executadas para migrar do JBoss EAP 6 existente messaging configuração do subsistema para o messaging-activemq subsistema no servidor do JBoss EAP 7.
/subsystem=messaging:describe-migration
o migrate e describe-migration operações também exibem uma lista de migration-warnings para recursos ou atributos que não podem ser migrados automaticamente.
Avisos para a operação de migração de subsistema de mensagem [Esta é uma tradução automática]
o describe-migration e migrate operações para o messaging subsistema fornece um argumento de configuração adicional. Se você deseja configurar o sistema de mensagens para permitir que clientes legados do JBoss EAP 6 se conectem ao servidor do JBoss EAP 7, você pode adicionar o sistema de mensagens booleano. add-legacy-entries argumento para o describe-migration ou migrate operação da seguinte forma.
/subsystem=messaging:describe-migration(add-legacy-entries=true) /subsystem=messaging:migrate(add-legacy-entries=true)
Se o argumento booleano add-legacy-entries está configurado para true, a messaging-activemq subsistema cria o legacy-connection-factory recurso e adiciona legacy-entries ao jms-queue e jms-topic Recursos.
Se o argumento booleano add-legacy-entries está configurado para false, nenhum recurso legado é criado no messaging-activemq subsistemas e clientes JMS legados não poderão se comunicar com os servidores do JBoss EAP 7. Este é o valor padrão.
Para obter mais informações sobre compatibilidade com versões anteriores e futuras, consulte Compatibilidade para trás e para frente dentro Configurando o Messaging para o JBoss EAP.
Para mais informações sobre o CLI de gerenciamento migrate e describe-migration operações, consulte Operação de Migração do CLI de Gerenciamento.
Alteração de comportamento de atributo forward-when-no-consumers
O comportamento do forward-when-no-consumers atributo foi alterado no JBoss EAP 7.
No JBoss EAP 6, quando forward-when-no-consumers foi definido para false e não havia consumidores em um cluster, as mensagens foram redistribuídas para todos os nós em um cluster.
Este comportamento mudou no JBoss EAP 7. Quando forward-when-no-consumers está configurado para false e não há consumidores em um cluster, as mensagens não são redistribuídas. Em vez disso, eles são mantidos no nó original para o qual foram enviados.
Alteração na diretiva de balanceamento de carga de cluster padrão
A política de balanceamento de carga de cluster padrão foi alterada no JBoss EAP 7.
No JBoss EAP 6, a política de balanceamento de carga de cluster padrão era similar a STRICT, que é como definir o legado forward-when-no-consumers parâmetro para true. No JBoss EAP 7, o padrão é agora ON_DEMAND, que é como definir o legado forward-when-no-consumers parâmetro para false. Para mais informações sobre essas configurações, consulte Atributos de Conexão de Cluster dentro Configurando o Messaging para o JBoss EAP.
Alterações de configuração do servidor de subsistema de mensagens [Esta é uma tradução automática]
A configuração XML mudou significativamente com o novo messaging-activemq subsistema, e agora fornece um esquema XML mais consistente com outros subsistemas do JBoss EAP.
É altamente recomendado que você não tente modificar o JBoss EAP messaging configuração XML do subsistema para se adequar ao novo messaging-activemq subsistema. Em vez disso, invoque o subsistema herdado migrate Operação. Esta operação irá escrever a configuração XML do novo messaging-activemq subsistema como parte de sua execução.
4.9.2. Migrar dados de mensagem [Esta é uma tradução automática]
Você pode usar uma das seguintes abordagens para migrar dados do sistema de mensagens de um release anterior para o release atual do JBoss EAP.
-
Para sistemas de mensagens baseados em arquivos, você pode migrar dados de mensagens do JBoss EAP 6.4 ou do JBoss EAP 7.0 para o JBoss EAP 7.1 usando o método de exportação e importação. Com esse método, você exporta os dados do sistema de mensagens do release anterior e os importa usando a CLI de gerenciamento
import-journalOperação. Esteja ciente de que você pode usar essa abordagem apenas para sistemas de mensagens baseados em arquivos. - Você pode migrar dados de mensagens do JBoss EAP 6.4 para o JBoss EAP 7.1 configurando uma ponte JMS. Você pode usar essa abordagem para sistemas de mensagens baseados em arquivos e JDBC.
Devido à mudança do HornetQ para o ActiveMQ Artemis como provedor de suporte JMS, tanto o formato quanto a localização dos dados do sistema de mensagens foram alterados no JBoss EAP 7.0 e posterior. Vejo Mapeando nomes de pastas de mensagens para obter detalhes sobre as alterações nos nomes e locais da pasta de dados do sistema de mensagens entre as versões 6.4 e 7.x.
4.9.2.1. Migrar dados de mensagens usando exportação e importação [Esta é uma tradução automática]
Usando essa abordagem, você exporta os dados do sistema de mensagens de um release anterior para um arquivo XML e, em seguida, importa esse arquivo usando o arquivo. import-journal Operação.
Exporte os dados do sistema de mensagens para um arquivo XML.
- Importe os dados de mensagens formatados em XML.
Não é possível usar o método de exportação e importação para mover dados do sistema de mensagens entre sistemas que usam um diário baseado em JDBC para armazenamento.
Exemplo: Access Log Format no JBoss EAP 6.4 [Esta é uma tradução automática]
Devido à mudança do HornetQ para o ActiveMQ Artemis como provedor de suporte JMS, tanto o formato quanto a localização dos dados do sistema de mensagens foram alterados no JBoss EAP 7.0 e posterior.
Para exportar dados de mensagens do JBoss EAP 6.4, você deve usar o HornetQ exporter utilidade. O HornetQ exporter utilitário gera e exporta os dados do sistema de mensagens do JBoss EAP 6.4 para um arquivo XML. Este comando requer que você especifique os caminhos para os JARs do HornetQ que são enviados com o JBoss EAP 6.4, passe os caminhos para messagingbindings/, messagingjournal/, messagingpaging/, e messaginglargemessages/ pastas do release anterior como argumentos e especifique um arquivo de saída no qual gravar os dados XML exportados.
A seguir, a sintaxe exigida pelo HornetQ exporter utilidade.
$ 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 garantir que as versões corretas dos JARs do HornetQ, incluindo quaisquer JARs instalados com correções ou atualizações, sejam carregados e disponibilizados para o exporter utilidade. Usando seu editor favorito, crie um novo module.xml arquivo no EAP6_HOME/modules/org/hornetq/exporter/main/ diretório e copie o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.hornetq.exporter">
<main-class name="org.hornetq.jms.persistence.impl.journal.XmlDataExporter"/>
<properties>
<property name="jboss.api" value="deprecated"/>
</properties>
<dependencies>
<module name="org.hornetq"/>
</dependencies>
</module>
O módulo personalizado é criado no modules/ diretório, não o modules/system/layers/base/ diretório.
Siga os passos abaixo para exportar os dados.
- Exemplo: Nome do Driver do JBoss EAP 6 [Esta é uma tradução automática]
- Crie um módulo personalizado conforme descrito acima.
Execute o seguinte comando para exportar os dados.
$ java -jar jboss-modules.jar -mp modules/ org.hornetq.exporter standalone/data/messagingbindings/ standalone/data/messagingjournal/ standalone/data/messagingpaging standalone/data/messaginglargemessages/ > OUTPUT_DIRECTORY/OldMessagingData.xml- Certifique-se de que não há erros ou mensagens de aviso no registro na conclusão do comando.
- Utilize as ferramentas disponíveis para seu sistema operacional para validar o XML no arquivo de saída gerado.
Mudanças de Configuração de Mensagens no JBoss EAP 7.1 [Esta é uma tradução automática]
Siga estas etapas para exportar dados de mensagens do JBoss EAP 7.0.
Abra um terminal, navegue até o diretório de instalação do JBoss EAP 7.0 e inicie o servidor em
admin-onlymodo.$ EAP_HOME/bin/standalone.sh -c standalone-full.xml --start-mode=admin-onlyAbra um novo terminal, navegue até o diretório de instalação do JBoss EAP 7.0 e conecte-se à CLI de gerenciamento.
$ EAP_HOME/bin/jboss-cli.sh --connectUse o seguinte comando da CLI de gerenciamento para exportar os dados do diário de mensagens.
/subsystem=messaging-activemq/server=default:export-journal()
- Certifique-se de que não há erros ou mensagens de aviso no registro na conclusão do comando.
- Utilize as ferramentas disponíveis para seu sistema operacional para validar o XML no arquivo de saída gerado.
Migrar dados de mensagem [Esta é uma tradução automática]
Você então importa o arquivo XML para o JBoss EAP 7.0 ou posterior usando o import-journal operação da seguinte forma.
Se o servidor de destino já tiver executado algumas tarefas de mensagens, faça backup de suas pastas de mensagens antes de iniciar a tarefa. import-journal operação para evitar a perda de dados no caso de uma falha na importação. Vejo Fazendo backup dos dados da pasta de mensagens Para maiores informações.
- Se você está migrando seu servidor do JBoss EAP 6.4 para o 7.1, certifique-se de ter completado a migração da configuração do servidor antes de começar usando o operação de migração da CLI de gerenciamento ou executando a Ferramenta de Migração do JBoss Server. Para obter informações sobre como configurar e executar a ferramenta, consulte Usando a Ferramenta de Migração do JBoss Server.
Inicie o servidor do JBoss EAP 7.x no modo normal com não Clientes JMS conectados.
ImportanteÉ importante que você inicie o servidor sem nenhum cliente JMS conectado. Isso é porque o
import-journaloperação se comporta como um produtor JMS. As mensagens estão imediatamente disponíveis quando a operação está em andamento. Se esta operação falhar no meio da importação e os clientes JMS estiverem conectados, não será possível recuperar porque os clientes JMS já podem ter consumido algumas das mensagens.Abra um novo terminal, navegue até o diretório de instalação do JBoss EAP 7.xe conecte-se à CLI de gerenciamento.
$ EAP_HOME/bin/jboss-cli.sh --connectUse o seguinte comando da CLI de gerenciamento para importar os dados do sistema de mensagens.
/subsystem=messaging-activemq/server=default:import-journal(file=OUTPUT_DIRECTORY/OldMessagingData.xml)ImportanteFaz não execute este comando mais de uma vez, pois isso resultará em mensagens duplicadas!
AtençãoSe você estiver usando o JBoss EAP 7.0, você deve Red Hat JBoss Enterprise Application Platform 7,0 atualização 05 ou um novo patch cumulativo para a sua instalação do JBoss EAP, a fim de evitar um problema conhecido ao ler mensagens grandes. Para mais informações, veja JBEAP-4407 - O consumidor trava com IndexOutOfBoundsException ao ler mensagens grandes de um registro importado. Este problema não afeta o JBoss EAP 7.1 ou posterior.
Recuperando-se de uma falha de dados de mensagens de importação
Se o import-journal operação falhar, você pode tentar recuperar usando as etapas a seguir.
- Encerre o servidor do JBoss EAP 7.x.
- Exclua todas as pastas do diário de mensagens. Vejo Fazendo backup dos dados da pasta de mensagens para os comandos da CLI de gerenciamento para determinar o local correto do diretório para as pastas do diário de mensagens.
- Se você fez backup dos dados do sistema de mensagens do servidor de destino antes da importação, copie as pastas do sistema de mensagens do local de backup para o diretório do diário de mensagens determinado na etapa anterior.
- Repita os passos para importar os dados de mensagens formatados em XML.
4.9.2.2. Migrar dados de mensagem usando uma ponte JMS [Esta é uma tradução automática]
Usando essa abordagem, você configura e implementa uma ponte JMS no servidor do JBoss EAP 7.x. A ponte JMS move as mensagens da fila JBoss EAP 6.4 HornetQ para a fila do JBoss EAP 7.x ActiveMQ Artemis.
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 implantar uma ponte JMS para mover os dados do sistema de mensagens do JBoss EAP 6.4 para o JBoss EAP 7.x.
Configurar o servidor do JBoss EAP 6.4
- Exemplo: Nome do Driver do JBoss EAP 6 [Esta é uma tradução automática]
Fazendo o back up do diário HornetQ e arquivos de configuração.
-
Por padrão, o diário HornetQ está localizado no
EAP6_HOME/standalone/data/diretório. - Vejo Mapeando nomes de pastas de mensagens para locais de pastas de mensagens padrão para cada versão.
-
Por padrão, o diário HornetQ está localizado no
-
Certifique-se de que
InQueueA fila JMS contendo as mensagens JMS é definida no servidor do JBoss EAP 6.4. Certifique-se de que
messagingconfiguração do subsistema contém uma entrada para oRemoteConnectionFactorysemelhante ao seguinte.<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)
Configurar o servidor do JBoss EAP 7.x de destino
A configuração da ponte JMS precisa do
org.hornetqmódulo para se conectar ao servidor HornetQ na versão anterior. Este módulo e suas dependências diretas não estão presentes no JBoss EAP 7.x, então você deve copiar os seguintes módulos da versão anterior.Copie o
org.hornetqmódulo no JBoss EAP 7.xEAP_HOME/modules/org/diretório.-
Se você não aplicou patches neste módulo, copie esta pasta do servidor do JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/org/hornetq/ -
Se você aplicou patches neste módulo, copie esta pasta do servidor do JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.4.x.CP/org/hornetq/
-
Se você não aplicou patches neste módulo, copie esta pasta do servidor do JBoss EAP 6.4:
Remova o
<resource-root>para o HornetQlibcaminho do JBoss EAP 7.xEAP_HOME/modules/org/hornetq/main/module.xmlArquivo.Se você não aplicou patches ao JBoss EAP 6.4
org.hornetqmódulo, remova a seguinte linha do arquivo:<resource-root path="lib"/>
Se você aplicou patches ao JBoss EAP 6.4
org.hornetqmodule, remova as seguintes linhas do arquivo:<resource-root path="lib"/> <resource-root path="../../../../../org/hornetq/main/lib"/>
AtençãoFalha ao remover o HornetQ
libcaminhoresource-rootfará com que a ponte falhe com o seguinte erro no arquivo de 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
org.jboss.nettymódulo no JBoss EAP 7.xEAP_HOME/modules/org/jboss/diretório.-
Se você não aplicou patches neste módulo, copie esta pasta do servidor do JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/org/jboss/netty/ -
Se você aplicou patches neste módulo, copie esta pasta do servidor do JBoss EAP 6.4:
EAP6_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-6.4.x.CP/org/jboss/netty
-
Se você não aplicou patches neste módulo, copie esta pasta do servidor do JBoss EAP 6.4:
Crie a fila do JMS para conter as mensagens recebidas do servidor do JBoss EAP 6.4. A seguir, um exemplo de um comando da CLI de gerenciamento que cria o
MigratedMessagesQueueFila JMS para receber a mensagem.jms-queue add --queue-address=MigratedMessagesQueue --entries=[jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue]
Isso cria o seguinte
jms-queueconfiguração para o servidor padrão nomessaging-activemqsubsistema do servidor do JBoss EAP 7.x.<jms-queue name="MigratedMessagesQueue" entries="jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue"/>
Certifique-se de que
messaging-activemqsubsistemadefaultservidor contém uma configuração para oInVmConnectionFactoryconnection-factorysemelhante ao seguinte:<connection-factory name="InVmConnectionFactory" factory-type="XA_GENERIC" entries="java:/ConnectionFactory" connectors="in-vm"/>
Se não contiver a entrada, crie uma usando o seguinte comando da CLI de gerenciamento:
/subsystem=messaging-activemq/server=default/connection-factory=InVmConnectionFactory:add(factory-type=XA_GENERIC, connectors=[in-vm], entries=[java:/ConnectionFactory])
Crie e implemente uma ponte JMS que leia mensagens do
InQueueFila JMS configurada no servidor do JBoss EAP 6.4 e as transfere para o servidorMigratedMessagesQueueconfigurado no servidor do JBoss EAP 7.x./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.wildfly.naming.client.WildFlyInitialContextFactory"),("java.naming.provider.url"=>"remote://127.0.0.1:4447")],target-destination=jms/queue/MigratedMessagesQueue,target-connection-factory=java:/ConnectionFactory)Isso cria o seguinte
jms-bridgeconfiguração nomessaging-activemqsubsistema do servidor do JBoss EAP 7.x.<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.wildfly.naming.client.WildFlyInitialContextFactory"/> <property name="java.naming.provider.url" value="remote://127.0.0.1:4447"/> </source-context> </source> <target destination="jms/queue/MigratedMessagesQueue" connection-factory="java:/ConnectionFactory"/> </jms-bridge>-
Se a segurança estiver configurada para o JBoss EAP 6.4, você também deve configurar a configuração da ponte JMS
<source>elemento para incluir umsource-contextque especifica o nome de usuário e a senha corretos a serem usados para a consulta JNDI ao criar a conexão.
Migrar dados de mensagem [Esta é uma tradução automática]
Verifique se a informação que você forneceu para a seguinte configuração está correta.
- Qualquer fila e nomes de tópicos.
-
o
java.naming.provider.urlpara pesquisa de JNDI.
- Certifique-se de ter implementado o destino JMS de destino no servidor do JBoss EAP 7.x.
- Inicie os servidores do JBoss EAP 6.4 e do JBoss EAP 7.x.
4.9.2.3. Mapeamento dos nomes da pasta de mensagens [Esta é uma tradução automática]
A tabela a seguir mostra os nomes dos diretórios do sistema de mensagens usados no release anterior e os nomes correspondentes usados no release atual do JBoss EAP. Os diretórios são relativos ao jboss.server.data.dir diretório, cujo padrão é EAP_HOME/standalone/data/ se não for especificado.
| Exemplo: Nome do Driver do JBoss EAP 6 [Esta é uma tradução automática] | Exemplo: Nome do Driver do JBoss EAP 7 [Esta é uma tradução automática] |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
o messaginglargemessages/ e messagingpaging/ diretórios podem não estar presentes se não houver mensagens grandes ou se a paginação estiver desativada.
4.9.2.4. Fazendo backup dos dados da pasta de mensagens [Esta é uma tradução automática]
Se o servidor de destino já tiver processado mensagens, é recomendável fazer backup das pastas de mensagens de destino em um local de backup antes de começar. A localização padrão das pastas de mensagens é EAP_HOME/standalone/data/activemq/; no entanto, é configurável. Se você não tiver certeza da localização de seus dados de mensagens, poderá usar os seguintes comandos da CLI de gerenciamento para encontrar o local das pastas de mensagens.
/subsystem=messaging-activemq/server=default/path=journal-directory:resolve-path /subsystem=messaging-activemq/server=default/path=paging-directory:resolve-path /subsystem=messaging-activemq/server=default/path=bindings-directory:resolve-path /subsystem=messaging-activemq/server=default/path=large-messages-directory:resolve-path
Depois de saber a localização das pastas, copie cada pasta para um local de backup seguro.
4.9.3. Migrar as destinações JMS [Esta é uma tradução automática]
Nas versões anteriores do JBoss EAP, as filas de destino JMS foram configuradas no <jms-destinations> elemento sob o <hornetq-server> elemento no messaging subsistema.
<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 do JMS é configurada no padrão <server> elemento do messaging-activemq subsistema.
<server name="default"> ... <jms-queue name="testQueue" entries="queue/test java:jboss/exported/jms/queue/test"/> ... </server>
4.9.4. Migrar interceptores de mensagem [Esta é uma tradução automática]
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 HornetQ messaging Um subsistema incluído no lançamento anterior do JBoss EAP requeria que você instalasse os interceptores HornetQ adicionando-os a um JAR e então modificando o HornetQ module.xml Arquivo.
o messaging-activemq subsistema incluído no JBoss EAP 7 não requer modificação de um module.xml Arquivo. Classes de interceptadores do usuário, que agora implementam o Apache ActiveMQ Artemis Interceptor interface, agora pode ser carregado de qualquer módulo do servidor. Você especifica o módulo do qual o interceptador deve ser carregado no messaging-activemq subsistema do arquivo de configuração do servidor.
Exemplo: Configuração do Interceptor [Esta é uma tradução automática]
<subsystem xmlns="urn:jboss:domain:messaging-activemq:2.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.9.5. Substituir as configuraões Netty Servlet [Esta é uma tradução automática]
No JBoss EAP 6, você poderia configurar um mecanismo de servlet para trabalhar com o transporte Netty Servlet. Como o ActiveMQ Artemis substitui o HornetQ como o provedor de mensagens integrado no JBoss EAP 7, essa configuração não está mais disponível. Você deve substituir a configuração de servlet para usar os novos conectores HTTP de mensagens e os aceitadores HTTP.
4.9.6. Configurando um Adaptador de Recursos JMS Genérico [Esta é uma tradução automática]
A maneira como você configura um adaptador de recursos JMS genérico para uso com um provedor JMS de terceiros foi alterada no JBoss EAP 7. Para obter mais informações, consulte Implantando um Adaptador de Recursos JMS Genérico dentro Configurando o Messaging para o JBoss EAP.
4.9.7. Mudanças de Configuração de Mensagens no JBoss EAP 7.1 [Esta é uma tradução automática]
No JBoss EAP 7.0, se você configurou o replication-master política sem especificar o check-for-live-server atributo, seu valor padrão era false. Isso mudou no JBoss EAP 7.1. O valor padrão para o check-for-live-server atributo é agora true.
A seguir, um exemplo de um comando da CLI de gerenciamento que configura replication-master política sem especificar o check-for-live-server atributo.
/subsystem=messaging-activemq/server=default/ha-policy=replication-master:add(cluster-name=my-cluster,group-name=group1)
Quando você lê o recurso usando a CLI de gerenciamento, observe que check-for-live-server o valor do atributo está definido como true.
/subsystem=messaging-activemq/server=default/ha-policy=replication-master:read-resource(recursive=true)
{
"outcome" => "success",
"result" => {
"check-for-live-server" => true,
"cluster-name" => "my-cluster",
"group-name" => "group1",
"initial-replication-sync-timeout" => 30000L
},
"response-headers" => {"process-state" => "reload-required"}
}4.9.8. Alterações no Comportamento de Serialização do JMS entre Liberações [Esta é uma tradução automática]
o serialVersionUID do javax.jms.JMSException mudou entre o JMS 1.1 e o JMS 2.0.0. Isso significa que, se uma instância de um JMSException, ou qualquer uma de suas subclasses, é serializado usando o JMS 1.1, não pode ser desserializado usando o JMS 2.0.0. O contrário também é verdade. Se uma instância de JMSException é serializado usando o JMS 2.0.0, ele não pode ser desserializado usando o JMS 1.1. Em ambos os casos, lança uma exceção semelhante à seguinte:
javax.jms.JMSException: javax.jms.JMSException; local class incompatible: stream classdesc serialVersionUID = 8951994251593378324, local class serialVersionUID = 2368476267211489441
Esse problema foi corrigido na versão de manutenção do JMS 2.0.1.
Implementação do JMS para cada versão do JBoss EAP [Esta é uma tradução automática]
Tabela 4.4. Implementação do JMS para cada versão do JBoss EAP [Esta é uma tradução automática]
| JBoss EAP Version | Implementação JMS | Versão JMS |
|---|---|---|
|
6.4 |
HornetQ |
JMS 1.1 |
|
7.0 |
Apache ActiveMQ Artemis |
JMS 2.0.0 |
|
7.1 |
Apache ActiveMQ Artemis |
JMS 2.0.1 |
Esteja ciente de que o serialVersionUID incompatibilidade pode resultar em um problema de migração nas seguintes situações:
-
Se você enviar uma mensagem que contenha
JMSExceptionusando um cliente do JBoss EAP 6.4, migre seus dados do sistema de mensagens para o JBoss EAP 7.0 e tente desserializar a mensagem usando um cliente do JBoss EAP 7.0, a desserialização falhará e lançará uma exceção. Isso é porque oserialVersionUIDno JMS 1.1 é não compatível com o do JMS 2.0.0. -
Se você enviar uma mensagem que contenha
JMSExceptionUsando um cliente do JBoss EAP 7.0, migre seus dados do sistema de mensagens para o JBoss EAP 7.1 e tente desserializar essa mensagem usando um cliente do JBoss EAP 7.1, a desserialização falhará e lançará uma exceção. Isso é porque oserialVersionUIDno JMS 2.0.0 é não compatível com o do JMS 2.0.1.
Note que se você enviar uma mensagem que contenha JMSException Usando um cliente do JBoss EAP 6.4, migre seus dados do sistema de mensagens para o JBoss EAP 7.1 e tente desserializar essa mensagem usando um cliente do JBoss EAP 7.1, a desserialização será bem sucedida porque o serialVersionUID no JMS 1.1 é compatível com o do JMS 2.0.1.
A Red Hat recomenda que você faça o seguinte antes de migrar seus dados de mensagens:
- Certifique-se de consumir todas as mensagens do JMS 1.1 que contenham JMSExceptions antes de migrar os dados do sistema de mensagens do JBoss EAP 6.4 para o JBoss EAP 7.0.
- Certifique-se de consumir todas as mensagens do JMS 2.0.0 que contenham JMSExceptions antes de migrar os dados do sistema de mensagens do JBoss EAP 7.0 para o JBoss EAP 7.1.
4.10. Mudanças no gerenciamento de JMX [Esta é uma tradução automática]
O componente HornetQ no JBoss EAP 6 forneceu seu próprio gerenciamento JMX; no entanto, não foi recomendado e agora está obsoleto e não é mais suportado. Se você se baseou neste recurso no JBoss EAP 6, você deve migrar suas ferramentas de gerenciamento para usar a CLI de gerenciamento do JBoss EAP ou o gerenciamento JMX fornecido com o JBoss EAP 7.
Você também deve atualizar suas bibliotecas de clientes para usar o jboss-client.jar que vem com o JBoss EAP 7.
A seguir, um exemplo do código de gerenciamento do HornetQ JMX que foi usado no 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();
}
}A seguir, um exemplo do código equivalente necessário para o ActiveMQ Artemis no 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();
}
}Observe que os nomes e parâmetros do método foram alterados na nova implementação. Você pode encontrar os novos nomes de métodos no JConsole seguindo estas etapas.
Conecte-se ao JConsole usando o seguinte comando.
$ EAP_HOME/bin/jconsole.sh- Conecte-se ao processo local do JBoss EAP. Note que deve começar com "jboss-modules.jar".
- No MBeans aba, escolha jboss.as → messaging-activemq → padrão → Operações para exibir a lista de nomes e atributos de métodos.
4.11. Alterações de configurações de servidor ORB [Esta é uma tradução automática]
A implementação do JacORB foi substituída com uma ramificação downstream do OpenJDK ORB no JBoss EAP 7.
o org.jboss.as.jacorb módulo de extensão, localizado em EAP_HOME/modules/system/layers/base/, foi substituído pelo org.wildfly.iiop-openjdk módulo de extensão.
o urn:jboss:domain:jacorb:1.4 o namespace de configuração do subsistema no arquivo de configuração do servidor foi substituído pelo urn:jboss:domain:iiop-openjdk:1.0 namespace.
O seguinte é um exemplo do padrão jacorb configuração do sistema no 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>
O seguinte é um exemplo do padrão iiop-openjdk configuração do subsistema 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>
O novo iiop-openjdk A configuração do subsistema aceita apenas um subconjunto dos elementos e atributos legados. O seguinte é um exemplo de um jacorb configuração do subsistema na versão anterior do JBoss EAP que contém todos os elementos e atributos válidos:
<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.5. Atributos para remover [Esta é uma tradução automática]
| Elemento | Atributos sem suporte |
|---|---|
|
<orb> |
|
|
<poa> |
|
Os seguintes on/off os atributos não são mais suportados e não serão migrados quando você executar a CLI de gerenciamento migrate Operação. Se eles estão definidos para on, você receberá um aviso de migração. De outros on/off atributos que não são mencionados nesta tabela, por exemplo <security support-ssl="on|off">, ainda são suportados e serão migrados com sucesso. A única diferença é que seus valores serão alterados de on/off para true/false.
Tabela 4.6. Atributos para desativar ou remover [Esta é uma tradução automática]
| Elemento | Atributos para remover [Esta é uma tradução automática] |
|---|---|
|
<orb> |
|
|
<interop> |
(tudo exceto
|
|
<poa> |
|
4.12. Migrar a configuração de subsistema de threads [Esta é uma tradução automática]
A configuração do servidor do JBoss EAP 6 incluiu threads subsistema usado para gerenciar conjuntos de encadeamentos nos diversos subsistemas no servidor.
o threads subsistema não está mais disponível no JBoss EAP 7. Em vez disso, cada subsistema é responsável por gerenciar seus próprios conjuntos de encadeamentos.
Para obter informações sobre como configurar pools de threads para o infinispan subsistema, consulte Configurar pools de threads do Infinispan no JBoss EAP Guia de configuração.
Para obter informações sobre como configurar pools de threads para o jgroups subsistema, consulte Configurar pools de threads do JGroups no JBoss EAP Guia de configuração.
No JBoss EAP 6, você configurou pools de threads para conectores e listeners para o web subsistema referenciando um executor que foi definido no threads subsistema. No JBoss EAP 7, você agora configura pools de threads para o undertow subsistema referenciando um worker que é definido no io subsistema. Para mais informações, veja Configurando o subsistema de E / S no JBoss EAP Guia de configuração.
Para obter informações sobre as alterações na configuração do pool de threads no remoting subsistema, consulte Migrar a configuração do subsistema remoto neste guia, e Configurando o Endpoint no JBoss EAP Guia de configuração.
4.13. Migrar a configuração de subsistema Remoto [Esta é uma tradução automática]
No JBoss EAP 6, você configurou o pool de threads para o remoting subsistema, definindo vários worker-* atributos. O pool de threads de trabalho não está mais configurado no remoting subsistema no JBoss EAP 7 e se você tentar modificar a configuração existente, você verá a seguinte mensagem.
WFLYRMT0022: Worker configuration is no longer used, please use endpoint worker configuration
No JBoss EAP 7, o pool de threads de trabalho é substituído por uma configuração de terminal que referencia worker definido no io subsistema.
Para obter informações sobre como configurar o nó de extremidade, consulte Configurando o Endpoint no JBoss EAP Guia de configuração.
4.14. Alterações de configurações de servidor WebSocket [Esta é uma tradução automática]
Para usar WebSockets no JBoss EAP 6, você tinha que habilitar o protocolo do conector NIO2 sem bloqueio para o http conector no web subsistema do arquivo de configuração do servidor JBoss EAP usando um comando similar ao seguinte.
/subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11NioProtocol)
Para usar WebSockets em um aplicativo, você também tinha que criar um <enable-websockets> elemento na aplicação WEB-INF/jboss-web.xml arquivo e configurá-lo para true.
No JBoss EAP 7, você não precisa mais configurar o servidor para suporte padrão a WebSocket ou configurar o aplicativo para usá-lo. WebSockets são um requisito da especificação Java EE 7 e os protocolos necessários são configurados por padrão. Uma configuração WebSocket mais complexa é feita no servlet-container do undertow subsistema do arquivo de configuração do servidor JBoss EAP. Você pode visualizar as configurações disponíveis usando 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"
}
}Para obter mais informações sobre o desenvolvimento do WebSocket, consulte Criando Aplicativos WebSocket no JBoss EAP Guia de desenvolvimento.
Exemplos de códigos WebSocket também podem ser encontrados no início rápido (quickstarts) que é fornecido com JBoss EAP.
4.15. Alterações do servidor Single Sign-on [Esta é uma tradução automática]
o infinispan O subsistema ainda fornece suporte a caching distribuído para serviços de HA na forma de caches Infinispan no JBoss EAP 7; no entanto, o armazenamento em cache e a distribuição de informações de autenticação são tratados de maneira diferente das versões anteriores.
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 undertow subsistema do arquivo de configuração do servidor.
Não há exigência de alteração de código de aplicativos para SSO quando migrando para JBoss EAP 7.
4.16. Alterações na configuração da fonte de dados [Esta é uma tradução automática]
4.16.1. Nome do Driver da Origem de Dados JDBC [Esta é uma tradução automática]
Quando você configurou uma fonte de dados no release anterior do JBoss EAP, o valor especificado para o nome do driver dependia do número de classes listadas no META-INF/services/java.sql.Driver arquivo contido no JAR do driver JDBC.
Driver contendo uma classe única
Se o META-INF/services/java.sql.Driver arquivo especificado apenas uma classe, o valor do nome do driver era simplesmente o nome do JAR do driver JDBC. Isto não mudou no JBoss EAP 7.
Driver contendo classes múltiplas
IIn JBoss EAP 6, se houvesse mais de uma classe listada no META-INF/services/java.sql.Driver arquivo, você especificou qual classe era a classe do driver, anexando seu nome ao nome do JAR, juntamente com a versão principal e secundária, no seguinte formato.
JAR_NAME + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION
No JBoss EAP 7, isto mudou. Você agora especifica o nome do driver utilizando o seguinte formato.
JAR_NAME + "_" + DRIVER_CLASS_NAME + "_" + MAJOR_VERSION + "_" + MINOR_VERSION
Um sublinhado foi adicionado entre o JAR_NAME e a DRIVER_CLASS_NAME.
O driver JDBC do MySQL 5.1.31 é um exemplo de um driver que contém duas classes. O nome da classe do driver é com.mysql.jdbc.Driver. Os exemplos a seguir demonstram as diferenças entre como você especifica o nome do driver na versão anterior e atual do JBoss EAP.
Exemplo: Nome do Driver do JBoss EAP 6 [Esta é uma tradução automática]
mysql-connector-java-5.1.31-bin.jarcom.mysql.jdbc.Driver_5_1
Exemplo: Nome do Driver do JBoss EAP 7 [Esta é uma tradução automática]
mysql-connector-java-5.1.31-bin.jar_com.mysql.jdbc.Driver_5_1
4.17. Alterações de configurações de servidor de segurança [Esta é uma tradução automática]
Se você migrar para o JBoss EAP 7 e planejar executar com o Java Security Manager ativado, deve estar ciente de que as alterações foram feitas na maneira como as políticas são definidas e que mudanças adicionais na configuração podem ser necessárias. Também esteja ciente de que os gerenciadores de segurança customizados não são suportados no JBoss EAP 7.
Para obter informações sobre as alterações de configuração do servidor Java Security Manager, consulte Considerações que se movem de versões anteriores dentro Como configurar a segurança do servidor para o JBoss EAP.
4.17.1. Mudanças no Comportamento de Segurança Legado entre o JBoss EAP 7.0 e o JBoss EAP 7.1 [Esta é uma tradução automática]
4.17.1.1. Alteração de status HTTP para domínios LDAP inacessíveis [Esta é uma tradução automática]
Se nenhum domínio LDAP fosse acessível pelo servidor no JBoss EAP 7.0, o security subsistema retornou um código de status HTTP de "401 Não Autorizado". Isso mudou no JBoss EAP 7.1. O legado security O subsistema no JBoss EAP 7.1 retorna um código de status HTTP de "500 Internal Error" para descrever com mais precisão que ocorreu uma condição inesperada que impedia o servidor de processar a solicitação com êxito.
4.17.1.2. Habilitando o domínio de segurança do LDAP para analisar funções de um DN [Esta é uma tradução automática]
No JBoss EAP 7.0, o org.jboss.as.domain.management.security.parseGroupNameFromLdapDN A propriedade system foi usada para permitir que a região de segurança LDAP analise as funções de um DN. Quando esta propriedade foi definida como true, papéis foram analisados a partir de um DN. Caso contrário, uma pesquisa LDAP normal foi usada para procurar por funções.
No JBoss EAP 7.1, esta propriedade do sistema agora está obsoleta. Em vez disso, você configura essa opção definindo o recém-introduzido parse-group-name-from-dn atribuir a true no caminho do serviço principal usando o seguinte comando da CLI de gerenciamento:
/core-service=management/security-realm=REALM_NAME/authorization=ldap/group-search=principal-to-group:add(parse-group-name-from-dn=true)4.17.1.3. Mudanças no envio do certificado SSL do JBoss EAP para um servidor LDAP [Esta é uma tradução automática]
No JBoss EAP 7.0, quando a interface de gerenciamento é configurada para usar o ldapSSL região de segurança, a autenticação mútua entre o servidor e o LDAP pode falhar, resultando em uma falha de autenticação na interface de gerenciamento. Isso ocorre porque duas conexões LDAP diferentes são feitas, cada uma por um encadeamento diferente, e elas não compartilham as sessões SSL.
O JBoss EAP 7.1 apresenta um novo booleano always-send-client-cert atributo de gerenciamento no LDAP outbound-connection. Esta opção permite a configuração de conexões LDAP de saída para suportar servidores LDAP configurados para sempre exigir um certificado de cliente.
A autenticação LDAP acontece em duas etapas:
- Ele procura pela conta.
- Verifica as credenciais.
Por padrão, o always-send-client-cert atributo está definido como false, o que significa que o certificado SSL do cliente é enviado apenas com a primeira solicitação de conta de pesquisa. Quando este atributo está configurado para true, o cliente LDAP do JBoss EAP envia o certificado do cliente para o servidor LDAP com as solicitações de pesquisa e verificação.
Você pode definir esse atributo para true usando o seguinte comando CLI de gerenciamento.
/core-service=management/ldap-connection=my-ldap-connection:write-attribute(name=always-send-client-cert,value=true)
Isso resulta na seguinte conexão de saída LDAP no arquivo de configuração do servidor.
<management>
....
<outbound-connections>
<ldap name="my-ldap-connection" url="ldap://127.0.0.1:389" search-dn="cn=search,dc=myCompany,dc=com" search-credential="myPass" always-send-client-cert="true"/>
</outbound-connections>
....
</management>4.17.2. Mudanças no modo FIPS [Esta é uma tradução automática]
Mudanças no Comportamento de Segurança Legado entre o JBoss EAP 7.0 e o JBoss EAP 7.1 [Esta é uma tradução automática]
Ao usar regiões de segurança legadas, o JBoss EAP 7.1 fornece a geração automática de um certificado autoassinado para fins de desenvolvimento. Este recurso, que não estava disponível no JBoss EAP 7.0, é ativado por padrão. Isso significa que, se você estiver executando no modo FIPS, deverá configurar o servidor para desativar a criação automática de certificado autoassinado. Caso contrário, você poderá ver o seguinte erro ao iniciar o servidor.
ERROR [org.xnio.listener] (default I/O-6) XNIO001007: A channel event listener threw an exception: java.lang.RuntimeException: WFLYDM0114: Failed to lazily initialize SSL context ... Caused by: java.lang.RuntimeException: WFLYDM0112: Failed to generate self signed certificate ... Caused by: java.security.KeyStoreException: Cannot get key bytes, not PKCS#8 encoded
Para obter informações sobre criação automática de certificado autoassinado, consulte Criação automática de certificado autoassinado para aplicativos dentro Como configurar a segurança do servidor para o JBoss EAP.
4.18. Alterações do subsistema de transações [Esta é uma tradução automática]
Alguns atributos de configuração do Gerenciador de Transações que estavam disponíveis no transactions O subsistema no JBoss EAP 6 foi alterado no JBoss EAP 7.
Alterações do subsistema de transações [Esta é uma tradução automática]
A tabela a seguir lista os atributos do JBoss EAP 6 que foram removidos do transactions subsistema no JBoss EAP 7 e os atributos de substituição equivalentes.
| Atributo no JBoss EAP 6 | Mudanças no Cliente EJB no JBoss EAP 7 [Esta é uma tradução automática] |
|---|---|
|
path |
object-store-path |
|
relative-to |
object-store-relative-to |
Alterações do subsistema de transações [Esta é uma tradução automática]
Os seguintes atributos que estavam disponíveis no transactions O subsistema no JBoss EAP 6 está obsoleto no JBoss EAP 7. Os atributos obsoletos podem ser removidos em uma versão futura do produto. A tabela a seguir lista os atributos de substituição equivalentes.
| Atributo no JBoss EAP 6 | Mudanças no Cliente EJB no JBoss EAP 7 [Esta é uma tradução automática] |
|---|---|
|
use-hornetq-store |
use-journal-store |
|
hornetq-store-enable-async-io-to |
journal-store-enable-async-io |
|
enable-statistics |
statistics-enabled |
4.19. Changes to mod_cluster Configuration [Esta é uma tradução automática]
A configuração para listas de proxy estáticas em mod_cluster foi alterada no JBoss EAP 7.
No JBoss EAP 6, você configurou o proxy-list atributo, que era uma lista separada por vírgulas de endereços de proxy httpd especificados no formato de hostname:port.
o proxy-list atributo está obsoleto no JBoss EAP 7. Ele foi substituído pelo proxies attribute, que é uma lista de nomes de ligação de soquete de saída.
Essa alteração afeta o modo como você define uma lista de proxy estático, por exemplo, ao desativar a publicidade de mod_cluster. Para obter informações sobre como desativar a publicidade para o mod_cluster, consulte Desativar publicidade para mod_cluster no JBoss EAP Guia de configuração.
Para obter mais informações sobre os atributos do mod_cluster, consulte Atributos do Subsistema ModCluster no JBoss EAP Guia de configuração.
4.20. Exibindo alterações na configuração [Esta é uma tradução automática]
O JBoss EAP 7 fornece a capacidade de rastrear as alterações de configuração feitas no servidor em execução. Isso permite que os administradores visualizem um histórico de alterações de configuração feitas por usuários autorizados.
No JBoss EAP 7.0, você deve usar o core-service comando CLI de gerenciamento para configurar opções e listar alterações de configuração recentes.
Exemplo: Listar Mudanças de Configuração no JBoss EAP 7.0 [Esta é uma tradução automática]
/core-service=management/service=configuration-changes:add(max-history=10) /core-service=management/service=configuration-changes:list-changes
O JBoss EAP 7.1 introduziu um novo core-management subsistema que pode ser configurado para rastrear as alterações de configuração feitas no servidor em execução. Este é o método preferido de configuração e visualização de mudanças de configuração no JBoss EAP 7.1.
Exemplo: Listar Mudanças de Configuração no JBoss EAP 7.1 [Esta é uma tradução automática]
/subsystem=core-management/service=configuration-changes:add(max-history=20) /subsystem=core-management/service=configuration-changes:list-changes
Para mais informações sobre como usar o novo core-management subsistema introduzido no JBoss EAP 7.1, veja Visualizar alterações na configuração no JBoss EAP Guia de configuração.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.