連接池、數據源、JNDI三者間的關系及用法


 

連接池:
連接池是由容器(比如Tomcat)提供的,用來管理池中的連接對象。
連接池自動分配連接對象並對閑置的連接進行回收。
連接池中的連接對象是由數據源(DataSource)創建的。
連接池(Connection Pool)用來管理連接(Connection)對象。

數據源:
數據源(DataSource)用來連接數據庫,創建連接(Connection)對象。
 java.sql.DataSource接口負責建立與數據庫的連接
 由Tomcat提供,將連接保存在連接池中。


JNDI(Java Naming and Directory Interface,Java命名和目錄接口):
在程序中使用JNDI獲取數據源。


通過數據源創建的連接對象被統一的放入到連接池中進行管理。


搞清楚三者的關系,然后進行下面的配置 : )

 

 

連接池的配置:

C3P0連接池在Spring的配置文件application.xml的配置:

<!-- 配置C3P0連接池: -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="${jdbc.driver}"/>
  <property name="jdbcUrl" value="${jdbc.url}"/>
  <property name="user" value="${jdbc.user}"/>
  <property name="password" value="${jdbc.password}"/>
 </bean>

 

 


數據源的配置與使用數據源的方法:

1、配置Tomcat的conf/context.xml
 <Resource name="jdbc/news"
              auth="Container"  type="javax.sql.DataSource"  maxActive="100"
              maxIdle="30" maxWait="10000" username="root"  password="Admin"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://127.0.0.1:3306/news"/>
  name=指定Resource的JNDI名稱
  auth=指定管理Resource的Manager(Container由容器創建和管理,Application由Web應用創建和管理)
  type=指定Resource的java類
  maxActive=指定連接池中處於活動狀態的數據庫連接的最大數量
  maxIdle=指定連接池中處於空閑狀態的數據庫的最大數量
  maxWait=指定連接池中連接處於空閑的最長時間,超過這個時間會提示異常,取值為-1,表示可以無限期等待,單位為毫秒(ms)
 這里不要忘記:還需要將數據庫的驅動jar包添加到,Tomcat安裝目錄下的lib文件夾中。

2、使用JNDI獲取連接對象
 lookup(java:comp/env/數據源名稱");
 //java:comp/env/這是Java的語法要求,必須寫上。
 //這里的數據源名稱就是上面的jdbc/news,這個news是項目名。
 

 

3.編寫代碼獲取數據源

  // 獲取數據庫連接
  public Connection getConnection2() {
   try {
    //初始化上下文
    Context cxt=new InitialContext();
    //獲取與邏輯名相關聯的數據源對象
    DataSource ds=(DataSource)cxt.lookup("java:comp/env/jdbc/news");
    conn=ds.getConnection();
   } catch (NamingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   return conn;
  }

 

還有一點要注意:測試連接是否成功,需要在jsp頁面輸出connection,而不是在java類中Run As,應為數據源配置在Tomcat中需要把Web項目放入Tomcat容器中運行。jsp頁面代碼如下:

示例:

 

<%
 BaseDao baseDao=new BaseDao();
 Connection connection=baseDao.getConnection2();

 %>

<%=connection %>

 

 

 在Tomcat中的配置

配置在:context.xml文件內


F:\apache-tomcat-7.0.68-windows-x64\apache-tomcat-7.0.68\conf\context.xml


---------mySQL
<Resource name="jdbc/news"
auth="Container" type="javax.sql.DataSource"
maxActive="100"
maxIdle="30" maxWait="10000" username="root"
password="Admin001"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/news"/>

 


----------Oracle
<Resource name="jdbc/orcl"
auth="Container" type="javax.sql.DataSource"
maxActive="100"
maxIdle="30" maxWait="10000" username="wuyong"
password="Admin001"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"/>

 


使用JNDI獲取連接對象
java:comp/env/jdbc/news

這段為固定寫法
java:comp/env/    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM