Capítulo 2. Administração do JBoss EAP

2.1. Baixando e Instalando o JBoss EAP

Este guia fornece instruções básicas para o download e a instalação do JBoss EAP usando a instalação ZIP, que é independente de plataforma.

Consulte o Guia de instalação para obter mais detalhes, incluindo instruções para a instalação do JBoss EAP usando os métodos de instalação com instalador gráfico ou pacote RPM.

2.1.1. Pré-requisitos de Instalação

Verifique se os pré-requisitos a seguir são atendidos antes de instalar o JBoss EAP:

Pré-requisitos Comuns

Pré-requisitos da Instalação ZIP

  • O usuário que executará o JBoss EAP deve ter acesso de leitura e escrita para o diretório de instalação.
  • O kit de desenvolvimento Java desejado deve ter sido instalado.
  • Para o HP-UX da Hewlett-Packard, um utilitário de descompactação deve ter sido instalado.
  • Para o Windows Server, as variáveis de ambiente JAVA_HOME e PATH devem ter sido definidas.

2.1.2. Baixando o JBoss EAP

O arquivo ZIP do JBoss EAP está disponível no Portal do Consumidor Red Hat. A instalação do arquivo ZIP é independente da plataforma.

  1. Faça o login no Portal do Cliente Red Hat.
  2. Clique em Downloads.
  3. Clique em Red Hat JBoss Enterprise Application Platform na lista Downloads de Produtos.
  4. No menu suspenso Versão, selecione 7.1.
  5. Localize o Red Hat JBoss Enterprise Application Platform 7.1.0 na lista e clique no link Download.

2.1.3. Instalando o JBoss EAP

Depois que o arquivo ZIP de instalação do JBoss EAP foi baixado, ele pode ser instalado extraindo os conteúdos do pacote.

  1. Se necessário, mova o arquivo ZIP para o servidor e o local onde o JBoss EAP deve ser instalado.

    Nota

    O usuário que executará o JBoss EAP deve ter acesso de leitura e escrita para este diretório.

  2. Extraia o arquivo ZIP.

    $ unzip jboss-eap-7.1.0.zip
    Nota

    Para o Windows Server, clique com o botão direito do mouse no arquivo ZIP e selecione Extrair Todos.

O diretório criado com a extração do arquivo ZIP é o diretório de nível superior para a instalação do JBoss EAP. Ele é referido como EAP_HOME.

2.2. Iniciando e Encerrando o JBoss EAP

2.2.1. Iniciando o JBoss EAP

O JBoss EAP é compatível com Red Hat Enterprise Linux, Windows Server, Oracle Solaris e Hewlett-Packard HP-UX e funciona em um servidor autônomo ou modo de operação de domínio gerenciado. O comando específico para iniciar o JBoss EAP depende da plataforma subjacente e do modo de operação desejado.

Os servidores são iniciados primeiramente em um estado suspenso e não aceitarão solicitações até que todos os serviços necessários tenham sido iniciados. Então, os servidores são colocados em um estado de operação normal e podem começar a aceitar solicitações.

Iniciando o JBoss EAP como um Servidor Autônomo
$ EAP_HOME/bin/standalone.sh
Nota

Para o Windows Server, use o script EAP_HOME\bin\standalone.bat.

Esse script de inicialização usa o arquivo EAP_HOME/bin/standalone.conf (ou standalone.conf.bat para o Windows Server) para definir algumas preferências padrão, como opções JVM. Você pode personalizar as configurações desse arquivo.

O JBoss EAP usa o arquivo de configuração standalone.xml por padrão, mas pode ser iniciado usando um outro diferente. Para detalhes sobre os arquivos de configuração de servidor autônomo disponíveis e como usá-los, consulte a seção Arquivos de Configuração de Servidor Autônomo.

Para uma lista completa de todos os argumentos do script de inicialização disponíveis e suas finalidades, utilize o argumento --help ou consulte a seção Argumentos de tempo de execução do servidor .

Iniciando o JBoss EAP em um Domínio Gerenciado

O controlador de domínio deve ser iniciado antes dos servidores em qualquer um dos grupos de servidores no domínio. Use o script a seguir para iniciar primeiro o controlador de domínio e, depois, para cada controlador do host associado.

$ EAP_HOME/bin/domain.sh
Nota

Para o Windows Server, use o script EAP_HOME\bin\domain.bat.

Esse script de inicialização usa o arquivo EAP_HOME/bin/domain.conf (ou domain.conf.bat para o Windows Server) para definir algumas preferências padrão, como opções JVM. Você pode personalizar as configurações desse arquivo.

O JBoss EAP usa o arquivo de configuração de host host.xml por padrão, mas pode ser iniciado usando um outro diferente. Para detalhes sobre os arquivos de configuração de domínio gerenciado disponíveis e como usá-los, consulte a seção Arquivos de Configuração de Domínio Gerenciado.

Ao configurar um domínio gerenciado, argumentos adicionais precisarão ser passados ao script de inicialização. Para uma lista completa dos argumentos disponíveis do script de inicialização e suas finalidades, use o argumento --help ou consulte a seção Argumentos de tempo de execução do servidor.

2.2.2. Encerrando o JBoss EAP

A forma como você deve encerrar o JBoss EAP depende de como ele foi iniciado.

Encerrando uma Instância Interativa do JBoss EAP

