Tomcat數據源的原理,配置及使用(JNDI)


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

常見異常:

 


免責聲明!

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



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