Java tutorial
/* Copyright (C) 2007 Flix Garca Borrego (borrego at gmail.com) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ package org.viafirma.util; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NameClassPair; import javax.naming.NamingEnumeration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Mtodos de utilidad para recuperar los parametros de configuracin de la aplicacin. * * @author Felix Garcia Borrego (borrego at gmail.com) */ public class ConfigUtil { private static ConfigUtil singleton; /** * Recupera una instancia del ConfigUtil. * @return */ public static ConfigUtil getInstance() { if (singleton == null) { singleton = new ConfigUtil(); } return singleton; } /** * Recupera el conjunto de propiedades que utiliza la aplicacin. * @param context * @return */ public String readConfigProperty(String property) { Context initCtx; try { initCtx = new InitialContext(); Context contextInit = (Context) initCtx.lookup("java:comp/env"); // recuperamos ahora todos los parametros JNDI que estan en el raiz de la aplicacin NamingEnumeration<NameClassPair> propiedadesJDNI = contextInit.list(""); while (propiedadesJDNI.hasMoreElements()) { NameClassPair propiedad = propiedadesJDNI.nextElement(); if (property.equalsIgnoreCase(propiedad.getName())) { // propiedad encontrada Object temp = contextInit.lookup(propiedad.getName()); if (temp instanceof String) { String valor = (String) temp; return valor; } } } } catch (Exception e) { throw new ExceptionInInitializerError( "No se pueden recuperar los parametros de configuracin. JNDI parece no estar disponible." + e.getMessage()); } log.fatal("No se pueden recuperar el parametro de configuracin " + property + " de configuracin. JNDI parece no estar disponible."); return null; } /** * Recupera el conjunto de propiedades que utiliza la aplicacin. * @param context * @return */ public Properties readConfigPropertes() { Properties properties = new Properties(); Context initCtx; try { initCtx = new InitialContext(); Context contextInit = (Context) initCtx.lookup("java:comp/env"); // recuperamos ahora todos los parametros JNDI que estan en el raiz de la aplicacin NamingEnumeration<NameClassPair> propiedadesJDNI = contextInit.list(""); while (propiedadesJDNI.hasMoreElements()) { NameClassPair propiedad = propiedadesJDNI.nextElement(); Object temp = contextInit.lookup(propiedad.getName()); if (temp instanceof String) { String valor = (String) temp; System.out.println("\t\t\t" + propiedad.getName() + "=" + valor); properties.put(propiedad.getName(), valor); } } } catch (Exception e) { log.fatal("No se pueden recuperar los parametros de configuracin. JNDI parece no estar disponible.", e); throw new ExceptionInInitializerError( "No se pueden recuperar los parametros de configuracin. JNDI parece no estar disponible." + e.getMessage()); } return properties; } /** * Sistema de Logs. */ private Log log = LogFactory.getLog(ConfigUtil.class); }