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")

Um comentário:

Parov Hefe disse...

Para projetos de localização usando arquivos .properties, eu recomendo esta plataforma de tradução do softwares - https://poeditor.com