java配置jndi连接数_JavaWeb:Tomcat下配置数据源(JNDI)连接数据库 | 学步园
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
習慣了以硬編碼的形式在程序中建立數(shù)據(jù)庫連接,用完就在finally語句塊中close一下就結(jié)束了。對于重視數(shù)據(jù)庫連接數(shù)的應(yīng)用來說,這樣子做會耗費大量的時間和數(shù)據(jù)庫資源,而且硬編碼的形式也不甚靈活。
在Tomcat這個Java Web容器下通過配置DataSource(數(shù)據(jù)源)對象可以解決上面所述的問題。JDBC中的javx.sql.DataSource接口負責建立于數(shù)據(jù)庫的連接,程序中直接從數(shù)據(jù)源中獲取數(shù)據(jù)庫連接。DataSource對象由Servlet容器Tomcat進行管理,其實獲取數(shù)據(jù)庫連接是從連接池中選取空閑連接。它基于Java中的JNDI(Java?命名與目錄接口)來實現(xiàn)。
配置數(shù)據(jù)源context.xml:
在Java Web應(yīng)用的META-INF目錄下新建一個context.xml配置文件,其中的元素用于定義JNDI資源,內(nèi)容如下:
name="jdbc/?DBname?"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"?maxIdle="30"?maxWait="10000"
username="root"?password="123"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/?DBname?autoReconnect=true"
/>
元素的屬性說明:
Name:指定Resource資源的JNDI名稱;
auth:可選填Container或Application,指定Resource的管理者;
type:指定Resource資源的Java類名;
maxActive:設(shè)置數(shù)據(jù)庫連接池中活動狀態(tài)連接的最大數(shù)目,為0則不受限制;
maxIdle:設(shè)置數(shù)據(jù)庫連接池中空閑狀態(tài)連接的最大數(shù)目,為0則不受限制;
maxWait:設(shè)置數(shù)據(jù)庫連接池中空閑狀態(tài)連接的最長等待時間,超時則拋出異常,為-1則可無限等待;
username:指定數(shù)據(jù)庫的用戶名;
password:指定連接數(shù)據(jù)庫的密碼;
driverClassName:指定數(shù)據(jù)庫的JDBC驅(qū)動器的Driver實現(xiàn)類名字(這里為MySQL數(shù)據(jù)庫連接);
url:連接數(shù)據(jù)庫的url。
注:可在/conf/server.xml?文件中的對應(yīng)元素中如上配置子元素以供Tomcat容器內(nèi)的多個Web應(yīng)用使用。
配置JNDI資源引用web.xml:
Java Web應(yīng)用中要使用JNDI資源,必須在web.xml中配置對該JNDI資源的引用元素。內(nèi)容如下:
DB?Connection
jdbc/DBname?
javax.sql.DataSource
Container
元素的子元素說明:
description:對所引用JNDI資源的描述;
res-ref-name:引用的JNDI資源的名稱,與上面元素中的name屬性一致;
res-type:引用的JNDI資源的類名稱,與上面元素中的type屬性一致;
res-auth:引用資源的管理者,上面元素中的auth屬性一致;
Web應(yīng)用中使用數(shù)據(jù)源:
使用DataSource連接數(shù)據(jù)庫,不再用以下方式來建立到數(shù)據(jù)庫的連接了。
Connection?conn?=?null;
Class.forName("com.mysql.jdbc.Driver");
String?dbUrl?=?"jdbc:mysql://localhost:3306/DBname";
String?dbUser?=?"root";
String?dbPwd?=?"123";
conn?=?DriverManager.getConnection(dbUrl,?dbUser,?dbPwd);
而是使用相對簡單些的JNDI資源訪問方式lookup方法,如下:
Context?sourceCtx?=?new?InitialContext();
DataSource?ds?=
(DataSource)?sourceCtx.lookup("java:comp/env/jdbc/?DBname?");
conn?=?ds.getConnection();
注:使用DataSource方式連接數(shù)據(jù)庫,當使用完數(shù)據(jù)庫操作之后調(diào)用各種資源對象的close方法時,由Tomcat容器調(diào)回這些連接到連接池中進行管理,而不是直接與數(shù)據(jù)庫斷開連接。
總結(jié)
以上是生活随笔為你收集整理的java配置jndi连接数_JavaWeb:Tomcat下配置数据源(JNDI)连接数据库 | 学步园的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在vm中安装linux虚拟机,如何在vm
- 下一篇: java 获取ip地址_老杜带你学Jav