You are on page 1of 7

23/9/2014

Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

Lado Servidor

ltimas Notcias (@LadoServidor):

Notcias, idias, solues e servios em servidores de


aplicaes, nuvens computacionais e tecnologias
associadas.
Blog

Tutoriais

Vdeos

Sobre

Tutorial: Instalando, Iniciando, Testando E Parando O JBoss AS 6


Autor: Paulo Jernimo
ltima atualizao: 14/10/2010 s 10:39
Comentrios: http://blog.ladoservidor.com/2010/07/tutorial-nstalando-iniciando-testando-e.html
Checando os pr-requisitos para a instalao
Instalando um Java Development Kit (JDK)
Instalando o OpenJDK
Instalando o JDK da Sun
Baixando e instalando o JBoss
Iniciando e parando o JBoss
Da forma mais bsica e simples possvel
Colocando o JBoss em background
Permitindo o acesso para alm de localhost
Colocando uma instncia diferente em execuo
Colocando mais de uma instncia em execuo
Atravs de portas diferentes
Atravs de IPs diferentes
Verificando as portas utilizadas pelo JBoss
Neste tutorial, parte integrante do treinamento "JBoss AS - Instalao, configurao e monitorao bsica (32h) (JBAS-1)", toda vez que citarmos de maneira simplificada a palavra
JBoss estaremos nos referindo ao JBoss AS 6.

Checando Os Pr-Requisitos Para A Instalao


O JBoss uma aplicao 100% Java, que pode ser executado em qualquer sistema operacional que tenha um Java Development Kit (JDK) instalado na verso 1.5 ou superior.
Como requisitos de hardware, Peter Johnson, um dos autores do livro JBossInAction, recomenda que seja utilizado no mnimo um processador single-core (como o Pentium IV), 1
GB de RAM e 500 MB de espao livre em disco. claro que estes requisitos so afetados pela quantidade de usurios que iro utilizar a aplicao e o correto, em qualquer
situao, a ocorrncia de testes de carga e de desempenho para avaliar se o hardware que executar o JBoss aguentar a demanda.
Devido ao melhor desempenho do JDK 1.6 em relao as verses anteriores, seu uso recomendado. Dependendo do hardware, a verso do JDK pode ser a de 32 ou a 64 bits.
Entretanto importante estar atento as caractersticas da execuo de uma verso JVM 64 bits num hardware compatvel:
Em mquinas de 64 bits:
Canais duplicados de comunicao entre RAM e CPU melhoram o desempenho para aplicaes com grande consumo de memria;
O endereamento de memria virtualmente ilimitado (at 1 hexabyte). Entretanto, grandes heaps afetam o desempenho do coletor de lixo;
Aplicaes que precisam executar com mais de 1,5 GB de RAM (incluindo o espao livre para otimizaes do coletor de lixo) deveriam utilizar JVMs de 64 bits;
Aplicaes que executam numa JVM de 32 bits e no exigem mais que os tamanhos mnimos de heap no iro se aproveitar dos recursos oferecidos por uma JVM de 64
bits;
Nosso prximo passo ento ser a instalao de um JDK.
Este tutorial, poder ter seus passos seguidos atravs do uso da vm-curso-ladoservidor. Isto recomendvel e facilitar as atividades a seguir que, mesmo assim, podem ser
executadas em qualquer Ubuntu na verso 10.04.

Instalando Um Java Development Kit (JDK)


Verses anteriores a 10.04 do Ubuntu costumavam instalar um JDK atravs dos pacotes sun-java*. Entretanto nesta verso, o pacote sun-java6-jdk foi movido para outro
repositrio. Isto tornou sua instalao um pouco mais complexa. Contudo, o objetivo desta mudana foi dar maior visibilidade a verso open source equivalente (o OpenJDK) que
pode ser facilmente instalado atravs dos repositrios de pacotes j configurados.

Instalando O OpenJDK
A instalao do OpenJDK (e o teste das verses de seus binrios) realizada pela execuo dos comandos a seguir:

$ sudo apt-get install openjdk-6-jdk


$ java -version
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1)
OpenJDK Client VM (build 17.0-b16, mixed mode, sharing)
$ javac -version
javac 1.6.0_20
Na vm-curso-ladoservidor o pacote openjdk-6-jdk j est instalado. Logo, o comando acima no efetua nenhum download/instalao nesta VM. Entretanto, se o removessemos
e mandssemos reinstal-lo, o download deste pacote iria exigir que alguns outros tambm fossem baixados. fcil saber quais so eles atravs da execuo do comando abaixo:

$ apt-cache depends openjdk-6-jdk


Se solicitarmos a remoo completa do pacote openjdk-6-jdk podemos notar que, mesmo assim, o comando java continuar a funcionar. Por que? Vamos descobrir,
seguindo a execuo (e visualizando o resultado) dos comandos abaixo:

$ sudo apt-get purge openjdk-6-jdk