Pressione Ctrl+C no terminal onde o JBoss EAP foi iniciado.

Encerrando uma Instância do JBoss EAP em Segundo Plano

Use a CLI de gerenciamento para conectar-se com a instância em execução e desligue o servidor.

  1. Inicie a CLI de gerenciamento.

    $ EAP_HOME/bin/jboss-cli.sh --connect
  2. Emita o comando shutdown.

    shutdown
Nota

Quando estiver executando em um domínio gerenciado, você deve especificar o nome do host a ser desligado usando o argumento --host com o comando shutdown.

2.3. Gerenciamento do JBoss EAP

O JBoss EAP usa uma configuração simplificada, com um arquivo de configuração por servidor autônomo ou domínio gerenciado. A configuração padrão para um servidor autônomo é armazenada no arquivo EAP_HOME/standalone/configuration/standalone.xml, e a configuração padrão para um domínio padrão é armazenada no arquivo EAP_HOME/domain/configuration/domain.xml. A configuração padrão para um controlador de host é armazenada no arquivo EAP_HOME/domain/configuration/host.xml .

O JBoss EAP pode ser configurado usando a CLI de gerenciamento de linha de comando, o console de gerenciamento baseado na web, a API Java ou a API HTTP. As alterações feitas usando essas interfaces de gerenciamento persistem automaticamente, e os arquivos de configuração XML são sobrescritos pela API de gerenciamento. A CLI de gerenciamento e o console de gerenciamento são os métodos preferenciais. Não é recomendado editar os arquivos de configuração XML manualmente.

2.3.1. Usuários de Gerenciamento

A configuração padrão do JBoss EAP fornece autenticação local para que um usuário possa acessar a CLI de gerenciamento no host local sem necessidade de autenticação.

No entanto, você deve adicionar pelo menos um usuário de gerenciamento se desejar acessar a CLI de gerenciamento de forma remota ou usar o console de gerenciamento, que é considerado acesso remoto mesmo se o tráfego for originado no host local. Se você tentar acessar o console de gerenciamento antes de adicionar um usuário de gerenciamento, você receberá uma mensagem de erro.

Se o JBoss EAP for instalado usando o instalador gráfico, um usuário de gerenciamento será criado durante o processo de instalação.

Este guia aborda o gerenciamento de usuários simples do JBoss EAP com o uso do script add-user, que é um utilitário para adicionar novos usuários aos arquivos de propriedades para autenticação pronta.

Para ver opções mais avançadas de autenticação e autorização, como LDAP ou controle de acesso baseado em função (RBAC), consulte a seção Autenticação de gerenciamento principal do guia Arquitetura de segurança do JBoss EAP.

2.3.1.1. Adicionando um Usuário de Gerenciamento

  1. Execute o script utilitário add-user e siga os prompts.

    $ EAP_HOME/bin/add-user.sh
    Nota

    Para o Windows Server, use o script EAP_HOME\bin\add-user.bat.

  2. Pressione ENTER para selecionar a opção padrão (a) e adicionar um usuário de gerenciamento.

    Esse usuário será adicionado ao ManagementRealm e será autorizado a realizar operações de gerenciamento usando o console de gerenciamento ou a CLI de gerenciamento. A outra opção (b) adiciona um usuário ao ApplicationRealm, que é usado para aplicativos e não fornece nenhuma permissão específica.

  3. Insira o nome de usuário e a senha. Você será solicitado a confirmar a senha.

    Nota

    Os nomes de usuário podem conter somente os seguintes caracteres, em qualquer quantidade e em qualquer ordem:

    • Caracteres alfanuméricos (a-z, A-Z, 0-9)
    • Hífen (-), ponto (.), vírgula (,), arroba (@)
    • Barra invertida (\)
    • Sinal de igual (=)

    Por padrão, o JBoss EAP permite senhas fracas, mas emitirá um aviso.

    Consulte a seção Definição de restrições de senha do utilitário add-user do Guia de configuração do JBoss EAP para obter detalhes sobre a alteração desse comportamento padrão.

  4. Insira uma lista separada por vírgulas dos grupos aos quais o usuário pertence. Se você não deseja que o usuário pertença a grupo algum, pressione ENTER para deixar em branco.
  5. Revise as informações e insira yes para confirmar.
  6. Determine se este usuário representa uma instância do servidor remoto do JBoss EAP. Para um usuário de gerenciamento básico, insira no.

    Um tipo de usuário que pode precisar ser adicionado ao ManagementRealm é o usuário representando uma outra instância do JBoss EAP, que deve ser capaz de autenticar-se para associar-se como um membro de um cluster. Se este for o caso, responda yes a este prompt e você receberá um valor secreto com hash representando a senha do usuário, que precisará ser adicionado a um arquivo de configuração diferente.

Os usuários também podem ser criados sem interatividade, passando os parâmetros ao script add-user. Esta abordagem não é recomendada nos sistemas compartilhados, pois as senhas ficarão visíveis ao fazer o log e nos arquivos de histórico. Para mais informações, consulte Executando o Utilitário Add-User Sem Interatividade.

2.3.1.2. Executando o Utilitário Add-User Sem Interatividade

Você pode executar o script do add-user sem interatividade passando argumentos na linha de comando. No mínimo, o nome de usuário e a senha devem ser fornecidos.

Atenção

