Esse tipo de variável de ambiente pode ser usado em servidores JavaEE em geral, ou seja: em servidores de servlets/EJB ou outros que suportem JNDI.
De volta aos servidores web, a vantagem que vejo desse tipo de parâmetro em relação aos parâmetros de contexto (<context-param/>) ou de filtros e servlets (<init-param/>) é que nesses casos é necessário que o arquivo web.xml seja alterado... ou seja: se você enviar um .war/.ear para ser disponibilizado, quem for disponibilizá-lo terá que alterar o arquivo web.xml que fica dentro do .war/.ear antes de colocá-lo no ar. Por outro lado, as variável de ambiente JNDI podem ser configuradas em arquivos de contexto ou ambientes de configuração externos. Por exemplo, para configurar um arquivo de contexto do Tomcat, usamos a entrada <Environment/>, conforme segue:
...Nesse caso o valor da variável poderia ser lido pela aplicação, por exemplo, com a seguinte classe:
<Environment name="com.wim.jgnuteca.disableAllMonitors" type="java.lang.String" value="true"/>
...
...
/**
*
*/
package com.wim.jgnuteca;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
* @author walter
*
*/
public class Config {
private static String getContextParamValue(String parameter) throws NamingException {
final Context ctx = new InitialContext();
return (String)ctx.lookup("java:comp/env/"+parameter);
}
private static String DISABLE_ALL_MONITORS="com.wim.jgnuteca.disableAllMonitors";
private static Boolean disableAllDTEMonitors=null;
public static boolean disableAllDTEMonitors(){
if(disableAllDTEMonitors == null){
try{
disableAllDTEMonitors=Boolean.valueOf(getContextParamValue(DISABLE_ALL_MONITORS));
} catch(Throwable t) {
disableAllDTEMonitors=false;
}
}
return disableAllDTEMonitors;
}
}
...
De fato essa classe poderia ser usada de forma genérica e lendo parâmetros de várias fontes. Teríamos então uma classe genérica de configuração independente do ambiente de execução da aplicação.
Nenhum comentário:
Postar um comentário