$ java -version
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1)
OpenJDK Client VM (build 17.0-b16, mixed mode, sharing)
$ which java
/usr/bin/java
$ ls -la /usr/bin/java
lrwxrwxrwx 1 root root 22 2010-10-11 11:18 /usr/bin/java -> /etc/alternatives/java
$ ls -la /etc/alternatives/java
lrwxrwxrwx 1 root root 40 2010-10-11 11:18 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk/jre/bin/java
$ ls -la /usr/lib/jvm/java-6-openjdk/jre/bin/java

http://a.ladoservidor.com/tutoriais/jbossas6-instala/index.html

1/7

23/9/2014

Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

-rwxr-xr-x 1 root root 38508 2010-09-07 14:35 /usr/lib/jvm/java-6-openjdk/jre/bin/java


$ dpkg -S /usr/lib/jvm/java-6-openjdk/jre/bin/java
openjdk-6-jre-headless: /usr/lib/jvm/java-6-openjdk/jre/bin/java
Pela sada apresentada acima, notamos que o comando java um link simblico em /usr/bin/java. Este link aponta para outro (/etc/alternatives/java) que por sua
vez, aponta para o binrio disponibilizado em /usr/lib/jvm/java-6-openjdk/jre/bin/java. Com base na localizao real deste binrio, o utilitrio dpkg-query pode
ser utilizado para ento determinar qual o pacote que o contm. Por fim, sua sada nos indica que este pacote o openjdk-6-jre-headless. Ou seja, se apenas
desejssemos ter instalado a JRE (e no o JDK), este seria o pacote que deveriamos utilizar.
Para que todo este uso de links simblicos? Este mecanismo utilizado no Linux para possibilitar que diferentes alternativas de JDK/JRE possam ser instaladas. O link
/etc/alternatives/java atualizado quando se instala uma verso diferente de JRE, mas o /usr/bin/java no. Para testar isto, vamos executar a instalao do pacote
sun-java6-jdk atravs dos comandos do tpico a seguir.

Instalando O JDK Da Sun


Talvez, por qualquer motivo que seja, desejemos no utilizar a verso open source do JDK. Se isto ocorrer, o JDK da falecida Sun (comprada pela Oracle) pode ser instalado no
Ubuntu de acordo com os comandos a seguir:

$ sudo bash -c '


add-apt-repository "deb http://archive.canonical.com/ lucid partner"
apt-get update
apt-get install sun-java6-jdk sun-java6-plugin
update-java-alternatives -s java6-sun
'
Os comandos acima iro:
1. Adicionar o repositrio de pacotes para o qual foram movidos os pacotes sun-java6-*;
2. Atualizar a lista de pacotes do Ubuntu;
3. Implantar a JDK da Sun e o plugin para browsers Mozilla (incluindo o Firefox);
Aps ter realizado a instalao, note que o link /etc/alternatives/java agora estar apontando para outro binrio, conforme apresentado pela sada do comando a seguir:

$ readlink /etc/alternatives/java
/usr/lib/jvm/java-6-sun/jre/bin/java
Note tambm que as verses apresentadas na execuo dos binrios do JDK/JRE tambm mudam:

$ java -version
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1)
OpenJDK Client VM (build 17.0-b16, mixed mode, sharing)
$ javac -version
javac 1.6.0_20
Para vermos que outras alternativas teramos para os binrios do JDK, o comando a seguir poderia ser utilizado:

$ update-java-alternatives -l
java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk
java-6-sun 63 /usr/lib/jvm/java-6-sun
Sendo assim, podemos novamente apontar os links para os binrios do OpenJDK (reinstalando-o) atravs dos comando a seguir:

$ sudo bash -c '


apt-get install openjdk-6-jdk icedtea6-plugin
update-java-alternatives -s java-6-openjdk
'
O pacote icdetea6-plugin similar em funcionalidades ao sun-java6-plugin mas, open source.
Na opinio do Lado Servidor, o OpenJDK o futuro que j se tornou presente em termos de Java livre! E, sendo assim, ele merece nossa total chance de uso. Neste tutorial, a
verso de JDK de nossa escolha para a execuo do JBoss o OpenJDK.

Baixando E Instalando O JBoss


Vamos executar todo o processo de instalao e testes do JBoss atravs de um novo usurio no sistema. Faremos isto no intuito de organizar melhor nosso ambiente de laboratrio
e tambm de no poluir os arquivos do usurio corrente (na vm-curso-ladoservidor, usurio aluno). Sendo assim, nossa primeira tarefa ser criar este usurio e, em seguida, nos
logaremos como ele, atravs dos seguintes comandos:

$ sudo useradd -m -s /bin/bash lab_jbossas6