Esta abordagem não é recomendada nos sistemas compartilhados, pois as senhas ficarão visíveis ao fazer o log e nos arquivos de histórico.

Criando um Usuário Pertencendo a Múltiplos Grupos

O comando a seguir adiciona um usuário de gerenciamento, mgmtuser1, com os grupos guest e mgmtgroup.

$ EAP_HOME/bin/add-user.sh -u 'mgmtuser1' -p 'password1!' -g 'guest,mgmtgroup'
Especificando um Arquivo de Propriedades Alternativas

Por padrão, as informações dos grupos e usuários criadas usando o script add-user são armazenadas nos arquivos de propriedades localizados no diretório de configuração do servidor.

As informações dos usuários são armazenadas nos seguintes arquivos de propriedades:

  • EAP_HOME/standalone/configuration/mgmt-users.properties
  • EAP_HOME/domain/configuration/mgmt-users.properties

As informações dos grupos são armazenadas nos seguintes arquivos de propriedades:

  • EAP_HOME/standalone/configuration/mgmt-groups.properties
  • EAP_HOME/domain/configuration/mgmt-groups.properties

Esses diretórios padrão e os nomes de arquivo de propriedades podem ser substituídos. O comando a seguir adiciona um novo usuário, especificando um nome e uma localização diferente para os arquivos de propriedades do usuário.

$ EAP_HOME/bin/add-user.sh -u 'mgmtuser2' -p 'password1!' -sc '/path/to/standaloneconfig/' -dc '/path/to/domainconfig/' -up 'newname.properties'

O novo usuário foi adicionado aos arquivos de propriedades do usuário localizados em /path/to/standaloneconfig/newname.properties e /path/to/domainconfig/newname.properties. Observe que esses arquivos já devem existir ou você encontrará um erro.

Para uma lista completa de todos os argumentos disponíveis do add-user e suas finalidades, use o argumento --help ou consulte a seção Argumentos para o utilitário Add-User.

2.3.2. Interfaces de Gerenciamento

2.3.2.1. CLI de Gerenciamento

A CLI (interface de linha de comando) de gerenciamento é uma ferramenta de administração da linha de comando do JBoss EAP.

Use a CLI de gerenciamento para iniciar e encerrar servidores, implantar e cancelar implantação de aplicativos, configurar o sistema e desempenhar outras tarefas administrativas. As operações podem ser desempenhadas em modo batch, permitindo que múltiplas tarefas sejam executadas em grupo.

Vários comandos comuns do terminal estão disponíveis, tais como ls, cd e pwd. A CLI de gerenciamento também suporta o preenchimento automático através da tecla tab.

Para obter informações detalhadas sobre a utilização da CLI de gerenciamento, incluindo comandos e operações, sintaxe e execução em modo em lotes, consulte o Guia da CLI de gerenciamento do JBoss EAP.

Iniciando a CLI de Gerenciamento
$ EAP_HOME/bin/jboss-cli.sh
Nota

Para o Windows Server, use o script EAP_HOME\bin\jboss-cli.bat.

Conectando-se a um Servidor em Execução
connect

Ou você pode iniciar a CLI de gerenciamento e conectar-se em apenas uma etapa usando o comando EAP_HOME/bin/jboss-cli.sh --connect.

Exibindo Ajuda

Use o comando a seguir para ajuda em geral:

help

Use o sinalizador --help em um comando para receber instruções sobre o uso desse comando específico. Por exemplo, para receber informações sobre o uso de deploy, o seguinte comando é executado.

deploy --help
Encerrando a CLI de Gerenciamento
quit
Exibindo as Configurações do Sistema

O comando a seguir usa a operaçãoread-attribute para especificar se a fonte de dados de exemplo está habilitada ou não.

/subsystem=datasources/data-source=ExampleDS:read-attribute(name=enabled)
{
    "outcome" => "success",
    "result" => true
}

Quando estiver executando em um domínio gerenciado, você deve especificar o perfil a ser atualizado usando /profile=PROFILE_NAME antes do comando.

/profile=default/subsystem=datasources/data-source=ExampleDS:read-attribute(name=enabled)
Atualizando as Configurações do Sistema

O comando a seguir usa a operação write-attribute para desabilitar a fonte de dados de exemplo.

/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled,value=false)
Iniciando os Servidores

A CLI de gerenciamento também pode ser usada para iniciar e encerrar os servidores quando estiver executando em um domínio gerenciado.

/host=HOST_NAME/server-config=server-one:start

2.3.2.2. Console de Gerenciamento

O console de gerenciamento é uma ferramenta de administração baseada na web para o JBoss EAP.

Use o console de gerenciamento para iniciar e encerrar os servidores, implantar e cancelar a implantação de aplicativos, ajustar as configurações do sistema e realizar modificações persistentes à configuração do servidor. O console de gerenciamento também possui a habilidade de desempenhar tarefas administrativas, com notificações ativas quando qualquer alteração desempenhada pelo atual usuário exige que a instância do servidor seja reiniciada ou recarregada.

Em um domínio gerenciado, as instâncias do servidor e os grupos do servidor no mesmo domínio podem ser gerenciados centralmente pelo console de gerenciamento do controlador de domínio.

