亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Tomcat 數(shù)據(jù)源的原理、配置、使用介紹

 更新時(shí)間:2017年08月30日 10:52:00   作者:流年如水煙雨隨風(fēng)  
下面小編就為大家?guī)?lái)一篇基于Tomcat 數(shù)據(jù)源的原理、配置、使用介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1、數(shù)據(jù)源的作用及操作原理  

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

傳統(tǒng)JDBC操作步驟

1、加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序通過(guò)CLASSPATH配置;

2、通過(guò)DriverManager類(lèi)取得數(shù)據(jù)庫(kù)連接對(duì)象;

3、通過(guò)Connection實(shí)例化PreparedStatement對(duì)象,編寫(xiě)SQL命令操作數(shù)據(jù)庫(kù);

4、數(shù)據(jù)庫(kù)屬于資源操作,操作完成后進(jìn)行數(shù)據(jù)庫(kù)的關(guān)閉以釋放資源。如圖所示:

對(duì)于不同的用戶(hù)只有操作不同,但是對(duì)于1、2、4三個(gè)步驟很明顯是一個(gè)重復(fù)的操作。

如果開(kāi)發(fā)中直接使用JDBC操作的話(huà),那么就會(huì)產(chǎn)生這種性能的問(wèn)題,那么怎么做最合適呢?

如果假設(shè)數(shù)據(jù)庫(kù)不關(guān)閉,以后如果有新的用戶(hù)使用的時(shí)候直接取一個(gè)已經(jīng)有的連接的話(huà)。

就好比,學(xué)校為學(xué)生提供雨傘,一旦下雨將為學(xué)生準(zhǔn)備雨傘,這個(gè)時(shí)候?qū)W生不用再重新去找雨傘,之后再重新去買(mǎi)雨傘。

假設(shè)有100把傘,如果現(xiàn)在不下雨,肯定不能把所有的傘都擺上,所以一般平常如果沒(méi)人用的時(shí)候至少擺上10把。當(dāng)然,最大的時(shí)候只能提供100把傘。

還需要一個(gè)等待的時(shí)間。

最小維持的數(shù)據(jù)庫(kù)連接數(shù),最大允許打開(kāi)的連接數(shù)。

Tomcat 4.1 版本之后就開(kāi)始支持這種操作了,這種操作就稱(chēng)為數(shù)據(jù)庫(kù)連接池,存放的是所有的數(shù)據(jù)庫(kù)連接。

2、在Tomcat中使用數(shù)據(jù)庫(kù)連接池

在web容器中,數(shù)據(jù)庫(kù)的連接池都是通過(guò)數(shù)據(jù)源(javax.sql.DataSource)訪(fǎng)問(wèn)的,即:可以通過(guò) javax.sql.DataSource 類(lèi)取得Connection對(duì)象,但是如果要想得到一個(gè)DataSource對(duì)象需要使用JNDI進(jìn)行查找。

JNDI(Java Naming and Directory Interface)屬于命名及目錄查找接口,主要的功能是用于進(jìn)行查找的,查找對(duì)象。
但是,現(xiàn)在的數(shù)據(jù)庫(kù)的連接池是需要在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>

此配置有幾個(gè)參數(shù):

·name:表示數(shù)據(jù)源名稱(chēng),也是JNDI要查找的名稱(chēng)

·auth:表示由誰(shuí)負(fù)責(zé)資源連接,Container:容器管理,application:程序管理,一般設(shè)置為 Container

·type:表示對(duì)象,數(shù)據(jù)源上每一個(gè)綁定的都是DataSource

·maxActive:表示最大激活連接數(shù),這里取值為100,表示同時(shí)最多有100個(gè)數(shù)據(jù)庫(kù)連接,一般把maxActive設(shè)置成可能的并發(fā)量

·maxIdle:表示最大的空閑連接數(shù),這里取值為30,表示即使沒(méi)有數(shù)據(jù)庫(kù)連接時(shí)依然可以保持30空閑的連接,而不被清除,隨時(shí)處于待命狀態(tài)

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

·username:數(shù)據(jù)庫(kù)用戶(hù)名

·password:數(shù)據(jù)庫(kù)登錄密碼

·driverClassName:數(shù)據(jù)庫(kù)驅(qū)動(dòng)名稱(chēng)

.url:數(shù)據(jù)庫(kù)url

