INTRODUÇÃO
Além de
acessar as configurações via arquivos xml no JBoss AS 7, podemos
realizar operações como ler/escrever atributos e outras, na linha
de comando (console) ou programaticamente (via Management API do
JBoss AS 7).
Nesse
artigo vamos explicar como fazer o acesso as variáveis no JBoss AS
7 tem linha de comando. Primeiramente, vamos
explicar a estrutura geral das chamadas, linguagem, sintaxe até a
conexão e execução via linha de comando.
ACESSO VIA LINHA DE
COMANDO
Primeiramente,
precisa entrar no diretório $JBOSS_HOME/bin e executar o
script “jboss-cli.bat” (Windows) ou “jboss-cli.sh”
(Linux). Ao executar esse programa, aparecerá outro shell
(interface) e nesse momento, digite:
connect
127.0.0.1:9999
Para se
conectar ao servidor no IP 127.0.0.1 e porta 9999 (responsável para
permitir acesso ao módulo de gerenciamento no JBoss AS 7).
Estando
conectado, digite o comando “ls” que dentro do JBoss CLI
significa listar tudo que está dentro do “diretório”. Esse
“diretório” entre aspas não significa um diretório realmente
físico, mas como eles (JBoss AS) fizessem uma analogia entre a
estrutura de diretórios (e até usando comandos similares do Linux,
como o “ls”) e a estrutura das configurações usadas pelo
JBoss (Hierarquia de configurações usadas nos arquivos XML). Veja
na próxima figura para mais detalhes:
Note que ao usar o comando “ls”, temos acesso já logo de cara as configurações fundamentais do servidor JBoss AS 7, como o modo de inicialização (launch-type) STANDALONE, versão (release-version) 7.1.3.Final e outras.
Digite o
comando “help” para mais informações e use também o comando
“clear” para limpar a tela.
Para
começar, vamos entender como executar alguma instrução (requisição
de operação) para poder ler/escrever nas propriedades do JBoss AS
7. Basicamente, uma requisição de operação (comumente chamado na
documentação do JBoss AS 7) é construída de:
Caminho
(endereço, Address), nome da operação e conjunto de parâmetros
(depende da operação e é opcional).
Em uma
notação na linguagem E-BNF (https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form), resumimos em:
[/node-type=node-name
(/node-type=node-name)*]
“:” operation-name
“(”[parameter-name=parameter-value
(“,”
parameter-name=parameter-value)*]“)”
PARA QUEM NÃO CONHECE SOBRE A NOTAÇÃO
E-BNF
|
É uma linguagem para codificar
expressões e regras de gramáticas e assim, definir alguma
linguagem, como as linguagens de programação Java, Python e
outras.
Essa notação permitir definir
de forma exata essas linguagens usadas no campo da ciência da
computação, auxiliando na construção de compiladores,
interpretadores, etc.
Outras linguagens como Português,
Inglês, Alemão, Russo e outras não podem ser definidas por meio
da notação E-BNF, pois são linguagens que não são exatas e
possuem muitas regras que fogem da definição do E-BNF e também,
são linguagens dinâmicas e vivas que mudam com o tempo.
O uso de colchetes “[” e “]”
indicam que expressão contida é de uso opcional, ou seja, o
número de ocorrências é 0 (zero) ou 1 (uma). O uso de parênteses
“(” e “)” indicam que a expressão contida é de uso
obrigatório e o número de ocorrências vai ser sempre 1 (uma). O
asterisco “*” indica que a expressão próxima (lado esquerdo
do asterisco) é de 0 (zero) ou N ocorrências, onde N pode ser
qualquer valor.
Exemplo: Se temos (expressaoA)*
indica que a expressão “expressaoA” pode ter 1 (uma) ou N
ocorrências, pois o parênteses indica que a expressão
(“expressaoA”) é obrigatória e deve ter uma ocorrência, ou
1 (uma) ou N ocorrência quando o asterisco está presente.
|
ACESSANDO VARIÁVEIS
- LER PORTA HTTP
Vamos
começar mostrando como saber se o servidor JBoss AS 7 está rodando
no modo “DOMAIN” ou “STANDALONE”. Para isso, na linha de
comandos digite:
:
read-attribute(name=launch-type)
Veja o resultado na
figura a seguir:
Veja que
o comando é executado na raiz (/) do diretório de
configurações do JBoss AS 7.
Por isso,
o comando executado não possuía nenhum endereço
(/node-type=node-name) e já começava logo com os dois pontos
(:).
DICA
|
Use a tecla TAB para o
console completar o comando ou dar sugestões de opções
possíveis. Com isso, podemos validar os nossos comandos antes de
serem executados (ao clicar ENTER).
Em muitos casos aonde não temos
exemplos, basta pressionar TAB para aparecer as sugestões
validas de execução.
|
Agora
vamos obter o número da porta usado pelo serviço http. Antes de
executar o comando propriamente dito, vamos entrar nesse diretório
para poder ver o caminho (desde a raiz) até chegar no diretório com
essa configuração (valor da porta de vários serviços do JBoss AS
7). Execute os seguintes comandos:
cd
socket-binding-group=standard-sockets
cd
socket-binding=http
:read-attribute(name=port)
Veja na figura a seguir
o resultado:
Note que o acesso do
diretório se dar sempre em pares, isto é
DiretórioPai=DiretórioFilho, seguindo a estrutura
node-type=node-name.
Ou podemos entrar de
diretório em diretório (um por vez), conforme comandos a seguir:
cd
socket-binding-group
cd
standard-sockets
cd socket-binding
cd http
:read-attribute(name=port)
Ou podemos executar
tudo em um único comando:
/socket-binding-group=standard-sockets/socket-binding=http:read-attribute(name=port)
A
operação usada (read-attribute) nesse exemplo está
usando apenas um parâmetro que é o nome do atributo que queremos
ler, no caso o nome é “port” que é o valor da porta http que
queremos saber.
- LER CONFIGURAÇÕES
DO INFINISPAN
// Lê só no primeiro
nível.
/subsystem=infinispan:read-resource
// Lê de modo
recursivo.
/subsystem=infinispan:read-resource(recursive=true)
// Lê os
container-cache do infinispan.
/subsystem=infinispan:read-children-names(child-type=cache-container)
- IDENTIFICAR AS
OPERAÇÕES POSSÍVEIS NO DIRETÓRIO ATUAL
// Dependendo do
diretório atual, aparecerá mais ou menos operações que podem ser
realizadas naquele diretório.
:read-operation-names
// Obtêm a descrição
da operação escolhida.
// Nesse caso, estamos
querendo saber como
// executar o comando
shutdown no diretório raiz (/).
:read-operation-description(name=shutdown)
CONCLUSÃO
Nesse
artigo mostramos como executar os comandos no console para poder
administrar o servidor de aplicações JBoss AS 7. Com isso, podemos
fazer diversas operações usando apenas o console.
A maneira
de executar esse comando também é análoga a usada pela API
Management para executar operações no JBoss AS 7.
REFERÊNCIAS
http://stackoverflow.com/questions/9704715/how-to-list-jboss-as-7-datasource-properties-in-java-code