Configurando duas instâncias no JBoss para rodar na mesma máquina

Configurando duas instâncias no JBoss para rodar na mesma máquina

Quem já precisou rodar mais de uma instância no Jboss certamente já teve problemas como:

java.rmi.server.ExportException: Port already in use: 8080; nested exception is:
java.net.BindException: Address already in use: JVM_Bind

Este problema é muito comum para as portas padrões do JBoss, como por exemplo: 1098,1099,8009,8080,8083 e 4444.

Para resolver este problema, existe uma receita de bolo fácil de seguir!

1. Na instalação do JBoss, duplique a configuração all fazendo uma cópia do diretório. A cópia terá o nome all2.

2. Dentro do diretório $JBOSS_HOME/docs/examples/binding-manager do JBoss existe um arquivo chamado sample-bindings.xml. Este arquivo pode ser carregado na inicialização do JBoss para definir quais são as portas utilizadas pelo container. Vamos ver como fazer isto.

3. Para carregar o arquivo sample-bindings.xml, você deve habilitar o MBean que está dentro do arquivo jboss-service.xml de cada um das instancias (independente de ser minimal, default, all ou alguma customizada).

4. Edite o arquivo $JBOSS_HOME/server/all/conf/jboss-service.xml. Localize o MBean “org.jboss.services.binding.ServiceBindingManager”. Ele deverá estar comentado. Remova o comentário. Salve o arquivo.

5. Edite o arquivo $JBOSS_HOME/server/all2/conf/jboss-service.xml. Localize o MBean “org.jboss.services.binding.ServiceBindingManager”. Ele deverá estar comentado. Remova o comentário. Localize o elemento:

<attribute name=”ServerName”>ports-01</attribute>

6. Altere o valor de “ports-01” para “ports-02”. Salve o arquivo.

7. No arquivo sample-bindings.xml já existe 3 conjuntos diferentes de portas (<attribute name=”ServerName”>ports-xxx</attribute>)pré-configurados (ports-default, ports-01, ports-02).

8. Basta configurar o arquivo jboss-service.xml dentro da pasta conf de cada instancia (minimal, default, all) apontando para um “ServerName” diferente, ou seja, ports-default, ports-01 ou ports-02.

9. Execute cada uma das instâncias com os comandos:
“./run.sh -c all”
“./run.sh -c all2”