在看jsp網頁程式的時後,發現每個網頁都有寫連線的程式,
感覺以後要轉換資料庫,或是資料庫改名的時後,必須一頁一頁改,
看到了Connection Pool的說明,再怎麼困難也要學起來…以後就輕鬆了。
1.透過Connection Pool的設定,可以簡化取得資料庫連線(Connection)的過程
2.若以後連接方式有改變,例如抽換連線Driver,可以只需改連接池的設定即可,不需一頁一頁JSP修改
3.連接池的運作方式是一開始向資料庫要許多連線,放在池(Pool)內,有需要的人從池中取得連線,不用時交還
4.Tomcat可透過JNDI協定設定資料來源(即連接池)
先假設Wep App 的名稱為test,MySQL的帳號:root,密碼:root,連接到sellweb這個資料庫
在server.xml內的<context></context>中加入:
<Context path="/test" docBase="test" debug="0" crosscontext="true" reloadable="true">
<Resource name="jdbc/MySQL" auth="Container" type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/sellweb"
username="root" password="root"
maxActive="20" maxIdle="10" maxWait="-1"/>
</Context>
並在web.xml定義JNDI的資源
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app ....省略>
<resource-ref>
<description>JNDI JDBC DataSource of JSPLesson</description>
<res-ref-name>jdbc/MySQL</res-ref-name>
<res-type>javax.sql.DataSoure</res-type>
<res-auth>Container</res-auth>
</resource-ref>
重新啟動Tomcat
InitialContext類別屬於javax.naming套件,DataSource介面屬於javax.sql套件,Connection介面屬於java.sql套件。所以均需要引入上述套件。
index.jsp
<%
Context initContext = new InitialContext(); //建立InitialContext物件
String strLookup = "java:comp/env/jdbc/MySQL";
DataSource ds =(DataSource)initContext.lookup(strLookup);
Connection conn = ds.getConnection(); //取得資料庫連結
Statement stmt = conn.createStatement();
String sql="select * from board ";
ResultSet rs=stmt.executeQuery(sql);
while( rs.next() ){
out.print(rs.getString(1));
out.print(rs.getString(2));
}
%>
參考:
1.Tomcat5.5.9的JNDI設定
2.JSP動態網頁入門實務 作者:郭尚君、李盈君 出版社:文魁資訊
3.上課資料
2007年3月4日 星期日
資料庫連接池(Connection Pool)-簡化取得Connection的過程
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言