View Javadoc
1 /* ====================================================================
2 * License:
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * 3. The end-user documentation included with the redistribution,
17 * if any, must include the following acknowledgment:
18 * "This product includes software developed by
19 * Robert Half International (http://www.rhi.com/)."
20 * Alternately, this acknowledgment may appear in the software itself,
21 * if and wherever such third-party acknowledgments normally appear.
22 *
23 * 4. The names "Parc", "RHI", and "Robert Half International" must
24 * not be used to endorse or promote products derived from this
25 * software without prior written permission. For written
26 * permission, please contact pete.mckinstry@rhi.com.
27 *
28 * 5. Products derived from this software may not be called "PARC",
29 * nor may "PARC" appear in their name, without prior written
30 * permission of Robert Half International.
31 *
32 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
33 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
34 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
35 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
36 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
37 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
38 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
39 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
40 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
41 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
42 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43 * SUCH DAMAGE.
44 * ====================================================================
45 *
46 */
47 package com.rhi.architecture.db;
48
49 import com.rhi.architecture.config.ConfigurationException;
50 import com.rhi.architecture.logging.LogUtil;
51 import com.rhi.architecture.logging.Logger;
52
53 import java.sql.Connection;
54 import java.sql.SQLException;
55
56 import org.apache.commons.pool.ObjectPool;
57
58 /***
59 * Extends DBCP PoolingDataSource, providing a get method
60 * for the connection pool. This allows the DataSourceFactory
61 * to get the connection pool back & call close() on it to
62 * free all the connections.
63 *
64 * @author Pete McKinstry
65 * @copyright 2002, Robert Half Int'l., Inc. All rights reserved.
66 *
67 * @since 1.0
68 */
69 public class PoolingDataSource
70 extends org.apache.commons.dbcp.PoolingDataSource {
71
72 private Logger log = null;
73
74 /***
75 * Constructor
76 *
77 * @param pool Pool from which Connections will be
78 * retrieved.
79 *
80 * @since 1.0
81 */
82 public PoolingDataSource(ObjectPool pool) {
83 super(pool);
84 }
85
86 /***
87 * Return the connection pool that this datasource fronts.
88 * This is required to allow the DataSourceFactory to
89 * properly shut down the connection pool on application
90 * shutdown.
91 *
92 * @return ObjectPool
93 *
94 * @since 1.0
95 */
96 public ObjectPool getPool() {
97 return super._pool;
98 }
99
100 /***
101 * log details about data source.
102 *
103 */
104 public void logCurrentDetails() {
105 try {
106 log().trace(
107 "PoolingDataSource: active = " + getPool().getNumActive());
108 log().trace(
109 "PoolingDataSource: idle = " + getPool().getNumIdle());
110 log().error(
111 "not an error, just a stack trace\n",
112 new Throwable());
113 }
114 catch (NullPointerException e) {
115 // ignore
116 }
117 }
118
119 /***
120 * log() helper method
121 * @return Logger
122 */
123 public Logger log() {
124 if (log == null) {
125 try {
126 log = LogUtil.getLogger();
127 }
128 catch (ConfigurationException e) {
129 System.err.println("ConfigurationException loading logger. e = " +e);
130 }
131 }
132 return log;
133 }
134
135 /***
136 * helper method
137 * @return Connection
138 * @throws SQLException
139 * @see javax.sql.DataSource#getConnection()
140 */
141 public Connection getConnection() throws SQLException {
142 if (log().isTraceEnabled()) {
143 logCurrentDetails();
144 }
145 return super.getConnection();
146 }
147
148 }
This page was automatically generated by Maven