Para uma instância do JBoss EAP executando no host local e usando a porta de gerenciamento padrão, o console de gerenciamento pode ser acessado através de um navegador da web em http://localhost:9990/console/App.html. Você poderá fazer a autenticação com um usuário que tenha permissões para acessar o console de gerenciamento.

O console de gerenciamento fornece as seguintes guias para navegação e gerenciamento de seu servidor autônomo JBoss EAP ou domínio gerenciado.

Home
Aprenda como realizar várias configurações comuns e gerenciar tarefas. Faça um tour para familiarizar-se com o console de gerenciamento do JBoss EAP.
Implementações
Adicione, remova e possibilite implementações. Em um domínio gerenciado, distribua implementações para grupos de servidores.
Configuração
Configure subsistemas disponíveis que fornecem recursos como serviços web, mensagens ou alta disponibilidade. Em um domínio gerenciado, gerencie os perfis que contêm configurações de subsistemas diferentes.
Tempo de execução
Consulte informações de tempo de execução, como status do servidor, utilização de JVM e logs de servidores. Em um domínio gerenciado, gerencie seus hosts, grupos de servidores e serviços.
Controle de acesso
Atribua funções para usuários e grupos quando utilizar Controle de Acesso Baseado em Função (RBAC).
Patching
Aplique patches para as instâncias de seu JBoss EAP.
Nota

Para fazer um tour do console de gerenciamento, clique no link Faça um tour! na página inicial do console de gerenciamento.

2.3.3. Arquivos de Configuração

2.3.3.1. Arquivos de Configuração de Servidor Autônomo

Os arquivos de configuração de servidor autônomo estão localizados no diretório EAP_HOME/standalone/configuration/. Existe um arquivo separado para cada um dos cinco perfis predefinidos (default, ha, full, full-ha, load-balancer).

Tabela 2.1. Arquivos de Configuração de Servidor Autônomo

Arquivo de ConfiguraçãoFinalidade

standalone.xml

Este arquivo de configuração contém a configuração padrão usada quando você inicia o seu servidor autônomo. Ele possui todas as informações sobre o servidor, incluindo subsistemas, sistemas de rede, implantações, associações e outros detalhes configuráveis. Ele não fornece os subsistemas necessários para o sistema de mensagens ou alta disponibilidade.

standalone-ha.xml

Este arquivo de configuração de servidor autônomo inclui todos os subsistemas padrão e adiciona os subsistemas mod_cluster e jgroups para alta disponibilidade. Ele não fornece os subsistemas necessários para o sistema de mensagens.

standalone-full.xml

Este arquivo de configuração de servidor autônomo inclui todos os subsistemas padrão e adiciona os subsistemas messaging-activemq e iiop-openjdk. Ele não fornece os subsistemas necessários para alta disponibilidade.

standalone-full-ha.xml

Este arquivo de configuração inclui suporte para todos os subsistemas possíveis, incluindo aqueles para o sistema de mensagens e alta disponibilidade.

standalone-load-balancer.xml

Este arquivo de configuração de servidor autônomo inclui os subsistemas necessários mínimos para o uso do balanceador de carga front-end de mod-cluster integrado para balancear a carga de outras instâncias do JBoss EAP.

Por padrão, ao iniciar o JBoss EAP como um servidor autônomo, use o arquivo standalone.xml. Para iniciar o JBoss EAP com uma configuração diferente, use o argumento do --server-config. Por exemplo:

$ EAP_HOME/bin/standalone.sh --server-config=standalone-full.xml

2.3.3.2. Arquivos de Configuração de Domínio Gerenciado

Os arquivos de configuração de domínio gerenciado estão localizados no diretório EAP_HOME/domain/configuration/.

Tabela 2.2. Arquivos de Configuração de Domínio Gerenciado

Arquivo de ConfiguraçãoFinalidade

domain.xml

Este é o principal arquivo de configuração para um domínio gerenciado. Apenas o domínio mestre é capaz de ler esse arquivo. Ele contém as configurações para todos os perfis (default, ha, full, full-ha, load-balancer).

host.xml

Este arquivo inclui detalhes de configuração específicos a um host físico em um domínio gerenciado, tais como interfaces de rede, associações, nome do host e outros detalhes. O arquivo host.xml inclui todos os recursos tanto do host-master.xml quanto do host-slave.xml, os quais estão descritos abaixo.

host-master.xml

Este arquivo inclui apenas os detalhes de configuração necessários para a execução de um servidor como o controlador de domínio mestre.

host-slave.xml

Este arquivo inclui apenas os detalhes de configuração necessários para a execução de um servidor como um controlador de host de domínio gerenciado.

Por padrão, ao iniciar o JBoss EAP em um domínio gerenciado use o arquivo host.xml. Para iniciar o JBoss EAP com uma configuração diferente, use o argumento --host-config. Por exemplo:

$ EAP_HOME/bin/domain.sh --host-config=host-master.xml

2.3.3.3. Fazendo o Backup dos Dados de Configuração

Para restaurar mais tarde a configuração do servidor do JBoss EAP, deve-se fazer o backup dos itens nas seguintes localizações:

  • EAP_HOME/standalone/configuration/

    • Faça o backup do diretório inteiro para salvar os dados do usuário, a configuração do servidor e as configurações de log para os servidores autônomos.
  • EAP_HOME/domain/configuration/

    • Faça o backup do diretório inteiro para salvar os dados do perfil e do usuário, a configuração do host e do domínio e as configurações de log para os domínios gerenciados.
  • EAP_HOME/modules/

    • Faça o backup de todos os módulos personalizados.
  • EAP_HOME/welcome-content/

    • Faça o backup de todos os conteúdos personalizados de boas vindas.
  • EAP_HOME/bin/

    • Faça o backup de todos os scripts personalizados ou dos arquivos de configuração de inicialização.