$ sudo su - lab_jbossas6
As tarefas relativas ao download e a instalao do JBoss so muito simples e podem ser realizados de maneira manual atravs de quatro passos (sendo um opcional):
Baixar um arquivo compactado da Internet;
Verificar se o download foi efetuado corretamente, utilizando o utilitrio md5sum; (passo opcional)
Descompactar este arquivo no sistema de arquivos local;
Ajustar algumas variveis de ambiente;
Para automatizar este trabalho, deixando-o ainda mais simples, iremos criar e executar um shell-script que poder ser utilizado vrias vezes para refazer as tarefas acima. Alm de
torn-las automticas e padronizadas, o script tambm verificar possveis erros, como:
Download incompleto ou errado;
Impossibilidade de baixar ou extrair o arquivo de instalao do JBoss por qualquer motivo; (Ex.: falta de espao em disco)
Vamos gerar o script, no diretrio bin do usurio, atravs da execuo do seguinte comando:

$ bash -c '
mkdir -p ~/bin && cd ~/bin
wget http://a.ladoservidor.com/tutoriais/jbossas6-instala/bin/instalar-jboss
chmod +x instalar-jboss
'
Aps a execuo do comando acima, ser criado o script instalar-jboss. Voc pode visualizar seu contedo atravs do seguinte comando:

$ cat instalar-jboss
#!/bin/bash

http://a.ladoservidor.com/tutoriais/jbossas6-instala/index.html

2/7

23/9/2014

Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

LOG=/tmp/$$.log
INSTALADORES_DIR=~/instaladores
FERRAMENTAS_DIR=~/ferramentas
JBOSS_INSTALADOR=jboss-as-distribution-6.0.0.20100911-M5.zip
JBOSS_DIR=jboss-6.0.0.20100911-M5
JBOSS_LINK=jboss
JBOSS_URL_INSTALADOR="http://downloads.sourceforge.net/project/jboss/JBoss/JBoss-6.0.0.M5/ARQUIVO?use_mirror=ufpr"
ok_ou_falha() { [ $? = 0 ] && echo Ok || { echo "Falhou! Veja $LOG"; exit 1; }; }
mkdir -p $INSTALADORES_DIR && cd $INSTALADORES_DIR
[ -f "$JBOSS_INSTALADOR" -a -f "$JBOSS_INSTALADOR.md5" ] || {
for f in $JBOSS_INSTALADOR $JBOSS_INSTALADOR.md5; do
[ -f "$f" ] && continue
echo -n "Baixando $f... "
wget "`echo $JBOSS_URL_INSTALADOR | sed s,ARQUIVO,$f,g`" -O $f &> $LOG
ok_ou_falha
done
}
echo -n "Verificando o checksum do arquivo $JBOSS_INSTALADOR... "
test `md5sum $JBOSS_INSTALADOR | cut -d ' ' -f 1` = `cat $JBOSS_INSTALADOR.md5`
ok_ou_falha
mkdir -p $FERRAMENTAS_DIR && cd $FERRAMENTAS_DIR
echo -n "Extraindo $JBOSS_INSTALADOR... "
rm -rf $JBOSS_DIR; unzip $INSTALADORES_DIR/$JBOSS_INSTALADOR &> $LOG
ok_ou_falha
echo -n "Criando o link $JBOSS_LINK para $JBOSS_DIR... "
rm -f $JBOSS_LINK; ln -s $JBOSS_DIR $JBOSS_LINK
ok_ou_falha
grep '^export JAVA_HOME' ~/.bashrc &> /dev/null || {
echo -n 'Ajustando JAVA_HOME... '
echo 'export JAVA_HOME=/usr/lib/jvm/java-6-openjdk' >> ~/.bashrc
ok_ou_falha
}
grep '^export JBOSS_HOME' ~/.bashrc &> /dev/null && exit 0
echo -n "Ajustando variveis de ambiente para o funcionando do JBoss... "
cat >> ~/.bashrc <<'EOF'
export JBOSS_HOME=FERRAMENTAS_DIR/JBOSS_LINK
export PATH=$JBOSS_HOME/bin:$PATH
EOF
sed -i "
s,FERRAMENTAS_DIR,$FERRAMENTAS_DIR,g
s,JBOSS_LINK,$JBOSS_LINK,g
" ~/.bashrc
ok_ou_falha
Este script realiza as seguintes tarefas:
Ajusta algumas variveis que representam:
O log de execuo para algumas tarefas ($LOG), que ser gerado no diretrio /tmp com o nome do arquivo sendo o nmero do processo em execuo;
O diretrio que conter o instalador do JBoss: $INSTALADOR_DIR
O diretrio que conter o JBoss aps sua instalao: $FERRAMENTAS_DIR
O instalador do JBoss: $JBOSS_INSTALADOR
A URL base que ser utilizada para o download do zip do JBoss: $JBOSS_URL_INSTALADOR
O diretrio que ser construdo pela extrao do JBoss: $JBOSS_DIR
O link simblico para o diretrio de instalao: $JBOSS_LINK
Cria a funo ok_ou_falha que verificar se houve erro na execuo do comando anterior e, em caso positivo, abortar a execuo do mesmo;
Cria o diretrio $INSTALADOR_DIR e efetua a mudana para ele (mkdir -p ...);
Baixa, caso no existam, o zip de instalao do JBoss e o arquivo que contm seu checksum ($JBOSS_INSTALADOR.md5) redirecionando a sada do comando para
$LOG;
Verifica o resultado do comando anterior e, em caso de insucesso, aborta a continuao do script informando a ocorrncia de um erro;
Testa o md5sum do $JBOSS_INSTALADOR;
Verifica o resultado do comando anterior e, em caso de insucesso, aborta a continuao do script informando a ocorrncia de um erro;
Cria o diretrio $FERRAMENTAS_DIR e efetua a mudana para ele (mkdir -p ...);
Remove o diretrio de instalao do JBoss (caso exista) e extrai o contedo o zip do JBoss (unzip ...);
Verifica o resultado do comando anterior e, em caso de insucesso, aborta a continuao do script informando a ocorrncia de um erro;
Remove (caso exista) e cria o link simblico $JBOSS_LINK apontando para o diretrio no qual foi extrado o JBoss (ln -s ...);
A criao deste link simblico simplificar o valor da varivel $JBOSS_HOME tornando mais fcil a substituio do JBoss por outra verso, caso precisemos realizar
esta tarefa no futuro;
Utiliza o grep para verificar se o contedo do arquivo $HOME/.bashrc j contm a localizao do $JAVA_HOME e, em caso negativo, adiciona esta localizao;
Cria a varivel $JAVA_HOME no caso dela j no estar configurada;
Utiliza o grep para verificar se o contedo do arquivo $HOME/.bashrc j foi atualizado com as configuraes das variveis de ambiente e, em caso positivo, encerra a
execuo do script;
Adiciona contedo ao arquivo ~/.bashrc ajustando o valor para algumas variveis de ambiente utilizadas pelo JBoss na sua execuo. As seguintes variveis de
ambiente so adicionadas:
$JBOSS_HOME, que guarda a localizao do diretrio de instalao do JBoss;
$PATH, que agora agregar a localizao para os binrios do JBoss ($JBOSS_HOME/bin);
Utiliza o sed para alterar o contedo do arquivo ~/.bashrc e substituir as strings FERRAMENTAS_DIR e JBOSS_LINK pelos valores correspondentes das variveis
$FERRAMENTAS_DIR e $JBOSS_LINK;
Verifica o resultado do comando anterior e, em caso de insucesso, aborta a continuao do script informando a ocorrncia de um erro;
A execuo do script instalar-jboss, e o carregamento das variveis de ambientes necessrias para a execuo do JBoss AS, podem ser realizadas atravs da execuo dos
comandos a seguir (observe a sada de execuo do instalar-jboss):

