Retirar arquivos .properties do deploy

Caros, boa tarde!

Vejam se podem me ajudar:

Tenho um sistema em JAVA JEE usando puramente Servlet e JSP, o qual possuí arquivos ?.properties? para configurar e internacionalizar a aplicação.

Atualmente preciso gerar um DEPLOY para cada ambiente (Produção, Homologação, Teste e Desenvolvimento), pois os arquivos .properties possuem dados específicos a cada um. Entretanto está é uma atividade inviável ao cliente, pois o controle de versão é maior a os programadores envolvidos no mesmo ficam cada vez mais passivos de erros. Ex.: Fazer alterações em .properties de desenvolvimento e esquecer de replicar para os demais ambientes, entre outros.

Eu preciso gerar um único DEPLOY e para isso, precisaria que estes arquivos ?.properties? estivessem em um diretório físico em cada ambiente, e a aplicação referenciasse eles. Ou seja, não faria mais parte dos DEPLOYES.

Atuamente, a grosso modo funciona assim:

.JSP => TagLib.tld => Classe.java => java.util.ResourceBundle.java => getData("bundle");

Onde ?bundle? é o nome que referencia o ProjetoBundle_pt_BR.properties.

Porém, em momento algum há o endereço do ?ProjetoBundle_pt_BR.properties? explicito. Ele assume que está no classpath da aplicação.

Há alguma maneira de fazer isso sem mudar muito a arquitetura do sistema?

Digo isto porquê pelo que pesquisei, há uma maneira usando a classe ?java.util.Properties? e seu método ?load(new FileInputStream(?<endereco do arquivo>?));?, más não quero mudar a classe, precisaria continuar com a Bundle.

Alguma sugestão de como posso resolver isto?

Agradeço desde já!

Bruno Ambrozio.

Twitter: @bambrozio.
Skype: b.ambrozio
MSN: b.ambrozio@hotmail.com
E-mail/G-talk: b.ambrozio@gmail.com

Bom galera, já faz um tempo que fiz esta pergunta, acabei resolvendo naquela época… Mas, só pra não deixar o post sem resposta, eu mesmo vou respondê-lo…

Bom, descobri que existem duas maneiras de resolver este problema:

  • Configurar o MANIFEST.MF do META-INF do projeto
  • Setar no arquivo de configuração do seu servlet conteiner o endereço do diretório que deseja colocar no class path da aplicação.

No meu caso, adotei a segunda. Como estava usando o Apache Tomcat, editei a variável “shared.loader=” acrescentando o endereço do diretório onde estavam meus arquivos de internacionalização. Ualá! Problema resolvido!

[]'s
Bruno Ambrozio.

Nossa, disse que setei a variave “shared.loader=”, mas não disse onde encontrá-la… bom, ela faz parte do documento “catalina.properties” do tomcat. ( ~/apache-tomcat-7.0.4/conf/catalina.properties)

[]'s
Bruno Ambrozio.