Java tutorial
/** * Copyright (C) 2008-2010, Squale Project - http://www.squale.org * * This file is part of Squale. * * Squale is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the * License, or any later version. * * Squale 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Squale. If not, see <http://www.gnu.org/licenses/>. */ package org.squale.welcom.outils.jdbc.wrapper; import java.sql.Connection; import java.sql.SQLException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.validator.GenericValidator; import org.squale.welcom.struts.util.WConstants; /** * Classe d'accs au pool de connection base de donnes. Les paramtres sont initialiss par la mthode initDataSource * Date de cration : (18/10/2001 16:41:32) * * @author: Cdric Torcq */ public final class ConnectionPool { /** logger */ private static Log logStartup = LogFactory.getLog("Welcom"); /** Retoune si la connexion est activ */ private static boolean initialized = false; /** Datasource retouv */ private static javax.sql.DataSource ds = null; /** * The application scope attribute under which our JNDI datasource is stored. */ /** JNDI : datasource */ private static String JNDI_DATASOURCE_KEY = ""; /** JNDI : Prefix */ private static String PROVIDER_URL = ""; /** JNDI : User */ private static String USER; /** JNDI : Password */ private static String PASSWD; /** * Commentaire relatif au constructeur ConnectionPool. */ public ConnectionPool() { super(); } /** * Returns a JDBC connection from a connection pool or other resource, to be used and closed promptly. * <p> * * @return JDBC connection from resource layer. * @exception SQLException on SQL or other errors. May wrap other exceptions depending on implementation. Will not * return null. */ public static final Connection getConnection() throws SQLException { try { /* Version JNDI */ /** **************************************************** */ if (ds == null) { // create parameter list to access naming system final java.util.Hashtable parms = new java.util.Hashtable(); try { Class.forName("com.ibm.websphere.naming.WsnInitialContextFactory"); parms.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"); } catch (final ClassNotFoundException e) { logStartup.info("Passage en mode compatibilit WAS 3.5 "); } // parms.put(javax.naming.Context.PROVIDER_URL, PROVIDER_URL); // access naming system final javax.naming.Context ctx = new javax.naming.InitialContext(parms); // get DataSource factory object from naming system ds = (javax.sql.DataSource) ctx.lookup(JNDI_DATASOURCE_KEY); } // use DataSource factory to get data server connection Connection conn = null; if (!GenericValidator.isBlankOrNull(USER)) { conn = ds.getConnection(USER, PASSWD); } else { conn = ds.getConnection(); } return conn; } catch (final Exception ex) { logStartup.error("ConnectionPool : Echec connexion : ", ex); if ((ex == null) || (ex.getMessage() == null)) { logStartup.info("Verifier la version de votre classes12.zip"); } return null; } } /** * Insrez la description de la mthode ici. Date de cration : (19/10/2001 08:33:16) * * @return java.lang.String */ public static final String getParameters() { final StringBuffer st = new StringBuffer(); st.append(" url : ").append(PROVIDER_URL).append(" - source : ").append(JNDI_DATASOURCE_KEY) .append(" - user/pwd : ").append(USER).append("/").append(PASSWD); return st.toString(); } /** * Initilisation de la datasource * * @param url : Chaine de connection JDBC (ex: jdbc:oracle:thin:@SERVEUR:POST:INSTANCE) * @param password : Mots de passe bd * @param login : Login BD */ public final static void initDataSource(final String url, final String password, final String login) { initialized = true; /* * String url = srvConfig.getInitParameter(WConstants.KEY_CONFIG_DATASOURCE_URL); PASSWD = * srvConfig.getInitParameter(WConstants.KEY_CONFIG_DATASOURCE_PASSWD); USER = * srvConfig.getInitParameter(WConstants.KEY_CONFIG_DATASOURCE_USER); */ PASSWD = password; USER = login; try { PROVIDER_URL = url.substring(0, url.indexOf("jdbc")); JNDI_DATASOURCE_KEY = url.substring(url.indexOf("jdbc")); logStartup.info("Connexion sur : " + PROVIDER_URL + JNDI_DATASOURCE_KEY); testConnection(); } catch (final Exception ex) { logStartup.info( "Pas de connexion BD dans le web.xml sous la clef : " + WConstants.KEY_CONFIG_DATASOURCE_URL); } } /** * @return Retoun vrai si la connexion JDBC est correcte */ private static boolean testConnection() { try { final Connection conn = getConnection(); logStartup.info("URL : " + conn.getMetaData().getURL()); logStartup.info("User : " + conn.getMetaData().getUserName()); return true; } catch (final Exception e) { logStartup.info("impossible d'tablir une connexion la base de donnes"); return false; } } /** * @return Vrai si la connection a la dateSource a t effectu */ public static boolean isInitalized() { return initialized; } }