Se você está acostumado com a configuração do JBoss AS 4.x (baseado no Microkernel JMX do JBoss) e começou a trabalhar com a versão 5 deve estar, como eu no início, um pouco perdido para encontrar as principais configurações espalhadas pelos novos descritores de serviços (arquivos *-service/bean.xml) na nova estrutura do JBoss AS. Na nova versão boa parte dos arquivos de conf. foram alterados por conta da nova implementação do kernel do JBoss – agora chamado JBoss Microcontainer ou simplesmente JBossMC.
Neste post pretendo mostrar a localização e alguns trechos de configuração para alguns ajustes que considero importantes e que creio fazer parte do dia a dia de um Admin. de JBoss AS. Portanto meu objetivo neste post está longe de percorrer todas as mudanças e configurações da dessa versão do JBossAS!
1) Para começar mostro onde se encontra a configuração do serviço responsável pelo controle transacional do servidor – TransactionManager.
Descritor do serviço: $JBOSS_HOME/server/default/transaction-jboss-beans.xml
Uma propriedade que geralmente precisamos ajustar é o timeout da transação (lembrando que isso altera o timet global do AS)
Trecho de conf:
<property name="transactionTimeout">600</property> <!-- alterado para 10 min (600s). -->
<property name="objectStoreDir">${jboss.server.data.dir}/tx-object-store</property>
<property name="mbeanServer"><inject bean="JMXKernel" property="mbeanServer"/></property>
2) Agora o mecanismo responsável por “monitorar” o diretório de deploy e fazer o Hot Deployment é o HDScanner.
Descritor do serviço: $JBOSS_HOME/server/default/deploy/hdscanner-jboss-beans.xml
Trecho de conf:
<!-- Hotdeployment of applications -->
<property name="deployer"><inject bean="ProfileServiceDeployer"/></property>
<property name="profileService"><inject bean="ProfileService"/></property>
<property name="scanPeriod">5000</property> <!-- intervalo do scanner -->
<property name="scanThreadName">HDScanner</property>
</bean>
...
Para desabilitar o HDScanner basta renomear o descritor hdscanner-jboss-beans.xml para extensão .rej (ou remover o arquivo).
3) Outro importante serviço é o ServiceBindManager. Ele é responsável por configurar as portas de cada connector/invoker de acesso aos serviços/containers internos do JBoss.
Por exemplo o conector HTTP do JBossWEB atende por padrão na porta 8080, quando se deseja subir mais de uma instância num mesmo Host (JBoss em MultiHomed), temos duas alteranativas: (a) definir um endereço IP para cada instância (run.sh -c default -b x.x.x.x) ou (b) usar o ServiceBindManager para trocar as portas automaticamente durante o startup do AS.
Para informar ao JBoss como ele irá atribuir as portas aos conectores basta informarmos um propriedade à JVM na linha de comanda que inicia o servidor:
./run.sh -c default -Djboss.service.binding.set=ports-01
Em destaque o parâmetro que informa aos ServiceBindManager quel o conjunto de portas será atribuído aos conectores de cada serviço. Neste exemplo (ports-01) irá atribuir a porta 8180 ao conector HTTP por exemplo.
Descritor do serviço: $JBOSS_HOME/server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml
Trecho de conf:
<!-- Provides management tools with a ProfileService ManagementView
interface to the SBM and its components -->
<constructor>
<!-- The name of the set of bindings to use for this server -->
<parameter>${jboss.service.binding.set:ports-default}</parameter>
<!-- The binding sets -->
<parameter>
<set>
<inject bean="PortsDefaultBindings"/>
<inject bean="Ports01Bindings"/>
<inject bean="Ports02Bindings"/>
<inject bean="Ports03Bindings"/>
</set>
</parameter>
<!-- Base binding metadata that is used to create bindings for each set -->
<parameter><inject bean="StandardBindings"/></parameter>
</constructor>
</bean>
Como podemos ver, o JBoss fornece 4 conjuntos de portas prontos para uso. Os parâmetros que devem ser informados na propriedade da linha de comando são os seguintes:
- ports-default
- ports-01
- ports-02
- ports-03
Basicamente o ServiceBindManager adiciona 100 ao número padrão de cada porta, ou seja, para a porta HTTP padrão (8080) quando usamos o conjunto ports-01 ela passará a ser 8180.
4) O serviço de LOG do JBoss continua sendo o Log4j. Nesse serviço geralmente temos a necesside alterar somente o nível (DEBUG,INFO,WARN,ERROR,FATAL) de saída do LOG geral do AS conforme a necessidade do ambiente. Na versão 5 do JBoss podemos informar esse nível de log via uma outra propriedade do sistema passada via linha de comando:
./run.sh -c default -Djboss.server.log.threshold=DEBUG
Neste caso informamos que o nível de log do servidor será DEBUG (geralmente utilizado em ambiente de desenvolvimento).
Outros ajustes do Log4j continuam sendo feitas no descritor do serviço tais como a configuração de appenders e category.
Descritor do serviço: $JBOSS_HOME/server/default/conf/jboss-log4j.xml
Por enquanto ficamos com esses pontos da configuração do JBoss AS. Posteriormente falarei sobre a configuração de classloaders isolados em aplicações WEB.
Abaixo algumas referências ([1] e [2]) sobre as principais mudanças no AS 5 descritas no wiki oficial do JBoss.ORG.
Abraço!
________
Ref.
[1] http://community.jboss.org/wiki/JBossAS50xChangesFAQ
[2] http://community.jboss.org/wiki/JBossAS5FAQ