Distinguir ambientes de Desenvolvimento, Aceite/Homologação e Produção?
Aplicações comerciais, normalmente, passam por um período de desenvolvimento, programação, “bate-tecla”, etc. E em algum momento, a aplicação será TESTADA em um ambiente de Aceite/Homologação e, somente após essa fase, será implantada em um ambiente de Produção. Simples né?
Já vi muitos casos de que implementações requererem a alteração de informações em arquivos de propriedades para que seja gerado um artefato (EAR/WAR) para ser implantado em Aceite. E pior, essa mesma propriedade tendo um valor diferente para ambiente de Produção, tendo o desenvolvedor que alterar novamente o valor de uma propriedade antes de gerar o artefato para Produção.
Além disso ser um absurdo, pode acabar acarretando de o valor ir com valor referente ao ambiente de Aceite para o ambiente de Produção, causando alguns incovenientes com o Cliente.
Para solucionar isso, vai uma dica: capturar o conteúdo de um atributo “environmento/id” definido como “Ligação de Espaços de Nomes” no servidor de aplicação (aqui, será o IBM WebSphere Application Server V6).
Configurar Ligação de Espaços de Nomes no IBM WAS V6
O primeiro passo a ser dado para realizar a adição de uma Ligação de Espaços de Nomes, é autenticar no console de administração do Application Server específico com um “ID do Usuário” que tenha permissão para realizar a atividade, ou seja, ser um “Operador”, “Configurador” ou “Administrador”.
Após autenticado, clique em “Ambiente > Nomenclatura > Ligações de Espaço de Nomes”. A ligação pode ser adicionada em um dos escopos disponíveis (célula, nó ou servidor). Clique no botão “Novo”. Selecione o tipo “Cadeia”.

Os atributos “Identificador de Ligação” e “Nome do Espaço de Nomes” devem ter o valor “environment/id”. O atributo “Valor da Cadeia” deve ter o valor DEV para um ambiente de Desenvolvimento, HOM para um ambiente de Homologação ou PRD para um ambiente de Produção.

Implementar código para capturar “environment/id”
A implementação JAVA para capturar o conteúdo de “environment/id” é relativamente simples. Crie uma classe para implementar o Design Patterns chamado Service Locator e adicione o seguinte método.
public String getString(String envName) throws ServiceLocatorException {
String envEntry = null;
try {
envEntry = (String) ic.lookup(envName);
} catch (NamingException ne) {
throw new ServiceLocatorException(ne);
} catch (Exception e) {
throw new ServiceLocatorException(e);
}
return envEntry;
}
Este método fará o lookup no atributo no application server.
Em uma segunda classe, que possa representar suas “constantes” (qual tal o nome “CommonConstants”?), adicione o código abaixo:
private static final String ENVIRONMENT_NAME_KEY = "environment/id";
public static String ENVIRONMENT;
static {
try {
ENVIRONMENT = ServiceLocator.getInstance().getString(ENVIRONMENT_NAME_KEY);
System.out.println("ENVIRONMENT=" + ENVIRONMENT);
} catch (ServiceLocatorException e) {
System.err.println("Atributo \"environment/id\" não localizado no servidor. Assumindo ambiente PRD.");
ENVIRONMENT = "PRD";
}
}
Como em algum momento do seu código você utilizará a classe de constantes, o atributo estático ENVIRONMENT será preenchido com o valor definido no atributo “environmento/id”, e com isso, você poderá utilizar uma chamada como CommonConstants.ENVIRONMENT, sem se preocupar, ENFIM, com o ambiente que sua aplicação está implantada.
Bons sonhos.



É Fabioso isso nos poupa um bocado de trabalho, mas se meus problemas com Homolog, Dev e Prod fossem só estes… vc conhece nosso querido cliente né…heheh abraço e sucesso.