‘壹’ TOMCAT怎么配置连接池
Tomcat的连接池配置方式具体如下:
一.配置tomcat连接池
1. 修改server.xml或者在conf/Catalina/localhost下添加对应的xml片段。此处使用的是第二种方法。
在conf/Catalina/localhost文件夹下新建ROOT.xml片段,添加以下内容:
<?xmlversion="1.0"encoding="UTF-8"?>
<Context crossContext="true" useHttpOnly="true">
<Resourcename="jdbc/infogrid" type="javax.sql.DataSource" password="123456" driverClassName="com.mysql.jdbc.Driver" maxIdle="10" maxWait="50" username="root" url="jdbc:mysql://localhost:3306/infogrid?autoReconnect=true" maxActive="20"/>
</Context>
2. 为tomcat添加数据库连接驱动包,本用例使用mysql,将mysql的驱动包添加到common/lib下
二.编写java测试类(该类必须部署在tomcat容器中,否则无法获得JNDI资源)
PreparedStatement ps=null;
ResultSet rs=null;
try{
InitialContext ctx=new InitialContext();
DataSource dataSource=(DataSource)ctx.lookup("java:comp/env/jdbc/infogrid");
Connection connection=dataSource.getConnection();
ps=connection.prepareStatement("select count(*) from test");
rs=ps.executeQuery();
rs.next();
System.out.println("表中行数为:"+rs.getInt(1));
rs.close();
ps.close();
System.out.println(connection.getClass());
//class org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
Field field=connection.getClass().getDeclaredField("delegate");
field.setAccessible(true);
System.out.println(field.get(connection).getClass());
//class org.apache.tomcat.dbcp.dbcp.PoolableConnection
connection.close();
//此关闭并非为真得关闭数据库连接,具体该close实现可见上面的两个Connection代理类,其实只是告诉连接池,该Connection已经用完了,可以被再次利用了
}catch(Exception ex){
ex.printStackTrace();
}
‘贰’ tomcat杩炴帴姹犱腑杩炴帴镄勯吨鐢ㄦ槸浠涔堟剰镐濓纴鑳藉惁涓句釜渚嫔瓙璁茶В涓涓嬶纻锛燂纻
tomcat涓镄勫嚑绉嶈繛鎺ユ睁閰岖疆浠g爜 瀵逛簬澶у瀷缃戠珯𨱒ヨ达纴淇℃伅镆ヨ㈢殑娆℃暟浼氶潪甯稿氾纴姣忔℃煡璇㈤兘闇瑕佽繖镙风殑杩囩▼锛氩姞杞介┍锷ㄧ▼搴忋佸垱寤鸿繛鎺ャ佸垱寤鸿鍙ュ硅薄銆佹墽琛孲QL璇鍙ャ佸叧闂杩欎簺瀵硅薄銆傚缓绔嬩笌鏁版嵁搴扑箣闂寸殑杩炴帴鍜岄喷鏀捐繛鎺ヤ细鍗犵敤寰埚氱郴缁熺殑镞堕棿銆傚傛灉鑳藉熻╂墍链夌敤鎴峰叡浜杩炴帴锛屼粎浠呭垱寤轰竴娆¤繛鎺ワ纴璋侀渶瑕佽繛鎺ヨ皝灏变娇鐢锛岃繖镙峰彲浠ュぇ澶у噺灏戝垱寤鸿繛鎺ユ墍鍗犵敤镄勬椂闂淬傝╂墍链夌敤鎴峰叡浜杩炴帴锛屽苟涓斿湪闇瑕佺殑镞跺椤氨鑳藉熶娇鐢锛屽氨闇瑕佹湁涓挞棬镄勬満鍒舵潵鍒涘缓杩炴帴锛屾暟鎹搴撹繛鎺ユ睁锛图ababase Connection Pool锛岀亩绉瘅BCP锛夋妧链灏辨槸𨱒ヨВ鍐宠繖涓闂棰樼殑銆
DBCP鑳藉熼泦涓绠$悊Web搴旂敤涓镄勬墍链夎繛鎺ワ纴鎻愬墠鍒涘缓濂借嫢骞插埌鏁版嵁搴撶殑杩炴帴锛岀敤鎴烽渶瑕佺殑镞跺欎粠杩炴帴姹犱腑銮峰彇涓涓杩炴帴锛岀敤瀹屼箣钖庨吨鏂版妸杩炴帴鏀惧洖杩炴帴姹犮傝佷娇鐢―BCP锛岄栧厛闇瑕侀厤缃甁NDI鏁版嵁婧愩
閰岖疆JNDI鏁版嵁婧
DBCP鍙浠ヤ娇鐢ㄥ緢澶氭妧链瀹炵幇锛屾湰涔︿粙缁岖殑鏄姣旇缉娴佽岀殑Jakarta-Commons镄凞BCP銆
浣跨敤杩炴帴姹犵殑镞跺欙纴瀛桦湪涓涓闂棰樸俉eb搴旂敤蹇呴’鏄惧纺镄勫叧闂缁撴灉闆嗗硅薄銆佽鍙ュ硅薄銆佽繛鎺ュ硅薄锛屽傛灉鍏抽棴澶辫触锛屽皢瀵艰嚧杩欎簺瀵硅薄涓嶈兘閲岖敤銆傚彲鑳借缮浼氩艰嚧鍦ㄨ繛鎺ヤ娇鐢ㄥ畬镄勬椂鍊欙纴Web搴旂敤镞犳硶杩炴帴鍒版暟鎹搴撱
Jakarta-Commons镄凞BCP鎻愪緵浜嗕竴绉嶆満鍒讹纴鑳藉熻窡韪鍜屾仮澶嶉偅浜涗笉鑳借绠$悊镄勮繛鎺ャ傝佹兂璺熻釜鍜屾仮澶嶉偅浜涗笉鑳借绠$悊镄勮繛鎺ワ纴闇瑕佸湪閰岖疆鏁版嵁婧愮殑镞跺椤炲姞涓嬮溃镄勪唬镰侊细
removeAbandoned="true"
褰揿彲鐢ㄧ殑杩炴帴鏁版瘆杈冨皯镄勪娇鐢锛岃繛鎺ユ睁浼氭煡镓惧苟閲嶅崭娇鐢ㄨ繖浜涗笉鑳借绠$悊镄勮繛鎺ャ傚彲浠ヤ娇鐢╮emoveAbandonedTimeout灞炴ц剧疆涓涓杩炴帴绌洪棽澶氩皯绉掍箣钖庤璁や负鏄宸茬粡琚鏀惧纯镄勶纴榛樿ゅ兼槸300绉掋傚傛灉𨱍虫敼涓60绉掞纴鍙浠ヤ娇鐢ㄤ笅闱㈢殑浠g爜锛
removeAbandonedTimeout="60"
鍙浠ヨ剧疆logAbandoned灞炴ф潵璁板綍娌℃湁姝g‘閲婃斁杩炴帴镄勪唬镰侊细
logAbandoned="true"
<!--灞閮ㄦ暟鎹搴撹繛鎺ユ睁锛堜袱绉嶆柟娉曪级 Tomcat6.0杩炴帴姹犻厤缃 -->
<!--绗涓绉嶆柟娉-->
閰岖疆server.xml
server.xml鏂囦欢鍦═omcat瀹夎呯洰褰旷殑conf瀛愮洰褰曚笅銆傚湪</host>涔嫔墠澧炲姞涓嬮溃镄勪唬镰侊细
<Context path="/bookstore" docBase="bookstore(椤圭洰钖岖О)"
debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/connpool" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="j2ee"
password="j2ee"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
</Context>
<!--绗浜岀嶆柟娉-->
<Resource name="jdbc/connpool" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="10000" username="j2ee" password="j2ee" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
钖勫睘镐х殑钖涔夊备笅锛
1 maxActive: 姹犱腑杩炴帴镄勬渶澶ф暟鐩銆傝佺‘淇濇妸mysql镄勬渶澶ц繛鎺ユ暟澶т簬杩欎釜鍊笺傚傛灉涓0锛屽垯娌℃湁链澶ф暟閲忛檺鍒躲
2 maxIdle: 姹犱腑链澶х┖闂叉暟鎹搴撹繛鎺ユ暟銆傚傛灉涓-1锛屽垯娌℃湁闄愬埗銆
3 axWait: 绛夊緟涓涓杩炴帴鍙樻垚鍙鐢ㄧ殑链闀挎椂闂达纴鍗曚綅鏄痬s锛岃繖涓渚嫔瓙涓鏄10绉掞纴濡傛灉瓒呮椂灏嗘姏鍑哄纾甯搞傚傛灉璁剧疆涓-1锛屽皢镞犻檺绛夊緟
4 username 鍜 password: 杩炴帴MySQL鏁版嵁搴撶殑鐢ㄦ埛钖嶅拰鍙d护
5 driverClassName: MySQL鏁版嵁搴撶殑JDBC椹卞姩绋嫔簭镄勫悕瀛楋纴杩欓噷椹卞姩镄勫悕瀛楁槸com.mysql.jdbc.Driver銆
6 url: JDBC杩炴帴MySQL鏁版嵁搴撶殑url銆傚弬鏁瘾utoReconnect=true纭淇濊繛鎺ユ睁鑳藉熼吨鏂拌繛鎺ワ纴濡傛灉8涓灏忔椂娌℃湁镎崭綔锛宫ysql绠$悊鍣ㄤ细鍏抽棴杩炴帴銆
閰岖疆web.xml
闇瑕佷负褰揿墠搴旂敤閰岖疆web.xml銆备富瑕佷綔鐢ㄦ槸澹版槑鏁版嵁婧愩备唬镰佸备笅锛
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee version="2.4">
<description>MySQL Test App</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
浣跨敤杩炴帴姹犺块梾鏁版嵁搴
浣跨敤杩炴帴姹犺块梾鏁版嵁搴扑笌浣跨敤JDBC鐩存帴璁块梾鏁版嵁搴撶殑杩囩▼锘烘湰鐩稿悓锛屽彧鏄寰楀埌杩炴帴镄勬柟寮忎笉钖屻
涓嬮溃镄勪唬镰佸𪾢绀轰简鍦ㄤ娇鐢ㄨ繛鎺ユ睁镄勬椂鍊欙纴濡傛灉銮峰彇鍒版暟鎹搴撶殑杩炴帴銆
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBPool {
private static DataSource pool;
static {
Context env = null;
try {
env = (Context) new InitialContext().lookup("java:comp/env");
pool = (DataSource)env.lookup("jdbc/DBPool");
if(pool==null)
System.err.println("'DBPool' is an unknown DataSource");
} catch(NamingException ne) {
ne.printStackTrace();
}
}
public static DataSource getPool() {
return pool;
}
}
鍏ㄥ眬鏁版嵁搴撹繛鎺ユ睁镄勯厤缃锛
1锛庡皢鏁版嵁搴挞┍锷ㄧ▼搴忕殑JAR鏂囦欢鏀惧湪Tomcat镄 common/lib 涓锛
2锛庡湪server.xml涓璁剧疆鏁版嵁婧愶纴浠Oracle鏁版嵁搴扑负渚嬶纴濡备笅锛
鍦<GlobalNamingResources> </GlobalNamingResources>鑺傜偣涓锷犲叆锛
<Resource
name="jdbc/connpool"
type="javax.sql.DataSource"
password="j2ee"
driverClassName="oracle.jdbc.driver.OracleDriver"
maxIdle="2"
maxWait="5000"
username="j2ee"
url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
maxActive="4"/>
灞炴ц存槑锛歯ame锛屾暟鎹婧愬悕绉帮纴阃氩父鍙栤漥dbc/XXX钬濈殑镙煎纺锛
type锛屸漥avax.sql.DataSource钬;
password锛屾暟鎹搴撶敤鎴峰瘑镰侊绂
driveClassName锛屾暟鎹搴挞┍锷锛
maxIdle锛屾渶澶х┖闂叉暟锛屾暟鎹搴撹繛鎺ョ殑链澶х┖闂叉椂闂淬傝秴杩囩┖闂叉椂闂达纴鏁版嵁搴撹繛
鎺ュ皢琚镙囱颁负涓嶅彲鐢锛岀劧钖庤閲婃斁銆傝句负0琛ㄧず镞犻檺鍒躲
MaxActive锛岃繛鎺ユ睁镄勬渶澶ф暟鎹搴撹繛鎺ユ暟銆傝句负0琛ㄧず镞犻檺鍒躲
maxWait 锛屾渶澶у缓绔嬭繛鎺ョ瓑寰呮椂闂淬傚傛灉瓒呰繃姝ゆ椂闂村皢鎺ュ埌寮傚父銆傝句负-1琛ㄧず
镞犻檺鍒躲
3锛庡湪浣犵殑web搴旂敤绋嫔簭镄剋eb.xml涓璁剧疆鏁版嵁婧愬弬钥冿纴濡备笅锛
鍦<web-app></web-app>鑺傜偣涓锷犲叆锛
<resource-ref>
<description>MySQL DB Connection Pool</description>
<res-ref-name>jdbc/connpool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
瀛愯妭镣硅存槑锛 description锛屾弿杩颁俊鎭锛
res-ref-name锛屽弬钥冩暟鎹婧愬悕瀛楋纴钖屼笂涓姝ョ殑灞炴name锛
res-type锛岃祫婧愮被鍨嬶纴钬漥avax.sql.DataSource钬濓绂
res-auth锛屸滳ontainer钬濓绂
res-sharing-scope锛屸漇hareable钬濓绂
<!--浠ヤ笅涓鸿剧疆鏁版嵁婧愯繛鎺-->
<!--绗涓绉-->
鍦╰omcat\webapps\myapp\META-INF\context.xml镄凛ontext涓澧炲姞锛
<ResourceLink name="jdbc/connPool" global="jdbc/connPool" type="javax.sql.DataSource"/>
杩欐牱灏卞彲浠ヤ简銆
<!--绗浜岀-->
鍦╳eb搴旂敤绋嫔簭镄刢ontext.xml涓璁剧疆鏁版嵁婧愰摼鎺ワ纴濡备笅锛
鍦<Context></Context>鑺傜偣涓锷犲叆锛
<ResourceLink
name="jdbc/connpool"
type="javax.sql.DataSource"
global="jdbc/connpool"/>
灞炴ц存槑锛歯ame锛屽悓绗2姝ュ拰绗3姝ョ殑灞炴name鍊硷纴鍜屽瓙鑺傜偣res-ref-name鍊硷绂
type锛屽悓镙峰彇钬漥avax.sql.DataSource钬濓绂
global锛屽悓name鍊笺
镊虫わ纴璁剧疆瀹屾垚锛屼笅闱㈡槸濡备綍浣跨敤鏁版嵁搴撹繛鎺ユ睁銆
1锛庡缓绔嬩竴涓杩炴帴姹犵被锛娈BPool.java锛岀敤𨱒ュ垱寤鸿繛鎺ユ睁锛屼唬镰佸备笅锛
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBPool {
private static DataSource pool;
static {
Context env = null;
try {
env = (Context) new InitialContext().lookup("java:comp/env");
pool = (DataSource)env.lookup("jdbc/DBPool");
if(pool==null)
System.err.println("'DBPool' is an unknown DataSource");
} catch(NamingException ne) {
ne.printStackTrace();
}
}
public static DataSource getPool() {
return pool;
}
}
2锛庡湪瑕佺敤鍒版暟鎹搴撴搷浣灭殑绫绘垨jsp椤甸溃涓锛岀敤DBPool.getPool().getConnection()锛岃幏寰椾竴涓狢onnection瀵硅薄锛屽氨鍙浠ヨ繘琛屾暟鎹搴撴搷浣滐纴链钖庡埆蹇树简瀵笴onnection瀵硅薄璋幂敤close()鏂规硶锛屾敞镒忥细杩欓噷涓崭细鍏抽棴杩欎釜Connection锛岃屾槸灏呜繖涓狢onnection鏀惧洖鏁版嵁搴撹繛鎺ユ睁銆
绗涓夌嶏细tomcat5.0杩炴帴姹犻厤缃
1.镓揿紑server.xml锛氩湪<Context > </Contex>涓娣诲姞濡备笅杩炴帴姹犲弬鏁拌鍙ワ纴涓涓瀹屾暣镄勪緥瀛愬备笅锛
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="E:\Projects\ColorRing\wap" path="/wap" reloadable="true">
<Resource name="jdbc/wapOracle" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/wapOracle"> <!--杩欓噷name镄勫煎繀椤讳笌Resource閲岀殑name镄勫肩浉钖-->
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@172.18.51.101:1521:sundb</value> <!--杩炴帴鏁版嵁搴撶殑url-->
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>0</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>username</name> <!--鐢ㄦ埛钖-->
<value>cms_user</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<parameter>
<name>password</name> <!--瀵嗙爜-->
<value>12345</value>
</parameter>
</ResourceParams>
</Context>
2.镓揿紑宸ョ▼涓嬬殑WEB-INF/web.xml,娣诲姞濡备笅閮ㄥ垎锛
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/wapOracle</res-ref-name> <!--杩欓噷name镄勫间篃蹇呴’涓巗erver.xml涓镄凴esource閲岀殑
name镄勫肩浉钖-->
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3.铹跺悗鍐栾繛鎺ユ暟鎹搴撶殑璇鍙ワ细
package util;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class OracleDB {
String url_ = "192.168.1.41:1521:gxcring";
//String url_ = "172.18.51.101:1521:SUNDB";
String id_ = "cms_user";
String pass_ = "12345";
Connection conn = null;
Statement stmt = null;
public OracleDB() {
try {
//Class.forName("oracle.jdbc.driver.OracleDriver");
//conn = DriverManager.getConnection("jdbc:oracle:thin:@" + url_, id_, pass_);
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/wapOracle"); //娉ㄦ剰杩欓噷镄勫悕瀛椾笌閰岖疆鏂囦欢
閲岀殑钖嶅瓧鐩稿悓灏辫屼简銆
conn = ds.getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch (NamingException ne) {
System.out.println("Initial DataSource error.");
ne.printStackTrace();
} catch (SQLException e) {
System.out.println("ORACLE: " + e);
e.printStackTrace();
}
}
/**
* 杩斿洖Connction瀵硅薄
* @param none
* @return Connction
*/
public Connection getConn() {
return this.conn;
}
}
‘叁’ Java数据库连接池的几种配置方法(以MySQL数
连接先建立一些连接,并且这些连接允许共享,因此这样就节省了每次连接的时间开销。Mysql数据库为例,连接池在Tomcat中的配置与使用。
1、创建数据库Student,表student
2、配置server.xml文件。Tomcat安装目录下conf中server.xml文件。
<GlobalNamingResources>
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/student"
maxActive="3"
/>
</GlobalNamingResources>
name:指定连接池的名称
type:指定连接池的类,他负责连接池的事务处理
url:指定要连接的数据库
driverClassName:指定连接数据库使用的驱动程序
username:数据库用户名
password:数据库密码
maxWait:指定最大建立连接等待时间,如果超过此时间将接到异常
maxIdle:指定连接池中连接的最大空闲数
maxActive:指定连接池最大连接数
3、配置web.xml文件。
<web-app>
<resource-ref>
<description>mysql数据库连接池配置</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
4、配置context.xml文件
与server.xml文件所在的位置相同。
<Context>
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"
/>
</Context>
5、测试
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
env = (Context)new InitialContext().lookup("java:comp/env");
//检索指定的对象,返回此上下文的一个新实例
pool = (DataSource)env.lookup("jdbc/DBPool");
//获得数据库连接池
if(pool==null){out.printl("找不到指定的连接池!");}
con = pool.getConnection();
st = con.createStatement();
rs = st.executeQuery("select * from student");
}catch(Exception ex){out.printl(ne.toString());}
‘肆’ tomcat数据库连接池出现异常
第一步,把驱动有放在了tomcat/common/lib下面,第二步修改tomcat/conf/context.xml。 代码如下
<Resource name="jdbc/bank" auth="Container"
type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="sa"
password="sa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bank"
/>
然后带连接类里 Context ic = new InitialContext();
DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/food");
conn = ds.getConnection();
获得连接,然后就可以用了
‘伍’ java中建立数据库连接池,有哪几个步骤
配置包括3步:1.让tomcat容器启动创建数据库连接池2.在某个项目中关联数据库连接池,3.取得数据库连接池并使用。使用包括,当拿到数据库连接后,可以通过2种方式来使用,1.使用jstl的标签,2.封装成返回connection的方法。
1.让tomcat容器启动创建数据库连接池:
配置的地方很多,根据不同的需求配置在不同的位置,但原理就一个,就是要配置一个Context标签下有一个resource标签。
a.在Tomcat 6.0\conf\Catalina\localhost目录下新建一个跟项目名一样的*.xml文件
b.数据源设置的名字(JNDI) auth:表示数据源由谁管理,这儿是tomcat容器本身 type:类型
c.驱动设置,该驱动放在tomcat的lib下或者放在该站点的lib下设置连接数据库字符串,url设置连接数据库的用户名设置数据库连接的密码-->
2.在某个项目中关联数据库连接池,在web.xml添加代码:
<!--关联jndi数据库连接池 -->
3.使用jstl标签测试数据源是否配置成功
4.在jsp中通过java代码测试:
5.封装成bean对外提供得到数据库连接池连接的方式: