quinta-feira, 27 de agosto de 2009

Múltiplas instâncias do JBoss na mesma máquina.

Esta é uma dica simples porém muito útil.

Se você estiver desenvolvendo utilizando o JBossAS e precisar, por algum motivo, executar mais de uma instância na mesma máquina para testes, existe uma maneira muito fácil de fazer isso.

No diretório $JBOSS_HOME/server duplique o perfil que você quer subir duas vezes:

   cp -rf default node1
   cp -rf default node2

Em seguida ajuste o range de portas para que as duas instancias subam sem conflitos.

Mas como assim ajustar o range de portas? você está dizendo que vou ter que alterar uma por uma?

É aí que o JBoss mostra que é um application server bem configurado =).

No arquivo jboss-service.xml dentro do diretório conf de cada profile existe uma tag comentada que já configura todo o range de portas de um perfil automaticamente.

Neste arquivo busque pela seguinte tag:

   
     ports-01
     ${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml
     
       org.jboss.services.binding.XMLServicesStoreFactory
     
   

Descomente-a. Ao fazer isso o perfil em questão irá usar o range de ports-01. Já existem também pré configurados o ranges ports-02 e ports-03.

Com tal configuração todas as portas do perfil alterado serão somadas em 100

Por exemplo, para acessar o jmx console ao invéz de usarmos a url http://localhost:8080/jmx-console usaremos http://localhost:8180/jmx-console.

Tal regra serve para todas as portas como as de ejb ou jndi.

No range o ports-02 o valor somado é 200 e o ports-03 é 300.

Agora que você modificou uma das instâncias pra usar um novo range de portas basta subí-las:

   $JBOSS_HOME/bin/run.sh -c node1
   $JBOSS_HOME/bin/run.sh -c node2

Caso você ainda precise de mais perfis rodando ao mesmo tempo uma alternativa é o uso de ips virtuais na máquina.

Assim cada instancia dê um bind em um ip diferente (usando o parametro -b no run.sh).

Existe também a possibilidade de serem criados mais ranges de porta. Simplesmente os adicione no arquivo sample-bindings.xml listado no trecho xml acima.

Espero ter te ajudado com a dica. =)