ACESSANDO VARIÁVEIS DO JBOSS AS 7 VIA LINHA DE COMANDO
Autor: josepojr | Publicado: 2013-08-11T00:42:00-03:00

P { margin-bottom: 0.21cm; }P.western {  }A:link {  }




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:






P { margin-bottom: 0.21cm; }P.western {  }A:link {  }

















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)*]“)”

TD P { margin-bottom: 0cm; }TD P.western {  }P { margin-bottom: 0.21cm; }P.western {  }A:link {  }




 
 

  
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. 
   



 



P { margin-bottom: 0.21cm; }P.western {  }A:link {  }




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:








P { margin-bottom: 0.21cm; }P.western {  }A:link {  }




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
(:).

&nbsp;


 
 
 
 TD P { margin-bottom: 0cm; }TD P.western {  }P { margin-bottom: 0.21cm; }P.western {  }A:link {  }




 
 

  
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.

 






P { margin-bottom: 0.21cm; }P.western {  }A:link {  }




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:












P { margin-bottom: 0.21cm; }P.western {  }A:link {  }




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



https://docs.jboss.org/author/display/AS71/Management+Clients 



http://www.mastertheboss.com/jboss-as-7/using-jboss-as-7-management-api-programmatically



http://stackoverflow.com/questions/9704715/how-to-list-jboss-as-7-datasource-properties-in-java-code



http://management-platform.blogspot.fr/2012/07/co-located-management-client-for.html