Acessando Arquivos Properties no JBoss AS 7.1.2 (JBoss EAP 6)

Postado em Atualizado em

Olá amigos,

Provavelmente todos nós já trabalhamos com arquivos .properties (Resource Bundle). Esses arquivos podem ser utilizados para internacionalização, guardar dados de conexão com banco de dados e muitas outras possibilidades.

É uma boa prática deixar as nossas aplicações independentes desses arquivos. Por exemplo, seu chefe lhe pediu para alterar a senha do banco de dados que está no arquivo database.properties e o mesmo está dentro da aplicação. Você teria que fazer um redeploy de toda a aplicação simplesmente para alterar esse parâmetro. Para evitar isso podemos configurar esses arquivos de propriedades como um módulos do JBoss AS 7.

O primeiro passo para conseguir esse resultado é criar a estrutura do módulo:

  JBOSS_HOME\modules\com\jbossdivers\main\properties\

No diretório propreties  coloque o arquivo .properties que será utilizado pela aplicação.

Eu criei um arquivo example.properties e adicionei o seguinte conteúdo:

 nome=Mauricio
 sobrenome=Magnani
 blog=JBossDivers - Mergulhando no Mundo JBoss

Agora, crie o arquivo module.xml que irá fazer referência ao diretório propreties:

<module xmlns="urn:jboss:module:1.1" name="com.jbossdivers">
  <resources>
    <resource-root path="properties"/>
  </resources>
</module>

Pronto a configuração no JBoss está finalizada.

Agora vamos criar uma aplicação para acessar as propriedades do arquivo example.properties.

Crie uma Servlet simples como abaixo:

@WebServlet(value="/AccessProps")
public class AccessProps extends HttpServlet{

  private static final long serialVersionUID = 1L;

  public void init()
  {
  }

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {

     Properties properties = new Properties();
     properties.load(Thread.currentThread().getContextClassLoader()
     .getResource("example.properties").openStream());

     response.setContentType("text/html");
     PrintWriter out = response.getWriter();
     String title = "My Props JBoss 7 ";
     String text = properties.getProperty("nome") + " " +
     properties.getProperty("sobrenome") + " " +
     properties.getProperty("blog");
     String docType =
     "<!doctype html public \"-//w3c//dtd html 4.0 " +
     "transitional//en\">\n";
     out.println(docType +
     "<html>\n" +
     "<head><title>" + title + "</title></head>\n" +
     "<body bgcolor=\"#F0F0F0 \">\n" +
     "<h1 align=\"center\">" + title + "</h1>\n" +
     "<h2 align=\"center\">" + text + "</h2>\n" +
     "</body></html>");

  }
  public void destroy()
  {
  }
}

Dentro do WEB-INF da aplicação crie o arquivo jboss-deployment-structure.xml e adicione o conteúdo abaixo:

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

Realize o deploy da aplicação e veja se as propriedades realmente foram acessadas:

Nos meus testes tudo funcionou perfeitamente🙂

Vou deixar aqui o projeto web utilizado nesse post.

Espero que tenha ajudado.

Abraços

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s