terça-feira, 15 de janeiro de 2013

Lendo arquivos de propriedades de um .war ou .ear usando módulos no JBoss AS 7

Uma outra possibilidade para ler arquivos .properties no JBoss AS 7 é utilizar módulos. Desta forma, será possível obter o arquivo .properties utilizando um simples Thread.currentThread().getContextClassLoader().getResource("...") ou getResourceAsStream("...").

Os passos estão abaixo:

1. Crie um módulo com a seguinte estrutura de diretórios:

{jboss.home}/modules/propriedades/conf/main

2. Crie o arquivo module.xml em {jboss.home}/modules/propriedades/conf/main com o seguinte conteúdo

<module xmlns="urn:jboss:module:1.1" name="propriedades.conf">
    <resources>
        <resource-root path="arquivos"/>
    </resources>
</module>

3. Crie o diretório arquivos na estrutura do módulo:

{jboss.home}/modules/propriedades/conf/main/arquivos

4. Adicionar o arquivo de propriedades na nova estrutura de diretórios, exemplo:

{jboss.home}/modules/propriedades/conf/main/arquivos/meuarquivo.properties

5. Adicionar o arquivo jboss-deployment-structure.xml no diretório WEB-INF da aplicação .war ([arquivo].war/WEB-INF/jboss-deployment-structure.xml) com o seguinte conteúdo:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
  <deployment>
    <dependencies>
        <module name="propriedades.conf" />
    </dependencies>
  </deployment>
</jboss-deployment-structure>

Note que propriedades.conf é o nome do módulo criado no passo 2.

Caso esteja utilizando um .ear, adicione o arquivo jboss-deployment-structure.xml no diretório META-INF

6. No código java, você poderá ler os atributos do arquivo .properties conforme abaixo:

Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("meuarquivo.properties"))
properties.get("nome-da-propriedade")

sexta-feira, 11 de janeiro de 2013

JBUG Brasil de volta!!!

Clique na imagem abaixo para acessar!

Como ler propriedades java no JBoss AS 7

Voltando ao blog depois de alguns anos sem novos posts. Creio que estou em dívida com ele :). Meu foco nos novos posts será adicionar conteúdo relacionado ao JBoss AS 7.x e novas versões que poderão vir deste servidor de aplicações.

Neste post específico, irei descrever formas de substituir o antigo properties-service.xml dos JBoss AS 4.x e 5.x para o JBoss AS 7.

A princípio, não encontrei nenhum serviço semelhante ao properties-service.xml, porém há diversas formas de contornar isto. Uma delas é passar diversos arquivos .properties em linha de comando durante a inicialização do JBoss.

  ./standalone.sh --properties=arquivo1.properties --properties=arquivo2.properties

Estas propriedades poderão ser lidas como System.getProperty("nome-da-sua-propriedade");

Poderia também ser passado via property no startup ou até mesmo na própria instância via Console Web.

  ./standalone.sh -Dproperty1=value1 -Dproperty2=value2

No próximo post, irei exemplificar outras formas de utilizar arquivos .properties no JBoss AS 7

Esta solução pode ser encontrada no fórum do jboss.org: https://community.jboss.org/message/750465