$ ./instalar-jboss
Baixando jboss-as-distribution-6.0.0.20100911-M5.zip... Ok
Baixando jboss-as-distribution-6.0.0.20100911-M5.zip.md5... Ok
Verificando o checksum do arquivo jboss-as-distribution-6.0.0.20100911-M5.zip... Ok
Extraindo jboss-as-distribution-6.0.0.20100911-M5.zip... Ok
Criando o link jboss para jboss-6.0.0.20100911-M5... Ok
Ajustando JAVA_HOME... Ok
Ajustando variveis de ambiente para o funcionando do JBoss... Ok
$ source ~/.bashrc
O script instalar-jboss poder ser executado quantas vezes for necessrio. Ele sempre apagar a instalao anterior do JBoss e refaz-la. S baixar o instalador do JBoss
caso ele no seja encontrado. Verificar se o checksum MD5 do instalador est correto e, s reajustar o contedo de ~/.bashrc caso isto j no tenha sido realizado.

http://a.ladoservidor.com/tutoriais/jbossas6-instala/index.html

3/7

23/9/2014

Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

Voc pode verificar se o ajuste do arquivo ~/.bashrc foi realizado com sucesso atravs da execuo do comando tail, com o parmetro -n 4 para solicitar apenas a
impresso das quatro ltimas linhas deste arquivo:

$ tail
export
export
export

-n 3 ~/.bashrc
JAVA_HOME=/usr/lib/jvm/java-6-openjdk
JBOSS_HOME=/home/lab_jbossas6/ferramentas/jboss
PATH=$JBOSS_HOME/bin:$PATH

Quando o comando source ~/.bashrc executado, o shell corrente refaz a leitura deste arquivo. Com isto, as variveis de ambiente ficam disponveis. Como este arquivo
lido a cada vez que se abre um shell no Linux, estas variveis estaro disponveis toda vez que isto ocorrer.
A partir deste ponto, estamos preparados para executar o JBoss. Isto o que faremos nos prximos passos.

Iniciando E Parando O JBoss


Da Forma Mais Bsica E Simples Possvel
A execuo do JBoss pode ser realizada atravs do comando a seguir (encontrado em $JBOSS_HOME/bin e que dever j estar no PATH em funo da execuo dos comandos
anteriores):

