Tomcat8.5&Mysql8.0配置數據庫連接池(DBCP)


DBCP(DataBase connection pool),數據庫連接池。是 apache 上的一個 java 連接池項目,也是 tomcat 使用的連接池組件。由於建立數據庫連接是一個非常耗時耗資源的行為,所以通過連接池預先同數據庫建立一些連接,放在內存中,應用程序需要建立數據庫連接時直接到連接池中申請一個就行,用完后再放回去。 --百度百科

 


開發環境eclipse_photon + Tomcat8.5.32 + mysql8.0

首先需要修改兩個配置文件一個是Tomcat的conf/Context.xml,另一個是項目文件下的web.xml創建web項目時生成

Context.xml修改時在eclipse當中修改,否則由eclipse啟動tomcat時會還原該文件,在<Context>標簽下添加<Resource>標簽

<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Resource name = "jdbc/myschool" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="root" password="111111" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/myschool?serverTimezone=GMT%2B8&amp;useSSL=false" />
<!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> </Context>

 Resource標簽屬性

name:連接池名稱,一般設定為jdbc/databasename

auth:設定控制權為容器,固定

type:數據類型,固定

maxTotal:最大活動連接數,在之前版本中是maxActive

maxIdle:最大空閑連接數

maxWaitMillis:最大空閑時間,在之前版本中是maxWait

userName:用戶名

password:密碼

dirverClassName:

MySQL6.0之后Driver(這里跟只跟ConnectionJ相關,ConnectionJ8.0驅動是com.mysql.cj.jdbc.Driver,但是MySQL也可以使用之前版本的ConnectionJ)名改為“com.mysql.cj.jdbc.Driver”,之前是“com.mysql.jdbc.Driver”。需要注意的是這里要在CLASSPATH中指定“mysql-connector-java-8.0.12.jar”文件的位置,否則會報錯,提示driverClassName屬性不能識別:

  a.mysql-connector-java-8.0.12.jar復制到D:\env\apache-tomcat-8.5.32\lib下

  b.在環境變量中設定CATALINA_HOME為tomcat路徑“D:\env\apache-tomcat-8.5.32”;

  c.CLASSPATH中添加%CATALINA_HOME%\lib;

url:

指定數據庫連接ip和數據庫名稱

jdbc:mysql://127.0.0.1:3306/databaseName

對於MySQL5.*及之前版本只需寫到此處就行,MySQL6.0及之后版本需要 指定服務器時區屬性,設定useSSL屬性等,個屬性之間用&連接,在xml/html文件中&用&amp;轉義表示,應該寫成:

jdbc:mysql://127.0.0.1:3306/databaseName?serverTimeZone=GMT%2B8&amp;useSSL=false

若出現字符集問題則需添加下面兩個參數:

useUnicode=true

characterEncoding=utf8

 鏈接仍使用&amp;


修改web.xml文件

web.xml文件由eclipse創建項目時自動生成(需要在最后一步勾選生成web.xml),在web.xml中<web-app>標簽內添加

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

 指定資源名,資源類型,資源控制權限

 


通過JNDI(java naming and directory interface)在java類或jsp頁面調用連接池中的連接,

       <%
     Context context = new InitialContext(); DataSource ds=(DataSource)envContext.lookup("java:comp/env/jdbc/myschool"); Connection conn = ds.getConnection(); Statement sta = conn.createStatement(); String sql = "select * from Grade"; ResultSet rSet = sta.executeQuery(sql); while(rSet.next()){ out.println(rSet.getString("GradeName")); } %>

 


免責聲明!

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



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