2.3.3.4. Snapshots de arquivos de configuração

Para auxiliar no gerenciamento e na manutenção do servidor, o JBoss EAP cria uma versão do arquivo de configuração original com um carimbo de data/hora no momento da inicialização. Todas as alterações de configuração adicionais realizadas pelas operações de gerenciamento obterão o backup automático do arquivo original e a preservação de uma cópia de trabalho da instância para referência e reversão. Além disto, também podem ser tirados snapshots da configuração, que são cópias pontuais da atual configuração do servidor. Esses snapshots podem ser salvos e carregados por um administrador.

Os exemplos a seguir usam o arquivo standalone.xml, mas o mesmo processo pode ser aplicado nos arquivos domain.xml e host.xml.

Tirando um Snapshot

Use a CLI de gerenciamento para tirar um snapshot das configurações atuais.

:take-snapshot
{
    "outcome" => "success",
    "result" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot/20151022-133109702standalone.xml"
}
Listando os Snapshots

Use a CLI de gerenciamento para listar todos os snapshots que foram tirados.

:list-snapshots
{
    "outcome" => "success",
    "result" => {
        "directory" => "EAP_HOME/standalone/configuration/standalone_xml_history/snapshot",
        "names" => [
            "20151022-133109702standalone.xml",
            "20151022-132715958standalone.xml"
        ]
    }
}
Excluindo um Snapshot

Use a CLI de gerenciamento para excluir um snapshot.

:delete-snapshot(name=20151022-133109702standalone.xml)
Iniciando o Servidor com um Snapshot

O servidor pode ser iniciado usando um snapshot ou uma versão da configuração salva automaticamente.

  1. Navegue até o diretório EAP_HOME/standalone/configuration/standalone_xml_history e identifique o snapshot ou o arquivo de configuração salvo a ser carregado.
  2. Inicie o servidor e indique o arquivo de configuração selecionado. Forneça o caminho do arquivo relativo ao diretório de configuração, EAP_HOME/standalone/configuration/.

    $ EAP_HOME/bin/standalone.sh --server-config=standalone_xml_history/snapshot/20151022-133109702standalone.xml
Nota

Quando estiver executando em um domínio gerenciado, use o argumento --host-config em vez de especificar o arquivo de configuração.

2.3.3.5. Substituição de Propriedades

O JBoss EAP permite que você use expressões para definir propriedades substituíveis no lugar dos valores literais na configuração. As expressões usam o formato ${PARAMETER:DEFAULT_VALUE}. Se o parâmetro especificado estiver definido, então o valor do parâmetro será usado. Caso contrário, o valor padrão será usado.

As fontes compatíveis para a resolução de expressões são as propriedades do sistema, as variáveis do ambiente e o vault. Somente para implantações, as fontes podem ser as propriedades listadas em um arquivo META-INF/jboss.properties no arquivo de implantação. Para os tipos de implantação compatíveis com subimplantações, a resolução abrange todas as subimplantações se o arquivo de propriedades estiver na implantação externa (por exemplo, EAR). Se o arquivo de propriedades estiver na subimplantação, então a resolução abrange apenas essa subimplantação.

O exemplo abaixo do arquivo de configuração standalone.xml define o inet-address para a interface pública como 127.0.0.1 , a não ser que o parâmetro jboss.bind.address esteja definido.

<interface name="public">
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>

O parâmetro jboss.bind.address pode ser definido iniciando o EAP como um servidor autônomo com o seguinte comando:

$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=IP_ADDRESS
Expressões Aninhadas

As expressões podem ser aninhadas, permitindo um uso mais avançado delas no lugar dos valores fixos. O formato de uma expressão aninhada é o mesmo de uma expressão normal, com a diferença de que uma expressão é incorporada a outra, por exemplo:

${SYSTEM_VALUE_1${SYSTEM_VALUE_2}}

As expressões aninhadas são avaliadas recursivamente, portanto a expressão interna é avaliada primeiro e, depois, a expressão externa. As expressões também podem ser recursivas, onde uma expressão determina a outra. As expressões aninhadas são permitidas onde expressões, em geral, são permitidas, com exceção dos comandos da CLI de gerenciamento.

Um exemplo de onde uma expressão aninhada pode ser usada é quando a senha usada em uma definição de fonte de dados está mascarada. A configuração para a fonte de dados deve ter a seguinte linha:

<password>${VAULT::ds_ExampleDS::password::1}</password>

O valor de ds_ExampleDS poderia ser substituído por uma propriedade do sistema (datasource_name) usando uma expressão aninhada. A configuração para a fonte de dados poderia ter, em vez disto, a seguinte linha:

<password>${VAULT::${datasource_name}::password::1}</password>

O JBoss EAP avaliaria primeiro a expressão ${datasource_name} e, então, a entraria na expressão maior e avaliaria a expressão resultante. A vantagem desta configuração é que o nome da fonte de dados é abstraído da configuração fixa.

Substituição de Propriedades Baseadas no Descritor