$ run.sh
Quando o comando acima invocado, o JBoss inicia sua execuo. Vrios servios sero levantados por ele e o log de execuo aparece na tela aberta.
Aps o JBoss subir todos os servios da configurao corrente e estar pronto para ser executado, uma mensagem como a apresentada a seguir, dever estar presente na console
de sua execuo:

19:07:46,198 INFO

[org.jboss.bootstrap.impl.base.server.AbstractServer] JBossAS [6.0.0.20100911-M5 "Neo"] Started in 30s:137ms

Este o sinal visvel pelo log, de que o JBoss foi iniciado.


Para finalizar a execuo do JBoss existem vrias alternativas. A mais simples delas, caso tenhamos acesso a console de sua execuo, pressionar, simultaneamente, as teclas
Ctrl e C (Ctrl+C). Desta forma, um sinal de shutdown ser enviado ao JBoss para que ele possa encerrar sua execuo, educadamente. Isto significa que ele solicitar, para cada
um dos servios em execuo, o seu encerramento. Quando tudo estiver consumado ;-), no log da console aberta deveremos notar uma frase como a apresentada a seguir:

19:08:53,226 INFO

[AbstractServer] Stopped: JBossAS [6.0.0.20100911-M5 "Neo"] in 3s:50ms

Colocando O JBoss Em Background


Talvez no queiramos que a execuo do JBoss esteja atrelada a uma console. Sendo assim, a forma correta de iniciarmos o JBoss seria atravs do comando a seguir:

$ JBOSS_CONSOLE=/tmp/jboss.log; nohup run.sh &> $JBOSS_CONSOLE &


Com isto, o log de execuo do JBoss (tanto para a sada padro quanto de erros) ser direcionado ao arquivo /tmp/jboss.log. O comando nohup desatrela a execuo do
comando run.sh do shell corrente e o &, ao final do comando, coloca a execuo do JBoss em background, liberando o shell corrente para a digitao de novos comandos.
Uma caracterstica desta forma de inicializao do JBoss que no veremos mais o seu log na tela aberta. Para podermos ento acess-lo, faremos uso do comando tail,
conforme demonstrado a seguir:

$ tail -f $JBOSS_CONSOLE
Outra caracterstica importante que, mesmo fechando o shell corrente, o JBoss continuar em execuo. Experimente isto! Feche a console corrente, e abra uma nova. Aps
fazer isto, verifique que o processo de execuo do JBoss ainda est ativo, atravs da chamada ao seguinte comando:

$ ps -ef | grep org\.jboss\.Main


A classe org.jboss.Main classe que inicializa o JBoss, e que executada na execuo do comando java atravs script run.sh.
Outra forma de verificar a execuo de uma aplicao Java, de uma forma mais portvel, utilizar o comando jps. Ele um utilitrio do JDK e, sendo assim, pode ser utilizado nos
diferentes sistemas operacionais que suportam o Java. O uso do jps, para saber se o JBoss est em execuo, exemplificado a seguir:

$ jps -l | grep org\.jboss\.Main


Agora que no temos mais acesso a console de execuo do JBoss, como encerr-lo? Alguns brutos diriam: kill -9 no process id (PID) do JBoss ;-). Mas, ns somos educados!
A menos que o JBoss no o seja conosco, ns no iremos utilizar o comando kill e, em seu lugar, invocaremos o comando a seguir:

$ shutdown.sh -S
Isto far com que o JBoss entenda que queremos tir-lo de campo ;-).
No Linux, mesmo que o JBoss j esteja em execuo, podemos coloc-lo em background. Para isto, os procedimentos so:
Iniciar o JBoss da forma mais bsica e simples possvel (run.sh). Como vimos, ele ficar atrelado a execuo da console corrente;
Digitar, simultaneamente, as teclas Ctrl e Z (Ctrl+Z). Isto far com que o processo em execuo do JBoss seja parado;
Executar o comando bg. Isto colocar a execuo do JBoss em background. Mas, trar o inconveniente de que qualquer log de sua execuo ainda aparecer na tela da
console aberta.
Execute os procedimentos acima antes de prosseguir!

Permitindo O Acesso Para Alm De Localhost


Por medida de segurana o JBoss no permite, nas formas de inicializao que foram apresentadas anteriormente, que ocorra o acesso aos servios levantados por ele, fora de
localhost. Isto significa, por exemplo, que no conseguiriamos acessar as interfaces administrativas do JBoss a partir de outra mquina. Como testar isto? Existem algumas
formas. Uma delas observar que portas esto sendo utilizadas pelo processo do JBoss, como apresentado no tpico "Verificando as portas utilizadas pelo JBoss". Execute os
comandos daquele tpico e depois retorne a este.
Pelo que podemos observar, por padro todas as portas TCP abertas pelo JBoss so acessveis apenas pelo endereo IP 127.0.0.1 (localhost). Logo, tirando a prpria mquina
que executa o JBoss, nenhuma outra poder acessar seus servios.
Liberar o acesso ao JBoss para outras mquinas, implica em reinicializ-lo com um parmetro que informe que ele dever se ligar a uma interface de rede que tenha um IP
acessvel por outras mquinas, ou, que ele dever se ligar a todas as interfaces de rede. Estas tarefas podem ser realizadas atravs do parmetro de inicializao "-b
<IP_OU_NOME>". Vamos ento parar o JBoss em execuo e levant-lo novamente, com este parmetro:

