昨 天看了一些網上的tomcat數據庫連接池配置的東西,但是一直沒配好,主要原因是網上的文章幾乎沒有針對tomcat 7進行配置的,而且針對SQL SERVER的也不多,今天上午看了官方的文檔,花了一上午時間終於配置好了數據庫連接池,這里發給大家看看,如果有什么疑問就留言吧。
首先我們需要向項目中導入tomcat-dbcp.jar 、servlet-ap.jar和sql server的驅動sqljdbc4.jar 包到 web-inf 文件夾下的lib目錄 。
然后增加context.xml
這 里有兩種方法,第一種是在tomcat程序目錄下面的conf/context.xml里面修改,這里修改之后所有的程序都將覆蓋數據庫連接池,但是 這種方法不夠靈活。這里我們選擇第二種方法 在項目的Web-content/meta-inf 目錄下創建一個context.xml文件,在里面添加如下內容:
<Context path="/SYSDEMO" docBase="SYSDEMO"
reloadable="true" crossContext="true">
<Resource name="jdbc/SYSDEMO" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="lenovo" password="lenovo" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://202.115.90.241:1433;DatabaseName=SYSDEMO"/>
</Context>
這里需要修改的是 將所有的SYSDEMO改為你自己的使用的數據庫的名稱
將driverClassName改為你所使用數據庫的驅動,這里是SQL SERVER的驅動。
將url改為jdbc鏈接該數據庫的地址,這里是SQL SERVER的地址,
將username 、password改為你自己數據庫用戶名和密碼
maxActive="100" maxIdle="30" maxWait="10000"
可以將這三個參數進行修改,
第一個是最大活動的連接數
第二個是最大的未連接數
第三個是最長的等待時間,單位是毫秒
然后再修改項目的webContent/web-inf/web.xml文件
添加如下內容
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/SYSDEMO</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
這里必須要改的是 <res-ref-name>jdbc/SYSDEMO</res-ref-name>
改為 jdbc/你自己的數據庫
好了然后就可以使用了。
如下是我測試的servlet文件
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
@WebServlet("/TestPool")
public class TestPool extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/SYSDEMO");
Connection conn = ds.getConnection();
System.out.println("成功了。。。。。。。。。。");
}catch(Exception e){
System.out.println("出錯了。。。。。。。。。。。。。。。。。。");
e.printStackTrace();
}
}
}
將 DataSource ds = (DataSource)envContext.lookup("jdbc/SYSDEMO");
“jdbc/SYSDEMO” 的sysdemo改為你前面使用的數據庫的名稱即可。
好了。大功告成。