A configuração dos aplicativos (como os parâmetros de conexão da fonte de dados) tipicamente varia entre os ambientes de desenvolvimento, teste e produção. Essa variação é, às vezes, acomodada pelos scripts do sistema de compilação, já que a especificação Java EE não contém um método para externalizar essas configurações. Com o JBoss EAP, você pode usar a substituição de propriedades baseadas no descritor para gerenciar a configuração externamente.

A substituição das propriedades baseadas no descritor permite que você elimine suposições sobre o ambiente a partir do aplicativo e da cadeia de compilação. As configurações específicas ao ambiente podem ser especificadas nos descritores de implantação, em vez de serem especificadas nas anotações ou nos scripts do sistema de compilação. É possível fornecer a configuração nos arquivos ou como parâmetros na linha de comando.

Existem diversos sinalizadores no subsistema EE que controlam a aplicação da substituição de propriedades.

A substituição de descritores específicos ao JBoss é controlada pelo sinalizador jboss-descriptor-property-replacement e é habilitada por padrão. Quando habilitada, as propriedades podem ser substituídas nos seguintes descritores de implantação:

  • jboss-ejb3.xml
  • jboss-app.xml
  • jboss-web.xml
  • *-jms.xml
  • *-ds.xml

O comando da CLI de gerenciamento a seguir pode ser usado para habilitar ou desabilitar a substituição de propriedades nos descritores específicos ao JBoss:

/subsystem=ee:write-attribute(name="jboss-descriptor-property-replacement",value=VALUE)

A substituição de descritores do Java EE é controlada pelo sinalizador spec-descriptor-property-replacement e é desabilitada por padrão. Quando habilitada, as propriedades podem ser substituídas nos seguintes descritores de implantação:

  • ejb-jar.xml
  • persistence.xml
  • application.xml
  • web.xml

O comando da CLI de gerenciamento a seguir pode ser usado para habilitar ou desabilitar a substituição de propriedades nos descritores do Java EE:

/subsystem=ee:write-attribute(name="spec-descriptor-property-replacement",value=VALUE)

2.4. Configuração de Porta e Rede

2.4.1. Interfaces

O JBoss referencia as interfaces nomeadas por toda a configuração. Isto permite que a configuração referencie declarações de interface individuais com nomes lógicos, em vez de exigir os detalhes completos da interface a cada uso.

Isto também permite uma configuração mais fácil em um domínio gerenciado, onde os detalhes da interface de rede podem variar em múltiplas máquinas. Cada instância do servidor pode corresponder a um grupo de nome lógico.

Todos os arquivos standalone.xml, domain.xml e host.xml incluem declarações de interface. Há diversos nomes de interfaces pré-configurados, dependendo de qual configuração padrão é usada. A interface de gerenciamento pode ser utilizada para todos os componentes e serviços que exigem a camada de gerenciamento, incluindo o endpoint de gerenciamento HTTP. A interface pública pode ser utilizada para toda comunicação de rede relacionada ao aplicativo. A interface não segura é usada para soquetes IIOP na configuração padrão. A interface privada é utilizada por soquetes JGroups na configuração padrão.

2.4.1.1. Configurações de Interface Padrão

<interfaces>
  <interface name="management">
    <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
  </interface>
  <interface name="public">
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
  </interface>
  <interface name="private">
    <inet-address value="${jboss.bind.address.private:127.0.0.1}"/>
  </interface>
  <interface name="unsecure">
    <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
  </interface>
</interfaces>

Por padrão, o JBoss EAP vincula essas interfaces com 127.0.0.1, mas esses valores podem ser substituídos durante o tempo de execução ao definir a propriedade apropriada. Por exemplo, o inet-address da interface pública pode ser definido ao iniciar o JBoss EAP como um servidor autônomo com o comando a seguir:

$ EAP_HOME/bin/standalone.sh -Djboss.bind.address=IP_ADDRESS

Alternativamente, você pode utilizar opção -b na linha de comando de inicialização do servidor. Para mais informações sobre opções de inicialização de servidor, consulte Argumentos de tempo de execução do servidor.

Importante

Se você modificar as portas ou interfaces de rede padrão usadas pelo JBoss EAP, lembre-se de alterar também os scripts que usam as portas ou interfaces modificadas, que incluem os scripts de serviço do JBoss EAP. Lembre-se também de especificar a porta e a interface corretas ao acessar o console de gerenciamento ou a CLI de gerenciamento.

2.4.1.2. Configurando Interfaces

As interfaces de rede são declaradas ao especificar um nome lógico e os critérios de seleção para a interface física. Os critérios de seleção podem referenciar um endereço curinga ou especificar um conjunto de uma ou mais características que uma interface ou um endereço deve ter para obter uma correspondência válida. Para uma lista de todos os critérios de seleção da interface disponíveis, consulte a seção Atributos de Interface.

As interfaces podem ser configuradas usando o console de gerenciamento ou a CLI de gerenciamento. Seguem abaixo alguns exemplos de adição e atualização de interfaces. O comando da CLI de gerenciamento é apresentado primeiro, seguido pela configuração XML correspondente.

Adicionando uma Interface com um Valor NIC

Adicione uma nova interface com o valor NIC de eth0.

/interface=external:add(nic=eth0)
<interface name="external">
   <nic name="eth0"/>
