SQLServer、MySQLとoracleデータベース接続池を実現

6581 ワード

javax.sql.DataSource
インターフェース
はい、
tomcat
に使用されます
JNDI
接続池を実現
使用
DBCP
データベース接続を実現
使用
C 3 P 0
データベース接続を実現
接続池のデータ接続を使用しない
Class.forName
(
driver Name
)0
Connection conn=
Driver Manager.get Connection
(
url,user,pwd
)0
使用
Connection
オブジェクトをデータベースにアクセスする
インターフェース(DataSource)
javax.sql.DataSource
インターフェースはデータベースとの接続を確立することに責任があります.
javax.sql.DataSource
インターフェースを使って置換します
Driver Manager
を選択します
Connection
通過する
DataSource
獲得する
Connection
速力が速い
通過する
DataSource
獲得する
Connection
もう小包に包まれました.
close
方法はすでに修正されました.
JNDI(JavaNaming and Directory Interface)を使ってデータベース接続池を配置します.
tomcatの配置
1.
以下の構成はすべて
tomcat 5.5
以上のバージョン
2.
見つけました
tomcat
目次の
コンサート
フォルダの
context.xml
ファイル
3.
はい、
ノードに追加
メッセージ
type="javax.sql.DataSource"	
maxActive="100" maxIdle="30" maxWait="10000"	
username="sa" password="sa"	
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"	
url="jdbc:sqlserver://localhost:1433;databasename=     "/>
4.
はい、
tomcat

lib
ディレクトリに追加
JDBC
使用するドライバパッケージ
  以上の手順で名前を登録しました.
jdbc
を選択します.
cms

DataSource
  アプリケーションの
web.xml
に以下を追加します.

       
   jdbc/cms
   javax.sql.DataSource
   Container

  
web.xml
で構成しなくても大丈夫です.
データベース接続池から接続先を取得します.
//  JNDI          
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBConnection {
     //  Context、DataSource  Connection
     public static Connection getConn(){
         Connection con = null ;
              try {
	   Context ic=new InitialContext();
	   //    java:comp/env JavaEE    jdbc/cms DataSource  
           DataSource dataSource=(DataSource) ic.lookup("java:comp/env/jdbc/cms");
	   con = dataSource.getConnection();
	} catch (Exception e) {
	   e.printStackTrace();
	}
	return con ;
      }
} 
JNDIよくあるエラー
1.
org.apache.tomcat.dbcp.dbcp.SQLNestedException:Canot load JDBC driver class'come.mysql.jdbc.Driver'
       
jdbcドライババックをtomcatのlib下かウェブサイトのlib下に入れていません.
2.
javax.naming.Name NotFoundException:Name xxx is not bound in this Context
       
コードの中で取得するためのjndi名前(xxx)が存在するかどうかを確認します.
       
注意tomcatで取得するjndiの名前はjava:comp/envで始まる必要があります.
BaseDaoでは、データベースを使わないと注釈されています.
//    private static final String DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
//    private static final String URL="jdbc:sqlserver://localhost:1433;DatabaseName=call";
//    //        
//    private static final String USERNAME="sa";
//    private static final String PASSWORD="sa";
//    
    //  connection  
    protected Connection conn;
    //  PreparedStatement  
    protected  PreparedStatement pstmt;
    //  ResultSet  
    protected ResultSet rs;
    
    protected void getConnection() throws SQLException{
    	//       
		DataSource dataSource=DBConnection.getDataSource();
		//    
		this.conn=dataSource.getConnection();
//    	try {
//    		//    
//			Class.forName(DRIVER);
//			//  
//			conn=DriverManager.getConnection(URL,USERNAME,PASSWORD);
//			
//		} catch (ClassNotFoundException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}catch(SQLException e){
//			e.printStackTrace();
//		}
    }
DBCP配置データベース接続池を使用する
   1.
wwww.apache.org公式サイトからdbcpが必要なjarパッケージをダウンロードします.
          
以下のjarパッケージを含みます
               
commons-dbcp-1.4.jar
               commons-pool-1.5.jar
2.
jdbcを駆動して、上述の2つのjarファイルは同時にWEB-INFディレクトリの下のlib目の下に入れます.
3.
サイトの下に新規作成
properties
ファイル名は任意で、拡張子は
properties
4.
置いてもいいです
WEB-INF
ディレクトリまたはデータアクセスクラスと同じディレクトリの下で
      
properties
ファイルの内容は以下の通りです.
driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://localhost:1433;databasename=movie//movie     
username=sa
password=sa
initialSize=10
maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
DBCPを使ってデータベース接続を取得する.
/**
 *       DataSource  
 * @author Administrator
 *
 */
public class DataSourceUtil {
	private static DataSource dataSource;
	static{
		Properties p=new Properties();
		InputStream is=DataSourceUtil.class.getResourceAsStream("/dbcp.properties");//  
		try {
			p.load(is);
			dataSource=BasicDataSourceFactory.createDataSource(p);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	private DataSourceUtil(){	
	}
	public static DataSource getDataSource(){
		return dataSource;
	}
}
C 3 P 0を使ってデータベース接続池を配置する
   1.
wwww.sourceforg.netからc 3 p 0データベース接続池をダウンロードするにはjarファイルが必要です.
              
ダウンロードしたファイルc 3 p-0.9.1.22.jarとjdbcドライバjarファイルをウェブサイトWEB-INFディレクトリの下のlibディレクトリにコピーします.
   2.
はい、
src
ディレクトリの下にc 3 p 0.propertiesファイルを新規作成します.名前はこのために必要です.
     c 3 p 0.propertiesの内容は以下の通りです.
#    
c3p0.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
#     
c3p0.jdbcUrl=jdbc:sqlserver://localhost:1433;databasename=movie
#          
c3p0.user=sa
#        
c3p0.password=sa
#           
c3p0.minPoolSize=10
#           
c3p0.maxPoolSize=100
#            
c3p0.initialPoolSize=10
#            ( ),0   
c3p0.maxIdleTime=60
C 3 P 0を使ってデータベース接続を得る.
public class DataSourceUtil {
	private static DataSource dataSource;
	static{
		dataSource=new ComboPooledDataSource();
		/*
		//ComboPooledDataSource cpds=new ComboPooledDataSource();
		//try {
		//	cpds.setDriverClass("");
		//	cpds.setInitialPoolSize(10);
		//} catch (PropertyVetoException e) {
		//	// TODO Auto-generated catch block
		//	e.printStackTrace();
		//}*/
	    //         ,       set         		
	}	
	private DataSourceUtil(){	
	}
	public static DataSource getDataSource(){
		return dataSource;
	}
}
以上は3つの接続池を実現する方法です.
tomcat
にある
JNDI
の配合