$ shutdown.sh -S; tail -f $JBOSS_CONSOLE

http://a.ladoservidor.com/tutoriais/jbossas6-instala/index.html

4/7

23/9/2014

Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

Ao perceber que o JBoss foi finalizado com sucesso atravs da observao do log, damos um Ctrl+C na execuo do tail e reinicializamos o JBoss:

$ JBOSS_CONSOLE=/tmp/jboss.log; nohup run.sh -b 0.0.0.0 &> $JBOSS_CONSOLE &


Agora, pelo uso do parmetro "-b 0.0.0.0" passado ao run.sh, estamos solicitando ao JBoss que ele entre em execuo aguardando conexes oriundas de qualquer uma de
suas interfaces de rede.
Aps reexecutar o comando que nos possibita averiguar as portas utilizadas pelo JBoss (netstat -tulpn | grep $(jps -l | grep org\.jboss\.Main | cut -d
" " -f 1)), poderemos observar um resultado semelhante ao apresentado a seguir (so mostradas apenas algumas linhas):

tcp
tcp
tcp
tcp

0
0
0
0

0
0
0
0

0.0.0.0:8080
0.0.0.0:8083
0.0.0.0:5500
0.0.0.0:4444

0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*

LISTEN
LISTEN
LISTEN
LISTEN

13415/java
13415/java
13415/java
13415/java

Vendo a sada apresentada, notamos que conexes as portas 8080, 8083, etc, podem ser realizadas a partir de qualquer uma das interfaces de rede. Isto identificado na sada
pelo nmero do IP apresentado antes do nmero da porta: "0.0.0.0".
Podemos testar o acesso a uma porta servida pelo JBoss, atravs do comando telnet, como exemplificado a seguir: (Substitua o IP apresentado por um IP vlido em tua mquina,
diferente do IP 127.0.0.1.)

$ telnet 187.25.148.177 8080


Trying 187.25.148.177...
Connected to 187.25.148.177.
Escape character is '^]'.
^]Connection closed by foreign host.
Se desejssemos que o JBoss se ligasse apenas a uma interface de rede especfica informaramos, no lugar de "-b 0.0.0.0", o IP ou o nome da mquina associada a ele (pelo
arquivo /etc/hosts ou pelo DNS). Por exemplo, -b 192.168.2.101.

Colocando Uma Instncia Diferente Em Execuo


Uma instncia de JBoss, uma configurao em execuo. O JBoss, ao ser instalado, vem com diferentes configuraes e cada uma delas localizada no diretrio
$JBOSS_HOME/server, conforme apresentado na sada do comando a seguir:

$ tree -L 1 -d $JBOSS_HOME/server
/home/lab_jbossas6/ferramentas/jboss/server
all
default
jbossweb-standalone
minimal
osgi
standard
A sada acima apresenta 6 configuraes distintas. Por padro, quando no especificado que configurao ser executada, o jboss levantar a "default".
Cada configurao, possui um conjunto prprio de diretrios e arquivos. Por exemplo, na configurao "default", temos os seguintes diretrios no primeiro nvel:

$ tree -L 1 -d $JBOSS_HOME/server/default
/home/lab_jbossas6/ferramentas/jboss/server/default
conf
data
deploy
deployers
lib
log
tmp
work
O escopo deste tpico no abrange a explicao de cada um destes diretrios. Isto abordado em outra parte do treinamento "JBoss AS - Instalao, configurao e monitorao
bsica (32h) (JBAS-1)". Entretanto, aqui que informamos que, para levantar uma instncia diferente de JBoss, o parmetro "-c <configuracao>" deve ser passado ao script
run.sh. Devemos tambm notar que "run.sh" ou "run.sh -c default" significam a mesma coisa. Para testar o uso deste parmetro, vamos finalizar a instncia corrente:

$ shutdown.sh -S; tail -f $JBOSS_CONSOLE


Agora, vamos iniciar uma instncia diferente do JBoss, a "minimal":

$ run.sh -c minimal
Podemos observar que esta instncia sobe em bem menos tempo que a "default". D um Ctrl+C em sua console para finaliz-la.
Tambm foge do escopo deste tpico as explicaces para as configuraes de JBoss. Mais informaes sobre isto podem ser obtidas no treinamento "JBoss AS - Instalao,
configurao e monitorao bsica (32h) (JBAS-1)".

Colocando Mais De Uma Instncia Em Execuo