</interface>
Adicionando uma Interface com Diversos Valores Condicionais

Adicione uma nova interface que corresponda a qualquer interface ou endereço na sub-rede; se a interface estiver ativa, suportar multicast e não ser ponto a ponto.

/interface=default:add(subnet-match=192.168.0.0/16,up=true,multicast=true,not={point-to-point=true})
<interface name="default">
   <subnet-match value="192.168.0.0/16"/>
   <up/>
   <multicast/>
   <not>
      <point-to-point/>
   </not>
</interface>
Atualizando um Atributo da Interface

Atualize o valor inet-address padrão da interface pública, mantendo a propriedade jboss.bind.address para permitir que este valor seja definido durante o tempo de execução.

/interface=public:write-attribute(name=inet-address,value="${jboss.bind.address:192.168.0.0}")
<interface name="public">
    <inet-address value="${jboss.bind.address:192.168.0.0}"/>
</interface>
Adicionando uma Interface a um Servidor em um Domínio Gerenciado
/host=HOST_NAME/server-config=SERVER_NAME/interface=INTERFACE_NAME:add(inet-address=127.0.0.1)
<servers>
   <server name="SERVER_NAME" group="main-server-group">
      <interfaces>
         <interface name="INTERFACE_NAME">
            <inet-address value="127.0.0.1"/>
         </interface>
      </interfaces>
   </server>
</servers>

2.4.2. Associações de Soquete

As associações de soquete e os grupos de associação de soquete permitem que você defina as portas de rede e suas relações para as interfaces de rede necessárias para a sua configuração do JBoss EAP. Uma associação de soquete é uma configuração nomeada para um soquete. Um grupo de associação de soquete é uma coleção das declarações da associação de soquete que são agrupadas sob um nome lógico.

Isto permite que outras seções da configuração façam referência às associações de soquete pelos seus nomes lógicos, em vez de exigir os detalhes completos da configuração do soquete a cada uso.

As declarações para essas configurações nomeadas podem ser encontradas nos arquivos de configuração standalone.xml e domain.xml. Um servidor autônomo contém apenas um grupo de associação de soquete, enquanto um domínio gerenciado pode conter múltiplos grupos. Você pode criar um grupo de associação de soquete para cada grupo do servidor no domínio gerenciado ou compartilhar um grupo de associação de soquete entre os múltiplos grupos do servidor.

As portas usadas por padrão pelo JBoss EAP dependem dos grupos de associação de soquete que são usados e dos requisitos das suas implantações individuais.

2.4.2.1. Portas de Gerenciamento

As portas de gerenciamento foram consolidadas no JBoss EAP 7. Por padrão, o JBoss EAP 7 usa a porta 9990 para o gerenciamento nativo, usado pela CLI de gerenciamento, e para o gerenciamento HTTP, usado pelo console de gerenciamento baseado na web. A porta 9999, que foi usada como a porta de gerenciamento nativo no JBoss EAP 6, não é mais usada, mas ainda pode ser habilitada se desejado.

Se o HTTPS é habilitado para o console de gerenciamento, então a porta 9993 é usada por padrão.

2.4.2.2. Associações de Soquete Padrão

O JBoss EAP é fornecido com um grupo de associação de soquete para cada um dos cinco perfis predefinidos (default, ha, full, full-ha, load-balancer).

Para mais informações sobre as associações de soquete padrão, tais como descrições e portas padrão, consulte a seção Associações de Soquete Padrão.

Importante

Se você modificar as portas ou interfaces de rede padrão usadas pelo JBoss EAP, lembre-se de alterar também os scripts que usam as portas ou interfaces modificadas, que incluem os scripts de serviço do JBoss EAP. Lembre-se também de especificar a porta e a interface corretas ao acessar o console de gerenciamento ou a CLI de gerenciamento.

Servidor Autônomo

Quando estiver executando como um servidor autônomo, apenas um grupo de associação de soquete é definido por aquivo de configuração. Cada arquivo de configuração de servidor autônomo (standalone.xml, standalone-ha.xml, standalone-full.xml, standalone-full-ha.xml, standalone-load-balancer.xml) define as associações de soquete para as tecnologias usadas por seu perfil correspondente.

Por exemplo, o arquivo de configuração de servidor autônomo padrão (standalone.xml) especifica as associações de soquete abaixo:

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>
Domínio Gerenciado

Quando estiver executando em um domínio gerenciado, todos os grupos de associação de soquete são definidos no arquivo domain.xml. Existem cinco grupos de associação de soquete predefinidos:

  • standard-sockets
  • ha-sockets
  • full-sockets
  • full-ha-sockets
  • load-balancer-sockets

Cada grupo de associação de soquete especifica as associações de soquete para as tecnologias usadas por seu perfil correspondente. Por exemplo, o grupo de associação de soquete full-ha-sockets define várias associações de soquete jgroups, as quais são usadas pelo perfil full-ha para alta disponibilidade.

