亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

基于Tomcat 數據源的原理、配置、使用介紹

2024-09-01 13:52:52
字體:
來源:轉載
供稿:網友

1、數據源的作用及操作原理  

在程序代碼中使用數據源是可以提升操作性能的,這種性能的提升依靠于運行的原理。 

傳統JDBC操作步驟

1、加載數據庫驅動程序,數據庫驅動程序通過CLASSPATH配置;

2、通過DriverManager類取得數據庫連接對象;

3、通過Connection實例化PreparedStatement對象,編寫SQL命令操作數據庫

4、數據庫屬于資源操作,操作完成后進行數據庫的關閉以釋放資源。如圖所示:

Tomcat,數據源,配置

對于不同的用戶只有操作不同,但是對于1、2、4三個步驟很明顯是一個重復的操作。

如果開發中直接使用JDBC操作的話,那么就會產生這種性能的問題,那么怎么做最合適呢?

如果假設數據庫不關閉,以后如果有新的用戶使用的時候直接取一個已經有的連接的話。

就好比,學校為學生提供雨傘,一旦下雨將為學生準備雨傘,這個時候學生不用再重新去找雨傘,之后再重新去買雨傘。

假設有100把傘,如果現在不下雨,肯定不能把所有的傘都擺上,所以一般平常如果沒人用的時候至少擺上10把。當然,最大的時候只能提供100把傘。

還需要一個等待的時間。

最小維持的數據庫連接數,最大允許打開的連接數。

Tomcat 4.1 版本之后就開始支持這種操作了,這種操作就稱為數據庫連接池,存放的是所有的數據庫連接。

2、在Tomcat中使用數據庫連接池

在web容器中,數據庫的連接池都是通過數據源(javax.sql.DataSource)訪問的,即:可以通過 javax.sql.DataSource 類取得Connection對象,但是如果要想得到一個DataSource對象需要使用JNDI進行查找。

Tomcat,數據源,配置

JNDI(Java Naming and Directory Interface)屬于命名及目錄查找接口,主要的功能是用于進行查找的,查找對象。
但是,現在的數據庫的連接池是需要在Tomcat上完成配置的。

要修改server.xml文件才可以起作用。

如下,以連接mysql為例:

<Context docBase="D:/data/webdemo" path="/webdemo" debug="0" reloadable="true">  <Resource name="jdbc/mydb"    auth="Container"    type="javax.sql.DataSource"    maxActive="100"    maxIdle="30"    maxWait="10000"    username="root"    password="root"    driverClassName="org.gjt.mm.mysql.Driver"    url="jdbc:mysql://localhost:3306/mydb"/></Context>

此配置有幾個參數:

·name:表示數據源名稱,也是JNDI要查找的名稱

·auth:表示由誰負責資源連接,Container:容器管理,application:程序管理,一般設置為 Container

·type:表示對象,數據源上每一個綁定的都是DataSource

·maxActive:表示最大激活連接數,這里取值為100,表示同時最多有100個數據庫連接,一般把maxActive設置成可能的并發量

·maxIdle:表示最大的空閑連接數,這里取值為30,表示即使沒有數據庫連接時依然可以保持30空閑的連接,而不被清除,隨時處于待命狀態

·maxWait:表示最大等待秒鐘數,這里取值10000,表示10秒后超時,如果取值-1,則表示無限等待,直到超時為止,如果超時將接到異常

·username:數據庫用戶名

·password:數據庫登錄密碼

·driverClassName:數據庫驅動名稱

.url:數據庫url

但是現在使用的Tomcat版本是6.0以上的版本,所以想讓一個數據源起作用的話,還必須在web.xml(注意:此web.xml是web項目的web.xml文件,而不是tomcat服務器的web.xml文件)文件之中完成配置。

<resource-ref> <res-ref-name>jdbc/mydb</res-ref-name>  <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth></resource-ref>

 

3、查找數據源 

