| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.log4j.db; |
| |
| import java.sql.Connection; |
| import java.sql.DriverManager; |
| import java.sql.SQLException; |
| |
| |
| /** |
| * The DriverManagerConnectionSource is an implementation of {@link ConnectionSource} |
| * that obtains the Connection in the traditional JDBC manner based on the |
| * connection URL. |
| * <p> |
| * Note that this class will establish a new Connection for each call to |
| * {@link #getConnection()}. It is recommended that you either use a JDBC |
| * driver that natively supported Connection pooling or that you create |
| * your own implementation of {@link ConnectionSource} that taps into whatever |
| * pooling mechanism you are already using. (If you have access to a JNDI |
| * implementation that supports {@link javax.sql.DataSource}s, e.g. within |
| * a J2EE application server, see {@link JNDIConnectionSource}). See |
| * <a href="#dbcp">below</a> for a configuration example that uses the |
| * <a href="http://jakarta.apache.org/commons/dbcp/index.html">commons-dbcp</a> |
| * package from Apache. |
| * <p> |
| * Sample configuration:<br> |
| * <pre> |
| * <connectionSource class="org.apache.log4j.jdbc.DriverManagerConnectionSource"> |
| * <param name="driver" value="com.mysql.jdbc.Driver" /> |
| * <param name="url" value="jdbc:mysql://localhost:3306/mydb" /> |
| * <param name="username" value="myUser" /> |
| * <param name="password" value="myPassword" /> |
| * </connectionSource> |
| * </pre> |
| * <p> |
| * <a name="dbcp">If</a> you do not have another connection pooling mechanism |
| * built into your application, you can use the |
| * <a href="http://jakarta.apache.org/commons/dbcp/index.html">commons-dbcp</a> |
| * package from Apache:<br> |
| * <pre> |
| * <connectionSource class="org.apache.log4j.jdbc.DriverManagerConnectionSource"> |
| * <param name="driver" value="org.apache.commons.dbcp.PoolingDriver" /> |
| * <param name="url" value="jdbc:apache:commons:dbcp:/myPoolingDriver" /> |
| * </connectionSource> |
| * </pre> |
| * Then the configuration information for the commons-dbcp package goes into |
| * the file myPoolingDriver.jocl and is placed in the classpath. See the |
| * <a href="http://jakarta.apache.org/commons/dbcp/index.html">commons-dbcp</a> |
| * documentation for details. |
| * |
| * @author <a href="mailto:rdecampo@twcny.rr.com">Ray DeCampo</a> |
| */ |
| public class DriverManagerConnectionSource extends ConnectionSourceSkeleton { |
| private String driverClass = null; |
| private String url = null; |
| |
| public void activateOptions() { |
| try { |
| if (driverClass != null) { |
| Class.forName(driverClass); |
| discoverConnnectionProperties(); |
| } else { |
| getLogger().error( |
| "WARNING: No JDBC driver specified for log4j DriverManagerConnectionSource."); |
| } |
| } catch (final ClassNotFoundException cnfe) { |
| getLogger().error("Could not load JDBC driver class: " + driverClass, cnfe); |
| } |
| } |
| |
| |
| /** |
| * @see org.apache.log4j.db.ConnectionSource#getConnection() |
| */ |
| public Connection getConnection() throws SQLException { |
| if (getUser() == null) { |
| return DriverManager.getConnection(url); |
| } else { |
| return DriverManager.getConnection(url, getUser(), getPassword()); |
| } |
| } |
| |
| |
| /** |
| * Returns the url. |
| * @return String |
| */ |
| public String getUrl() { |
| return url; |
| } |
| |
| |
| /** |
| * Sets the url. |
| * @param url The url to set |
| */ |
| public void setUrl(String url) { |
| this.url = url; |
| } |
| |
| |
| /** |
| * Returns the name of the driver class. |
| * @return String |
| */ |
| public String getDriverClass() { |
| return driverClass; |
| } |
| |
| |
| /** |
| * Sets the driver class. |
| * @param driverClass The driver class to set |
| */ |
| public void setDriverClass(String driverClass) { |
| this.driverClass = driverClass; |
| } |
| } |