possvel subir vrias instncias do JBoss ao mesmo tempo. Basicamente, existem duas alternativas para isto: utilizar um IP diferente para cada instncia ou, utilizar um conjunto
de portas diferente para cada uma delas.
A alternativa mais comum para administradores de servidores Linux, aps terem conhecido o uso do parmetro "-b <IP_OU_NOME>", discutido no tpico anterior, realizar a
criao de uma interface de rede (virtual ou no) e levantar cada instncia de JBoss num IP especfico. Esta alternativa entretanto, exige o domnio de comandos do Linux. A outra
soluo, utilizar portas diferentes para o JBoss, no exige conhecimentos especficos de Linux e pode ser aplicada em diferentes sistemas operacionais.
Atravs De Portas Diferentes
A execuo de mais de uma instncia de JBoss atravs do uso de um conjunto diferente de portas, para cada uma delas, realizada na verso 6 pelo uso de uma propriedade de
sistema, passado para a JVM que executar a instncia.
O procedimento bem simples. Uma segunda instncia baseada em "default" poder subir da seguinte forma:
Copiamos o contedo de "default" para outro diretrio, tambm abaixo de $JBOSS_HOME/server/, com o nome que desejarmos. Por exemplo: "instancia2";
Executamos o run.sh de "instancia2" informando a propriedade de sistema com o parmetro "-Dpropriedade=valor";
Estes so os comandos que iro criar "intancia2" e coloc-la em execuo, ao mesmo tempo em que ser realizada a inicializao da instncia "default":

$ bash -c '
cp -r $JBOSS_HOME/server/default $JBOSS_HOME/server/instancia2

http://a.ladoservidor.com/tutoriais/jbossas6-instala/index.html

5/7

23/9/2014

Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

nohup run.sh &> /tmp/jboss.default.log &


nohup run.sh -c instancia2 -Djboss.service.binding.set=ports-01 &> /tmp/jboss.instancia2.log &
'
Para parar a segunda instncia, podemos executar o seguinte comando:

$ shutdown.sh -S -s service:jmx:rmi:///jndi/rmi://localhost:1190/jmxrmi
Nos parmetros passados ao shutdown.sh, alm do -S que j conhecamos, desta vez tambm informamos -s
service:jmx:rmi:///jndi/rmi://localhost:1190/jmxrmi. Isto significa que queremos parar o JBoss que est sendo executado localmente, enviando um comando
que ser transmitido a porta 1190 do JBoss em execuo. Por padro, quando no informamos estes parmetros/valores, como se estivssemos escrito shutdown.sh -S -s
-s service:jmx:rmi:///jndi/rmi://localhost:1090/jmxrmi (1090 a porta utilizada na configurao default).
Quando utilizamos o valor ports-01 para a propriedade jboss.service.bind.set cada uma das portas utilizadas pela configurao default (sem o uso desta
propriedade) tem o seu valor incrementado de 100. Se utilizarmos o valor ports-02, ao valor padro somado 200, e assim por diante... Podemos observar isto pelo uso do
netstat:
Obtendo as portas utilizadas pela primeira instncia (ordenando e mostrando apenas as seis primeiras linhas da sada gerada):

netstat -tulpn | grep $(jps -l | grep org\.jboss\.Main | cut -d " " -f 1) | sort | head -n6
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp
0
0 127.0.0.1:1090
0.0.0.0:*
LISTEN
2430/java
tcp
0
0 127.0.0.1:1091
0.0.0.0:*
LISTEN
2430/java
tcp
0
0 127.0.0.1:1098
0.0.0.0:*
LISTEN
2430/java
tcp
0
0 127.0.0.1:1099
0.0.0.0:*
LISTEN
2430/java
tcp
0
0 127.0.0.1:3873
0.0.0.0:*
LISTEN
2430/java
tcp
0
0 127.0.0.1:4446
0.0.0.0:*
LISTEN
2430/java
Obtendo as portas utilizadas pela segunda instncia (ordenando e mostrando apenas as seis primeiras linhas da sada gerada):

