The version of Apache log4j used by SoundHelix.
Clone
HTTPS:
git clone https://vervis.peers.community/repos/aEp6o
SSH:
git clone USERNAME@vervis.peers.community:aEp6o
Branches
Tags
- 1.3alpha-7
- CHAINSAW_2_SANDBOX_MERGE
- CORE_VERSION
- LEVEL_REPLACES_PRIORITY
- PREALPHA_1_3_AS_OF_2004_05_12
- PRE_CHAINSAW_MODEL_CONVERSION
- PRE_UGLI_MOVE
- TAG_CHAINSAW2_MOVE
- log4j-1.2.17
- log4j-1.2.17-rc1
- v1.3alpha8
- v1.3alpha8-temp
- v1_2_1
- v1_2_10-recalled
- v1_2_11
- v1_2_11_rc1
- v1_2_11rc3
- v1_2_12
- v1_2_12_rc1
- v1_2_12_rc2
- v1_2_12_rc3
- v1_2_12_rc4
- v1_2_12_rc5
- v1_2_12_rc6
- v1_2_13
- v1_2_13_rc1
- v1_2_13_rc2
- v1_2_13_site_update
- v1_2_14
- v1_2_14_maven
- v1_2_14_rc1
- v1_2_14_site_update
- v1_2_15
- v1_2_15_rc1
- v1_2_15_rc2
- v1_2_15_rc3
- v1_2_15_rc4
- v1_2_15_rc5
- v1_2_15_rc6
- v1_2_16
- v1_2_16_rc1
- v1_2_16_rc2
- v1_2_17
- v1_2_17-rc1
- v1_2_17_rc1
- v1_2_17_rc2
- v1_2_17_rc3
- v1_2_2
- v1_2_3
- v1_2_4
- v1_2_6
- v1_2_7
- v1_2_9
- v1_2_alpha0
- v1_2_alpha7
- v1_2beta1
- v1_2final
- v1_3alpha_1
- v1_3alpha_6
- v_1_0
- v_1_0_1
- v_1_0_4
- v_1_1
- v_1_1_1
- v_1_1_2
- v_1_1_3
- v_1_1_b1
- v_1_1b2
- v_1_1b3
- v_1_1b5
- v_1_1b6
- v_1_1b7
- v_1_2beta3
JNDIConnectionSource.java
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* Licensed 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.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
// PortableRemoteObject was introduced in JDK 1.3. We won't use it.
// import javax.rmi.PortableRemoteObject;
import javax.sql.DataSource;
/**
* The <id>JNDIConnectionSource</id> is an implementation of
* {@link ConnectionSource} that obtains a {@link javax.sql.DataSource} from a
* JNDI provider and uses it to obtain a {@link java.sql.Connection}. It is
* primarily designed to be used inside of J2EE application servers or
* application server clients, assuming the application server supports remote
* access of {@link javax.sql.DataSource}s. In this way one can take
* advantage of connection pooling and whatever other goodies the application
* server provides.
* <p>
* Sample configuration:<br>
* <pre>
* <connectionSource class="org.apache.log4j.jdbc.JNDIConnectionSource">
* <param name="jndiLocation" value="jdbc/MySQLDS" />
* </connectionSource>
* </pre>
* <p>
* Sample configuration (with username and password):<br>
* <pre>
* <connectionSource class="org.apache.log4j.jdbc.JNDIConnectionSource">
* <param name="jndiLocation" value="jdbc/MySQLDS" />
* <param name="username" value="myUser" />
* <param name="password" value="myPassword" />
* </connectionSource>
* </pre>
* <p>
* Note that this class will obtain an {@link javax.naming.InitialContext}
* using the no-argument constructor. This will usually work when executing
* within a J2EE environment. When outside the J2EE environment, make sure
* that you provide a jndi.properties file as described by your JNDI
* provider's documentation.
*
* @author <a href="mailto:rdecampo@twcny.rr.com">Ray DeCampo</a>
*/
public class JNDIConnectionSource
extends ConnectionSourceSkeleton {
private String jndiLocation = null;
private DataSource dataSource = null;
/**
* @see org.apache.log4j.spi.OptionHandler#activateOptions()
*/
public void activateOptions() {
if (jndiLocation == null) {
getLogger().error("No JNDI location specified for JNDIConnectionSource.");
}
discoverConnnectionProperties();
}
/**
* @see org.apache.log4j.db.ConnectionSource#getConnection()
*/
public Connection getConnection()
throws SQLException {
Connection conn = null;
try {
if(dataSource == null) {
dataSource = lookupDataSource();
}
if (getUser() == null) {
conn = dataSource.getConnection();
} else {
conn = dataSource.getConnection(getUser(), getPassword());
}
} catch (final NamingException ne) {
getLogger().error("Error while getting data source", ne);
throw new SQLException("NamingException while looking up DataSource: " + ne.getMessage());
} catch (final ClassCastException cce) {
getLogger().error("ClassCastException while looking up DataSource.", cce);
throw new SQLException("ClassCastException while looking up DataSource: " + cce.getMessage());
}
return conn;
}
/**
* Returns the jndiLocation.
* @return String
*/
public String getJndiLocation() {
return jndiLocation;
}
/**
* Sets the jndiLocation.
* @param jndiLocation The jndiLocation to set
*/
public void setJndiLocation(String jndiLocation) {
this.jndiLocation = jndiLocation;
}
private DataSource lookupDataSource()
throws NamingException, SQLException {
DataSource ds;
Context ctx = new InitialContext();
Object obj = ctx.lookup(jndiLocation);
// PortableRemoteObject was introduced in JDK 1.3. We won't use it.
//ds = (DataSource)PortableRemoteObject.narrow(obj, DataSource.class);
ds = (DataSource) obj;
if (ds == null) {
throw new SQLException("Failed to obtain data source from JNDI location " + jndiLocation);
} else {
return ds;
}
}
}