Manual JBoss

download Manual JBoss

of 7

description

Manual JBoss

Transcript of Manual JBoss

  • 23/9/2014 Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

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

    Blog Tutoriais Vdeos Sobre

    Lado ServidorNotcias, idias, solues e servios em servidores deaplicaes, nuvens computacionais e tecnologiasassociadas.

    ltimas Notcias (@LadoServidor):

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

    ltima atualizao: 14/10/2010 s 10:39Comentrios: http://blog.ladoservidor.com/2010/07/tutorial-nstalando-iniciando-testando-e.html

    Checando os pr-requisitos para a instalaoInstalando um Java Development Kit (JDK)

    Instalando o OpenJDKInstalando o JDK da Sun

    Baixando e instalando o JBossIniciando e parando o JBoss

    Da forma mais bsica e simples possvelColocando o JBoss em backgroundPermitindo o acesso para alm de localhostColocando uma instncia diferente em execuoColocando mais de uma instncia em execuo

    Atravs de portas diferentesAtravs 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 palavraJBoss estaremos nos referindo ao JBoss AS 6.

    Checando Os Pr-Requisitos Para A InstalaoO 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), 1GB 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 qualquersituao, 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 64bits;

    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 serexecutadas 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 outrorepositrio. Isto tornou sua instalao um pouco mais complexa. Contudo, o objetivo desta mudana foi dar maior visibilidade a verso open source equivalente (o OpenJDK) quepode 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 -versionjava 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 -versionjavac 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 removessemose 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 -versionjava 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/javalrwxrwxrwx 1 root root 22 2010-10-11 11:18 /usr/bin/java -> /etc/alternatives/java$ ls -la /etc/alternatives/javalrwxrwxrwx 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

  • 23/9/2014 Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

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

    -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/javaopenjdk-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 suavez, 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 podeser 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 apenasdesejssemos 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 pacotesun-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 noUbuntu de acordo com os comandos a seguir:

    $ sudo bash -c 'add-apt-repository "deb http://archive.canonical.com/ lucid partner"apt-get updateapt-get install sun-java6-jdk sun-java6-pluginupdate-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 -versionjava 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 -versionjavac 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 -ljava-6-openjdk 1061 /usr/lib/jvm/java-6-openjdkjava-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-pluginupdate-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, averso de JDK de nossa escolha para a execuo do JBoss o OpenJDK.

    Baixando E Instalando O JBossVamos 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 laboratrioe 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, noslogaremos 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 detorn-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-jbosschmod +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

  • 23/9/2014 Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

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

    LOG=/tmp/$$.logINSTALADORES_DIR=~/instaladoresFERRAMENTAS_DIR=~/ferramentasJBOSS_INSTALADOR=jboss-as-distribution-6.0.0.20100911-M5.zipJBOSS_DIR=jboss-6.0.0.20100911-M5JBOSS_LINK=jbossJBOSS_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_falhamkdir -p $FERRAMENTAS_DIR && cd $FERRAMENTAS_DIRecho -n "Extraindo $JBOSS_INSTALADOR... "rm -rf $JBOSS_DIR; unzip $INSTALADORES_DIR/$JBOSS_INSTALADOR &> $LOGok_ou_falhaecho -n "Criando o link $JBOSS_LINK para $JBOSS_DIR... "rm -f $JBOSS_LINK; ln -s $JBOSS_DIR $JBOSS_LINKok_ou_falhagrep '^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 0echo -n "Ajustando variveis de ambiente para o funcionando do JBoss... "cat >> ~/.bashrc

  • 23/9/2014 Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

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

    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 aimpresso das quatro ltimas linhas deste arquivo:

    $ tail -n 3 ~/.bashrcexport JAVA_HOME=/usr/lib/jvm/java-6-openjdkexport JBOSS_HOME=/home/lab_jbossas6/ferramentas/jbossexport 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 JBossDa 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 comandosanteriores):

    $ 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 consolede 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 teclasCtrl 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 cadaum 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 docomando 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. Apsfazer 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 nosdiferentes 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 daconsole 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 delocalhost. Isto significa, por exemplo, que no conseguiriamos acessar as interfaces administrativas do JBoss a partir de outra mquina. Como testar isto? Existem algumasformas. Uma delas observar que portas esto sendo utilizadas pelo processo do JBoss, como apresentado no tpico "Verificando as portas utilizadas pelo JBoss". Execute oscomandos 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 mquinaque 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 IPacessvel 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". Vamos ento parar o JBoss em execuo e levant-lo novamente, com este parmetro:

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

  • 23/9/2014 Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

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

    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 desuas 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 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 13415/java tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 13415/java tcp 0 0 0.0.0.0:5500 0.0.0.0:* LISTEN 13415/java tcp 0 0 0.0.0.0:4444 0.0.0.0:* LISTEN 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 sadapelo 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 8080Trying 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 (peloarquivo /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 monitoraobsica (32h) (JBAS-1)". Entretanto, aqui que informamos que, para levantar uma instncia diferente de JBoss, o parmetro "-c " deve ser passado ao scriptrun.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 conjuntode portas diferente para cada uma delas.

    A alternativa mais comum para administradores de servidores Linux, aps terem conhecido o uso do parmetro "-b ", discutido no tpico anterior, realizar acriao 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 outrasoluo, 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 desistema, 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

  • 23/9/2014 Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

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

    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 -sservice:jmx:rmi:///jndi/rmi://localhost:1190/jmxrmi. Isto significa que queremos parar o JBoss que est sendo executado localmente, enviando um comandoque 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 destapropriedade) 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 donetstat:

    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 | 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:1190 0.0.0.0:* LISTEN 2822/java tcp 0 0 127.0.0.1:1191 0.0.0.0:* LISTEN 2822/java tcp 0 0 127.0.0.1:1198 0.0.0.0:* LISTEN 2822/java tcp 0 0 127.0.0.1:1199 0.0.0.0:* LISTEN 2822/java tcp 0 0 127.0.0.1:3973 0.0.0.0:* LISTEN 2822/java tcp 0 0 127.0.0.1:4546 0.0.0.0:* LISTEN 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 daclasse 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, aoinvs 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 ", passado ao run.sh, possibilita aexecuo 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, aeth0? 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 comandoa 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 derun.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 JBossO 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, nss 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, queremospegar 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 comandocut 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 (colhemosda 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:* 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 tcp 0 0 127.0.0.1:4712 0.0.0.0:* LISTEN 2430/java tcp 0 0 127.0.0.1:4713 0.0.0.0:* LISTEN 2430/java tcp 0 0 127.0.0.1:4714 0.0.0.0:* LISTEN 2430/java

  • 23/9/2014 Lado Servidor/Tutoriais/Instalando, iniciando, testando e parando o JBoss AS 6

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

    @ Lado ServidorPgina atualizada em 14/10/2010 s 10:39

    tcp 0 0 127.0.0.1:5445 0.0.0.0:* LISTEN 2430/java tcp 0 0 127.0.0.1:5455 0.0.0.0:* LISTEN 2430/java tcp 0 0 127.0.0.1:5500 0.0.0.0:* LISTEN 2430/java tcp 0 0 127.0.0.1:5501 0.0.0.0:* LISTEN 2430/java tcp 0 0 127.0.0.1:8009 0.0.0.0:* LISTEN 2430/java tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2430/java tcp 0 0 127.0.0.1:8083 0.0.0.0:* LISTEN 2430/java

    Podemos observar que, como no estamos executando o comando netstat como root, recebemos uma notificao deste comando informando que no veremos informaes deoutros 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 estescrito 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 PIDdo JBoss de nr. 2340 e est escutando todas as portas listadas acima.