| 
				
				
					|  |  
					|  |  
					
				 
					|  |  
					|   |  
					|  |  
					|  |  
					|  |  
					|  |  
					|  |  
					|  |  
					|  |  
					|  |  
					|  |  
					| 
							
								| 6만원 이상 무료배송 |  
								|  |  
								| 주문하시는 총상품금액의 합계가
 6만원 이상일 경우
 택배비가 무료입니다.
 |  |  
					|  |  
					|  |  |  | 
	
		|  |  
		|  |  
		|  
				
					| [JAVA] ]DBCP Example (ManualPoolingDriverExample.java) |  |  
		|  |  
		|  
				
					| 작성자: 
						
							어라
						
						  
						
							작성일: 2009-07-07 09:39  
						
						조회: 18176  
						댓글: 0 |  |  
		|  |  
		| 
				
					| /* * 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.
 */
 
 import java.sql.DriverManager;
 import java.sql.Connection;
 import java.sql.Statement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
 //
 // Here are the dbcp-specific classes.
 // Note that they are only used in the setupDriver
 // method. In normal use, your classes interact
 // only with the standard JDBC API
 //
 import org.apache.commons.pool.ObjectPool;
 import org.apache.commons.pool.impl.GenericObjectPool;
 import org.apache.commons.dbcp.ConnectionFactory;
 import org.apache.commons.dbcp.PoolingDriver;
 import org.apache.commons.dbcp.PoolableConnectionFactory;
 import org.apache.commons.dbcp.DriverManagerConnectionFactory;
 
 //
 // Here's a simple example of how to use the PoolingDriver.
 // In this example, we'll construct the PoolingDriver manually,
 // just to show how the pieces fit together, but you could also
 // configure it using an external conifguration file in
 // JOCL format (and eventually Digester).
 //
 
 //
 // To compile this example, you'll want:
 //  * commons-pool.jar
 //  * commons-dbcp.jar
 // in your classpath.
 //
 // To run this example, you'll want:
 //  * commons-collections.jar
 //  * commons-pool.jar
 //  * commons-dbcp.jar
 //  * the classes for your (underlying) JDBC driver
 // in your classpath.
 //
 // Invoke the class using two arguments:
 //  * the connect string for your underlying JDBC driver
 //  * the query you'd like to execute
 // You'll also want to ensure your underlying JDBC driver
 // is registered.  You can use the "jdbc.drivers"
 // property to do this.
 //
 // For example:
 //  java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver \
 //       -classpath commons-collections.jar:commons-pool.jar:commons-dbcp.jar:oracle-jdbc.jar:. \
 //       ManualPoolingDriverExample
 //       "jdbc:oracle:thin:scott/tiger@myhost:1521:mysid"
 //       "SELECT * FROM DUAL"
 //
 public class ManualPoolingDriverExample {
 
 public static void main(String[] args) {
 //
 // First we load the underlying JDBC driver.
 // You need this if you don't use the jdbc.drivers
 // system property.
 //
 System.out.println("Loading underlying JDBC driver.");
 try {
 Class.forName("oracle.jdbc.driver.OracleDriver");
 } catch (ClassNotFoundException e) {
 e.printStackTrace();
 }
 System.out.println("Done.");
 
 //
 // Then we set up and register the PoolingDriver.
 // Normally this would be handled auto-magically by
 // an external configuration, but in this example we'll
 // do it manually.
 //
 System.out.println("Setting up driver.");
 try {
 setupDriver(args[0]);
 } catch (Exception e) {
 e.printStackTrace();
 }
 System.out.println("Done.");
 
 //
 // Now, we can use JDBC as we normally would.
 // Using the connect string
 //  jdbc:apache:commons:dbcp:example
 // The general form being:
 //  jdbc:apache:commons:dbcp:
 //
 
 Connection conn = null;
 Statement stmt = null;
 ResultSet rset = null;
 
 try {
 System.out.println("Creating connection.");
 conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:example");
 System.out.println("Creating statement.");
 stmt = conn.createStatement();
 System.out.println("Executing statement.");
 rset = stmt.executeQuery(args[1]);
 System.out.println("Results:");
 int numcols = rset.getMetaData().getColumnCount();
 while(rset.next()) {
 for(int i=1;i<=numcols;i++) {
 System.out.print("\t" + rset.getString(i));
 }
 System.out.println("");
 }
 } catch(SQLException e) {
 e.printStackTrace();
 } finally {
 try { rset.close(); } catch(Exception e) { }
 try { stmt.close(); } catch(Exception e) { }
 try { conn.close(); } catch(Exception e) { }
 }
 
 // Display some pool statistics
 try {
 printDriverStats();
 } catch (Exception e) {
 e.printStackTrace();
 }
 
 // closes the pool
 try {
 shutdownDriver();
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 
 public static void setupDriver(String connectURI) throws Exception {
 //
 // First, we'll need a ObjectPool that serves as the
 // actual pool of connections.
 //
 // We'll use a GenericObjectPool instance, although
 // any ObjectPool implementation will suffice.
 //
 ObjectPool connectionPool = new GenericObjectPool(null);
 
 //
 // Next, we'll create a ConnectionFactory that the
 // pool will use to create Connections.
 // We'll use the DriverManagerConnectionFactory,
 // using the connect string passed in the command line
 // arguments.
 //
 ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,null);
 
 //
 // Now we'll create the PoolableConnectionFactory, which wraps
 // the "real" Connections created by the ConnectionFactory with
 // the classes that implement the pooling functionality.
 //
 PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory,connectionPool,null,null,false,true);
 
 //
 // Finally, we create the PoolingDriver itself...
 //
 Class.forName("org.apache.commons.dbcp.PoolingDriver");
 PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
 
 //
 // ...and register our pool with it.
 //
 driver.registerPool("example",connectionPool);
 
 //
 // Now we can just use the connect string "jdbc:apache:commons:dbcp:example"
 // to access our pool of Connections.
 //
 }
 
 public static void printDriverStats() throws Exception {
 PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
 ObjectPool connectionPool = driver.getConnectionPool("example");
 
 System.out.println("NumActive: " + connectionPool.getNumActive());
 System.out.println("NumIdle: " + connectionPool.getNumIdle());
 }
 
 public static void shutdownDriver() throws Exception {
 PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
 driver.closePool("example");
 }
 }
 
 
 
 
 
 |  |  
		|  |  
		|  |  
		|  |  
		| * 관련 댓글 한말씀 부탁합니다. |  
		|  |  |