數據源的操作使用的是JNDI方式進行查找的,所以如果要想使用數據源取得數據庫連接的話,則必須按照如下的步驟進行

初始化名稱查找上下文:Context ctx = new InitialContext();

通過名稱查找DataSource對象:DataSource ds = (DataSource)ctx.lookup(JNDI名稱);

通過DataSource取得一個數據庫連接:Connection conn = ds.getConnection()。

此時調用數據庫會出現一個Exception:

javax.servlet.ServletException: javax.naming.NameNotFoundException: Name jdbc is not bound in this Context

實際上對于這種資源操作,本身是需要一個環境屬性的支持的: java:comp/env,但是Tomcat服務器本身是免費的,沒有對這種屬性提供支持,如果要想訪問Tomcat中的名稱服務的話,則肯定要在前面加上此屬性,即,現在的名稱是: java:comp/env/jdbc/mydb;即用Tomcat的話JNDI名稱就是:java:comp/env/JNDI名稱 。

以后程序中只認名字,而具體是哪個數據庫將由配置決定。

當然,如果現在使用的是DAO開發的,DatabaseConnection.java類。

package com.shawn.mvcdemo.dbc;import java.sql.*;import javax.sql.*;import javax.naming.*;public class DatabaseConnection{ private static final String DSNAME = "java:comp/env/jdbc/mldn";//java:comp/JNDI名稱 private Connection conn = null; public DatabaseConnection() throws Exception{  Context ctx = new InitialContext();//初始化名稱查找上下文  DataSource ds = (DataSource)ctx.lookup(DSNAME); //通過名稱查找DataSource對象  this.conn = ds.getConnection();  //通過DataSource取得一個數據庫連接 } public Connection getConnection(){  return this.conn; } public void close() throws Exception{  if(this.conn != null){   try{    this.conn.close();//釋放數據庫連接   } catch(Exception e){    throw e;   }  } } public static void main(String args[]){  try{   System.out.println(new DatabaseConnection().getConnection());  } catch(Exception e){   e.printStackTrace();  } }}

可是有一點也必須注意的是,現在的數據庫連接池實在Tomcat上配置的,所以此程序只能在web下運行,而不能使用application程序運行。

總結:

要使用數據庫連接池

1、配置server.xml;

2、配置web項目中的(比如:webdemo項目)web.xml文件,添加 resource-ref 配置;

3、修改程序中獲取Connection的方式。

以上這篇基于Tomcat 數據源的原理、配置、使用介紹就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久亚洲精品中文字幕| 亚洲精品久久久久久久久久久| 国产精品久久久久久av| 91影院在线免费观看视频| 亚洲美女精品成人在线视频| 亚洲xxxx在线| 国产成人精品一区二区在线| 成人国内精品久久久久一区| 亚洲人成网站999久久久综合| 亚洲男人天堂九九视频| 深夜福利日韩在线看| 国产精品视频内| 亚洲精品久久久久中文字幕二区| 亚洲女同精品视频| 欧美日韩一区二区免费在线观看| 国产欧美精品在线播放| 欧美综合在线第二页| 一区二区在线视频| 久久99亚洲热视| 另类少妇人与禽zozz0性伦| 亚洲国产三级网| 精品国产一区二区三区在线观看| 色樱桃影院亚洲精品影院| 亚洲天堂成人在线视频| 亚洲国产成人爱av在线播放| 成人精品久久久| 91麻豆国产精品| 欧美最顶级的aⅴ艳星| 中国人与牲禽动交精品| 国产精品久久久久久久久久东京| 国产精品福利在线观看网址| 久久精品亚洲热| 亚洲xxx自由成熟| 国产精品自拍网| 国产91色在线免费| 日韩电影在线观看免费| 日韩欧美国产免费播放| 一区三区二区视频| 国产精品视频不卡| 日韩亚洲精品电影| 久久国产精品久久久久久久久久| 国产一区二区三区在线播放免费观看| 成人深夜直播免费观看| 欧美放荡办公室videos4k| 久久精品一区中文字幕| 精品久久久久久亚洲国产300| 久久精品美女视频网站| 日本精品va在线观看| 亚洲色图第一页| 中文字幕av一区二区三区谷原希美| 国内精品久久久久久| 精品成人在线视频| 日韩精品免费电影| 欧美激情精品久久久久久久变态| 蜜臀久久99精品久久久久久宅男| 欧美国产亚洲视频| 黄色成人在线播放| 精品成人在线视频| 中文字幕成人精品久久不卡| 欧美激情久久久久| 中文字幕欧美专区| 亚洲精品美女久久| 91在线观看免费网站| 久久男人的天堂| 亚洲精品网址在线观看| 亚洲女同精品视频| 欧洲成人午夜免费大片| 日韩中文字幕免费看| 亚洲性av网站| 亚洲欧美综合精品久久成人| 亚洲国产又黄又爽女人高潮的| 一个色综合导航| 日韩亚洲第一页| 日韩免费av一区二区| 久久777国产线看观看精品| 韩国欧美亚洲国产| 亚洲精品美女久久久久| 国模gogo一区二区大胆私拍| 在线观看国产精品91| 91欧美精品成人综合在线观看| 亚洲在线免费看| 国产精品美女www| 欧美黑人xxx| 丝袜情趣国产精品| 国产成人自拍视频在线观看| 亚洲美女视频网| 国内精久久久久久久久久人| 亚洲成人999| 成人黄色在线免费| 国产精品普通话| 欧美精品免费播放| 日韩成人久久久| 亚洲免费视频一区二区| 国产午夜精品视频| 国产激情综合五月久久| 亚洲www视频| 国产精品久久久久av| 欧美又大粗又爽又黄大片视频| 色综合五月天导航| 国产精品va在线| 另类图片亚洲另类| 亚洲免费伊人电影在线观看av| 欧美一级视频一区二区| 欧美噜噜久久久xxx| 精品网站999www| 亚洲国产精品人人爽夜夜爽| 97福利一区二区| 亚洲乱码av中文一区二区| 国内揄拍国内精品| 国产亚洲欧美aaaa| 欧美黑人一级爽快片淫片高清| 国产精品免费久久久| 欧美精品激情在线观看| 91精品久久久久久久久久| 亚洲免费福利视频| 精品久久香蕉国产线看观看亚洲| 国产一区二区三区免费视频| 国产精品av免费在线观看| 欧美日韩一区二区三区在线免费观看| 97久久超碰福利国产精品…| 亚洲欧美综合区自拍另类| 亚洲另类图片色| 91系列在线观看| 日本一区二区不卡| 日本久久久久亚洲中字幕| 欧洲成人免费视频| 欧美电影免费观看网站| 成人av在线亚洲| 久久99热这里只有精品国产| 欧美性20hd另类| 亚洲第一男人天堂| 亚洲综合大片69999| 欧美中文字幕在线播放| 精品成人乱色一区二区| 欧美大全免费观看电视剧大泉洋| 欧美午夜精品在线| 日韩av成人在线观看| 久久久久亚洲精品成人网小说| 国产欧美精品一区二区三区-老狼| 久久亚洲精品毛片| 亚洲电影av在线| 国产日韩欧美日韩| 欧美性猛交xxxxx免费看| 在线观看久久av| 亚洲精品美女免费| 91九色综合久久| 91成人国产在线观看| 国产在线98福利播放视频| 午夜精品久久久久久99热| 欧美视频专区一二在线观看| 57pao国产精品一区| 亚洲成av人影院在线观看| 亚洲第一级黄色片| 亚洲aa中文字幕| 亚洲国产精品久久久久| 国产一区二区在线播放| 久精品免费视频| 日韩av黄色在线观看| 亚洲欧美国产视频| 亚洲精品久久久久久久久| 日韩大片在线观看视频| 最好看的2019的中文字幕视频| 亚洲欧美日韩在线高清直播| 欧美色图在线视频|