但是現(xiàn)在使用的Tomcat版本是6.0以上的版本,所以想讓一個(gè)數(shù)據(jù)源起作用的話(huà),還必須在web.xml(注意:此web.xml是web項(xiàng)目的web.xml文件,而不是tomcat服務(wù)器的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、查找數(shù)據(jù)源 

數(shù)據(jù)源的操作使用的是JNDI方式進(jìn)行查找的,所以如果要想使用數(shù)據(jù)源取得數(shù)據(jù)庫(kù)連接的話(huà),則必須按照如下的步驟進(jìn)行

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

通過(guò)名稱(chēng)查找DataSource對(duì)象:DataSource ds = (DataSource)ctx.lookup(JNDI名稱(chēng));

通過(guò)DataSource取得一個(gè)數(shù)據(jù)庫(kù)連接:Connection conn = ds.getConnection()。

此時(shí)調(diào)用數(shù)據(jù)庫(kù)會(huì)出現(xiàn)一個(gè)Exception:

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

實(shí)際上對(duì)于這種資源操作,本身是需要一個(gè)環(huán)境屬性的支持的: java:comp/env,但是Tomcat服務(wù)器本身是免費(fèi)的,沒(méi)有對(duì)這種屬性提供支持,如果要想訪(fǎng)問(wèn)Tomcat中的名稱(chēng)服務(wù)的話(huà),則肯定要在前面加上此屬性,即,現(xiàn)在的名稱(chēng)是: java:comp/env/jdbc/mydb;即用Tomcat的話(huà)JNDI名稱(chēng)就是:java:comp/env/JNDI名稱(chēng) 。

以后程序中只認(rèn)名字,而具體是哪個(gè)數(shù)據(jù)庫(kù)將由配置決定。

當(dāng)然,如果現(xiàn)在使用的是DAO開(kāi)發(fā)的,DatabaseConnection.java類(lèi)。

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名稱(chēng)

 private Connection conn = null;

 public DatabaseConnection() throws Exception{
  Context ctx = new InitialContext();//初始化名稱(chēng)查找上下文
  DataSource ds = (DataSource)ctx.lookup(DSNAME); //通過(guò)名稱(chēng)查找DataSource對(duì)象
  this.conn = ds.getConnection();  //通過(guò)DataSource取得一個(gè)數(shù)據(jù)庫(kù)連接
 }

 public Connection getConnection(){
  return this.conn;
 }

 public void close() throws Exception{
  if(this.conn != null){
   try{
    this.conn.close();//釋放數(shù)據(jù)庫(kù)連接
   } catch(Exception e){
    throw e;
   }
  }
 }

 public static void main(String args[]){
  try{
   System.out.println(new DatabaseConnection().getConnection());
  } catch(Exception e){
   e.printStackTrace();
  }
 }
}

可是有一點(diǎn)也必須注意的是,現(xiàn)在的數(shù)據(jù)庫(kù)連接池實(shí)在Tomcat上配置的,所以此程序只能在web下運(yùn)行,而不能使用application程序運(yùn)行。

總結(jié):

要使用數(shù)據(jù)庫(kù)連接池

1、配置server.xml;

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

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

以上這篇基于Tomcat 數(shù)據(jù)源的原理、配置、使用介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在Tomcat中配置404自定義錯(cuò)誤頁(yè)面詳解

    在Tomcat中配置404自定義錯(cuò)誤頁(yè)面詳解

    這篇文章主要介紹了在Tomcat中配置404自定義錯(cuò)誤頁(yè)面全解,需要的朋友可以參考下
    2017-03-03
  • 解決Tomcat運(yùn)行startup.bat閃退問(wèn)題方法

    解決Tomcat運(yùn)行startup.bat閃退問(wèn)題方法

    這篇文章主要為大家介紹了解決Tomcat運(yùn)行startup.bat閃退問(wèn)題方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Tomcat中的Session與Cookie深入講解

    Tomcat中的Session與Cookie深入講解

    這篇文章主要給大家介紹了關(guān)于Tomcat中Session與Cookie的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Tomcat具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • tomcat 6.0.20在一個(gè)機(jī)器上安裝多個(gè)服務(wù)的方法

    tomcat 6.0.20在一個(gè)機(jī)器上安裝多個(gè)服務(wù)的方法

    當(dāng)前前提是你已經(jīng)可以同時(shí)運(yùn)行他們了,他們的端口不能相同,這里只是解釋如何把它們做成服務(wù)
    2009-08-08
  • tomcat實(shí)現(xiàn)多war包部署的方法步驟

    tomcat實(shí)現(xiàn)多war包部署的方法步驟

    本文主要介紹了tomcat實(shí)現(xiàn)多war包部署的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Unable?to?start?embedded?Tomcat?Nacos啟動(dòng)報(bào)錯(cuò)的解決方案

    Unable?to?start?embedded?Tomcat?Nacos啟動(dòng)報(bào)錯(cuò)的解決方案

    Windows?本地啟動(dòng)?Nacos(2.2.0)?服務(wù),控制臺(tái)報(bào)錯(cuò)?Unable?to?start?embedded?Tomcat,報(bào)錯(cuò)信息:Unable?to?start?embedded?Tomcat,無(wú)法加載內(nèi)置的tomcat,本文介紹了Unable?to?start?embedded?Tomcat?Nacos啟動(dòng)報(bào)錯(cuò)解決方案,需要的朋友可以參考下
    2024-08-08
  • 詳解關(guān)于tomcat切割catalina.out日志的三種方式

    詳解關(guān)于tomcat切割catalina.out日志的三種方式

    這篇文章主要介紹了詳解關(guān)于tomcat切割catalina.out日志的三種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • IDEA中Tomcat在控制臺(tái)亂碼問(wèn)題及IDEA編碼設(shè)置UTF-8的方法

    IDEA中Tomcat在控制臺(tái)亂碼問(wèn)題及IDEA編碼設(shè)置UTF-8的方法

    這篇文章主要介紹了IDEA中Tomcat在控制臺(tái)亂碼問(wèn)題及IDEA編碼設(shè)置UTF-8的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Tomcat如何監(jiān)控并刪除超時(shí)Session詳解

    Tomcat如何監(jiān)控并刪除超時(shí)Session詳解

    這篇文章主要給大家介紹了關(guān)于Tomcat如何監(jiān)控并刪除超時(shí)Session的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Tomcat具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 騰訊云申請(qǐng)免費(fèi)ssl證書(shū)配置tomcat使http變https

    騰訊云申請(qǐng)免費(fèi)ssl證書(shū)配置tomcat使http變https

    這篇文章主要介紹了騰訊云申請(qǐng)免費(fèi)ssl證書(shū)配置tomcat使http變https,詳細(xì)的介紹了每個(gè)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論