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”.

Especificar o Tipo de Ligação

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.

Especificar as Propriedades da Página

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.