<socket-binding-groups>
  <socket-binding-group name="standard-sockets" default-interface="public">
    <!-- Needed for server groups using the 'default' profile  -->
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
      <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
  </socket-binding-group>
  <socket-binding-group name="ha-sockets" default-interface="public">
    <!-- Needed for server groups using the 'ha' profile  -->
    ...
  </socket-binding-group>
  <socket-binding-group name="full-sockets" default-interface="public">
    <!-- Needed for server groups using the 'full' profile  -->
    ...
  </socket-binding-group>
  <socket-binding-group name="full-ha-sockets" default-interface="public">
    <!-- Needed for server groups using the 'full-ha' profile  -->
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="iiop" interface="unsecure" port="3528"/>
    <socket-binding name="iiop-ssl" interface="unsecure" port="3529"/>
    <socket-binding name="jgroups-mping" interface="private" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
    <socket-binding name="jgroups-tcp" interface="private" port="7600"/>
    <socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
    <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
      <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
  </socket-binding-group>
  <socket-binding-group name="load-balancer-sockets" default-interface="public">
    <!-- Needed for server groups using the 'load-balancer' profile  -->
    ...
  </socket-binding-group>
</socket-binding-groups>
Nota

A configuração de soquete para as interfaces de gerenciamento é definida no arquivo host.xml do controlador de domínio.

2.4.2.3. Configurando as Associações de Soquete

Quando estiver definindo uma associação de soquete, você pode definir os atributos de porta e de interface, assim como as configurações de multicast, como multicast-address e multicast-port. Para detalhes sobre todos os atributos da associação de soquete disponíveis, consulte a seção Atributos da Associação de Soquete.

As associações de soquete podem ser configuradas usando o console de gerenciamento ou a CLI de gerenciamento. As etapas a seguir passam pela adição de um grupo de associação de soquete, adição de uma associação de soquete e definição das configurações da associação de soquete usando a CLI de gerenciamento.

  1. Adicione um novo grupo de associação de soquete. Observe que esta etapa não pode ser desempenhada quando executando como um servidor autônomo.

    /socket-binding-group=new-sockets:add(default-interface=public)
  2. Adicione uma associação de soquete.

    /socket-binding-group=new-sockets/socket-binding=new-socket-binding:add(port=1234)
  3. Altere a associação de soquete para usar uma interface que não seja a padrão, definida pelo grupo de associação de soquete.

    /socket-binding-group=new-sockets/socket-binding=new-socket-binding:write-attribute(name=interface,value=unsecure)

O exemplo a seguir mostra como a configuração XML pode ficar depois que as etapas acima são concluídas.

<socket-binding-groups>
    ...
    <socket-binding-group name="new-sockets" default-interface="public">
        <socket-binding name="new-socket-binding" interface="unsecure" port="1234"/>
    </socket-binding-group>
</socket-binding-groups>

2.4.2.4. Deslocamentos de Porta

Um deslocamento de porta é um valor numérico de deslocamento adicionado a todos os valores de porta especificados no grupo de associação de soquete para aquele servidor. Isto permite que o servidor herde os valores de porta definidos no seu grupo de associação de soquete, com um deslocamento para garantir que não haja conflito entre os outros servidores no mesmo host. Por exemplo, se a porta HTTP do grupo de associação de soquete é 8080 e um servidor usa um deslocamento de porta de 100, então a sua porta HTTP será 8180.

Segue abaixo um exemplo de configuração de um deslocamento de porta de 250 para um servidor em um domínio gerenciado usando a CLI de gerenciamento.

/host=master/server-config=server-two/:write-attribute(name=socket-binding-port-offset,value=250)

Os deslocamentos de porta podem ser usados para servidores em um domínio gerenciado e para a execução de múltiplos servidores autônomos em um mesmo host.

Você pode passar em um deslocamento de porta quando iniciar um servidor autônomo utilizando a propriedade jboss.socket.binding.port-offset

$ EAP_HOME/bin/standalone.sh -Djboss.socket.binding.port-offset=100

2.4.3. Endereços IPv6

Por padrão, o JBoss EAP é configurado para executar usando endereços IPv4. As etapas abaixo mostram como configurar o JBoss EAP para executar usando endereços IPv6.

Configurando a Pilha JVM para Endereços IPv6

Atualize a configuração de inicialização para usar endereços IPv6.

  1. Abra o arquivo de configuração de inicialização.

    • Quando estiver executando como um servidor autônomo, edite o arquivo EAP_HOME/bin/standalone.conf (ou standalone.conf.bat para o Windows Server).
    • Quando estiver executando em um domínio gerenciado, edite o arquivo EAP_HOME/bin/domain.conf (ou domain.conf.bat para o Windows Server).
  2. Defina a propriedade java.net.preferIPv4Stack como false.

    -Djava.net.preferIPv4Stack=false
  3. Acrescente a propriedade java.net.preferIPv6Addresses e a defina como true.

    -Djava.net.preferIPv6Addresses=true

O exemplo a seguir mostra como as opções JVM no arquivo de configuração de inicialização podem ficar depois que as alterações acima são aplicadas.

# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1303m -Xmx1303m -Djava.net.preferIPv4Stack=false"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv6Addresses=true"
else
Atualizando Declarações de Interface para Endereços IPv6

Os valores de interface padrão na configuração podem ser mudados para endereços IPv6. Por exemplo, o comando da CLI de gerenciamento abaixo define a interface de gerenciamento como endereço IPv6 de loopback (::1).

/interface=management:write-attribute(name=inet-address,value="${jboss.bind.address.management:[::1]}")

O exemplo a seguir mostra como a configuração XML deve ficar depois que o comando acima é executado.

<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:[::1]}"/>
    </interface>
    ....
</interfaces>