$ netstat -tulpn | grep $(jps -lm | grep org\.jboss\.Main.*ports-01


(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp
0
0 127.0.0.1:1190
0.0.0.0:*
tcp
0
0 127.0.0.1:1191
0.0.0.0:*
tcp
0
0 127.0.0.1:1198
0.0.0.0:*
tcp
0
0 127.0.0.1:1199
0.0.0.0:*
tcp
0
0 127.0.0.1:3973
0.0.0.0:*
tcp
0
0 127.0.0.1:4546
0.0.0.0:*

| cut -d " " -f 1) | sort | head -n6


LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN

2822/java
2822/java
2822/java
2822/java
2822/java
2822/java

O comando acima utiliza o -lm como argumento passado ao jps. O parmetro -m diz ao jps que ele dever tambm imprimir os argumentos passados para o mtodo main da
classe Java que est sendo executada (org.jboss.Main). Sendo assim, podemos ento utilizar o grep para saber que estamos lidando com o conjunto de portas ports-01, ao
invs do default e ento, descobrirmos que portas so utilizados por este conjunto. Observe que, nesta instncia, todas as portas apresentadas tem seu valor incrementado de 100
(em relao a primeira).
Atravs De IPs Diferentes
Executar outra instncia do JBoss atravs de IPs diferentes j foi explicado. No mais novidade que o parmetro "-b <IP_OU_NOME>", passado ao run.sh, possibilita a
execuo de uma outra instncia do JBoss num IP diferente mas, escutando o mesmo conjunto de portas. A questo : e se tivermos apenas uma interface de rede, por exemplo, a
eth0? Bem, neste caso, se no quisermos mesmo utilizar um conjunto diferente de portas, a soluo criar uma interface de rede virtual.
Uma interface de rede virtual pode ser criada no linux com o comando ifconfig. Supondo que estamos na rede 192.168.1.0 e que o IP 192.168.1.2 esteja disponvel, o comando
a seguir criaria a interface virtual eth0:0:

$ ifconfig eth0 add 192.168.1.2 netmask 255.255.255.0


Agora, teramos uma interface de rede virtual, associada a mesma placa de rede mas com um IP diferente e, com isto, poderamos iniciar o JBoss neste novo IP atravs de
run.sh -b 192.168.1.2. No haveria nenhum problema nesta abordagem e nem conflitos no uso de portas.
Para remover a interface virtual o mesmo ifconfig poderia ser utilizado, informando-se os parmetros abaixo:

$ ifconfig eth0 del 192.168.1.2

Verificando As Portas Utilizadas Pelo JBoss


O comando netstat possibilita-nos averiguar que portas so utilizadas por um processo em execuo. Para test-lo, caso o JBoss no esteja no ar, vamos inici-lo:

$ JBOSS_CONSOLE=/tmp/jboss.log; nohup run.sh &> $JBOSS_CONSOLE &


Agora, a partir da execuo do comando a seguir, solicitaremos ao netstat que nos informe que portas esto sendo utilizadas pelo PID do JBoss:

$ netstat -tulpn | grep $(jps -l | grep org\.jboss\.Main | cut -d " " -f 1) | sort
A linha acima merece algumas explicaes! Nela, o netstat est sendo executado para imprimir a informao de todos os processos em execuo do usurio corrente. Mas, ns
s queremos as informaes do processo que executa a JVM do JBoss (jps -l | grep org\.jboss\.Main). A partir do resultado obtido com este comando, queremos
pegar o PID do processo. Em sua sada j temos isto, mas queremos apenas um nmero, que representado pelo primeiro campo da sada do jps. Logo, utilizamos o comando
cut para obt-lo. Este nmero passado ao grep que, por sua vez, recebe como entrada, a sada do netstat filtrando assim, apenas as portas utilizadas pelo JBoss (colhemos
da sada do netstat apenas os processo com o PID do mesmo). Para ter uma sada ordenada, utilizamos o comando sort.
A sada do comando executado obviamente varia entre mquinas diferentes mas, dever ser algo prximo ao apresentado abaixo:

(Not all processes could be identified, non-owned process info


will not be shown, you would have to be root to see it all.)
tcp
0
0 127.0.0.1:1090
0.0.0.0:*
tcp
0
0 127.0.0.1:1091
0.0.0.0:*
tcp
0
0 127.0.0.1:1098
0.0.0.0:*
tcp
0
0 127.0.0.1:1099
0.0.0.0:*
tcp
0
0 127.0.0.1:3873
0.0.0.0:*
tcp
0
0 127.0.0.1:4446
0.0.0.0:*
tcp
0
0 127.0.0.1:4712
0.0.0.0:*
tcp
0
0 127.0.0.1:4713
0.0.0.0:*
tcp
0
0 127.0.0.1:4714
0.0.0.0:*

http://a.ladoservidor.com/tutoriais/jbossas6-instala/index.html

LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN

2430/java
2430/java
2430/java
2430/java
2430/java
2430/java
2430/java
2430/java
2430/java

6/7

23/9/2014
tcp
tcp
tcp
tcp
tcp
tcp
tcp

Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6


0
0
0
0
0
0
0

0
0
0
0
0
0
0

127.0.0.1:5445
127.0.0.1:5455
127.0.0.1:5500
127.0.0.1:5501
127.0.0.1:8009
127.0.0.1:8080
127.0.0.1:8083

0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*

LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN

2430/java
2430/java
2430/java
2430/java
2430/java
2430/java
2430/java

Podemos observar que, como no estamos executando o comando netstat como root, recebemos uma notificao deste comando informando que no veremos informaes de
outros processos que no sejam do usurio corrente (lab_jbossas6). Na quarta coluna, temos um par de valores IP:porta. A sexta coluna, onde para as conexes do tipo tcp est
escrito LISTEM, indica que tais IPs/portas esto aguardando conexes. A stima coluna nos informa o PID do processo que est escutando tal porta. Logo, neste exemplo, o PID
do JBoss de nr. 2340 e est escutando todas as portas listadas acima.

@ Lado Servidor
Pgina atualizada em 14/10/2010 s 10:39

http://a.ladoservidor.com/tutoriais/jbossas6-instala/index.html

7/7

You might also like