Tomcat數據源的原理,配置及使用
知識點:
1.數據源的作用及操作原理;
2.Tomcat中數據源的配置;
3.數據源的查找及使用
傳統JDBC使用過程存在以下四個步驟:
1.加載驅動程序
2.進行數據庫連接
3.數據庫操作
4.數據庫關閉
對於不同的用戶只有操作不同,但是1,2,3三個步驟是一個重復的操作
如果開始種直接使用JDBC操作的化,那么會產生一種性能的問題
那么假設數據庫不關閉,一戶如果有新的用戶使用的時候直接取一個已經有的連接就可以了
這就是數據庫連接池,數據庫連接池里存放的是數據庫的連接
1.JNDI的配置
01配置方法1:
在web容器中,數據庫的連接池都是通過數據源(javax.sql.DataSource)訪問的,即:可以通過javax.sql.DataSource類取得一個Connection對象,但是如果要向得到一個DataSource對象需要使用JNDI進行查找,如下圖所示:

JNDI屬於命名及目錄查找借口,主要功能是進行查找的,查找對象.
數據庫的連接池需要在Tomcat上完成配置的,要修改Tomcat的conf目錄下的Context.xml文件才可以起作用
<Context>
<Resource
name="jdbc/myschool"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="admin"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myschool">
</Resource>
</Context>
此配置有幾個參數:
01.name:表示數據源的名稱,也是要查找的名稱
02.auth:表示容器負責資源的連接
03.type:表示對象,數據源上每一個綁定的都是DataSource
04.Maxactive:最大連接數
05.maxIdle:處於空閑時間的最大連接數
對於連接的授權有兩種:Container,Application(應用程序必須程序化的登錄到資源管理器,基本不用)
Tomcat6.0以后版本,如果要讓一個數據源起作用,還必須在項目下的web.xml里進行如下配置:
<web-app>
<resource-ref>
<description>myschool DataSource</description> myschool是數據庫名字
<res-ref-name>jdbc/myschool</res-ref-name> jdbc/myschool和Context.xml中的name值一致
<res-type>javax.sql.DataSource</res-type> javax.sql.DataSource和Context.xml中的type值一致
<res-auth>Container</res-auth> Container和Context.xml中的auth值一致
</resource-ref>
</web-app>
2.配置方法2
將Tomcat的conf目錄下的Context.xml復制到具體的項目下的META-INF文件夾中,然后添加
<Context>
<Resource
name="jdbc/myschool"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="admin"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myschool">
</Resource>
</Context>
就OK了
JNDI的使用
步驟:
01.初始化上下文Context ctx=new InitialContext();
02.獲取數據源DataSource ds=(DataSource )ctx.lookup(“java:comp/evn/jdbc/mldn”)
03.獲取連接Connection conn=ds.getConnection();
04.關閉連接(使連接恢復空閑狀態):conn.close
常見異常:

