Tomcat5的數據庫連接池配置

Tomcat5的數據庫連接池配置<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

本文主要介紹Tomcat5.0.25這個版本下數據庫連接池的配置,及程序對連接池的JNDI查找,並提供相應測試代碼。最後指出配置及應用過程中的常見問題及解決方法。

1 .該文的配置環境:Tomcat5.0.25 + jdk1.4+ Sql Server 2000+Win2000

2.配置步驟:

第一步:

啓動Tomcat,打開IE在地址欄內輸入http://localhost:8080/admin  進入Tomcat的管理界面;點擊右邊的Data Sources 在右上角的下拉菜單中選擇Create New Data Source 在下邊的輸入框中輸入需要的配置信息。

JNDI Name:jdbc/XXX(XXX爲自己所命的名字)

Data Source URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb(連接的數據名)

JDBC Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver

User Name:連接數據庫的用戶名

Password: 數據庫密碼

Max. Active Connections: 最大連接數

Max. Idle Connections: 是最大的空閒連接數

Max. Wait for Connection: 最大等待連接數

 

第二步:配置web.xml
打開webapps/ROOT/WEB-INF下web.xml,加入如下內容:
  
<resource-ref>
  <description>SqlServer Datasource example</description>
  <res-ref-name>jdbc/SqlServerDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  </resource-ref>

第三步:配置tomcat(添加類)

首先要下載安裝sqlserver-jdbc-驅動,然後將其lib下的三個jar文件放到

tomcat/common/lib下。

 

注意事項:

如果是單個JSP頁面我們將它放在TOMCAT_HOME/webapps/ROOT下邊,同時還須修改TOMCAT_HOME/conf/Catalina/localhost/下的ROOT.xml文件,在

<Resource auth="Container" description="SqlServer Datasource example" name="jdbc/SqlServerDB" type="javax.sql.DataSource"/>下邊加入:

<ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>

來引用所配置的JNDI數據源。同時將<Resource auth="Container" description="SqlServer Datasource example" name="jdbc/SqlServerDB" type="javax.sql.DataSource"/>註釋掉

    如果我們要部署的是個WEB應用程序,我們將該應用程序放在TOMCAT_HOME/webapps目錄下,有兩種方式可以引用我們所配置的JNDI數據源。

A:可以在TOMCAT_HOME/conf/Catalina/localhost下新建XXX.xml文件,XXX爲所發佈的WEB應用的名字,如我所發佈的WEB應用是JndiTest,.xml文件命名爲JndiTest.xml在該文件內加:

<?xml version='1.0' encoding='utf-8'?>

<Context debug="1" docBase="E:/Tomcat 5.0/webapps/JndiTest" path="/JndiTest" reloadable="true" workDir="work/Catalina/localhost/JndiTest">

  <Resource name="jdbc/test" type="javax.sql.DataSource"/>

  <ResourceParams name="jdbc/test">

    <parameter>

      <name>factory</name>

      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

    </parameter>

    <parameter>

      <name>password</name>

      <value>jsjrj</value>

    </parameter>

    <parameter>

      <name>maxActive</name>

      <value>4</value>

    </parameter>

    <parameter>

      <name>maxWait</name>

      <value>5000</value>

    </parameter>

    <parameter>

      <name>url</name>

      <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>

    </parameter>

    <parameter>

      <name>driverClassName</name>

      <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

    </parameter>

    <parameter>

      <name>username</name>

      <value>sa</value>

    </parameter>

    <parameter>

      <name>maxIdle</name>

      <value>2</value>

    </parameter>

  </ResourceParams>

</Context>

其中E:/Tomcat 5.0/webapps/JndiTest爲你所發佈應用程序的目錄,這樣就可以進行測試了。

這樣做就是每個WEB應用程序都須創建一個象JndiTest.xml這樣的文件。

B;爲了避免每個WEB應用程序都創建XXX.xml文件,我們可以修改TOMCAT_HOME/conf下的server.xml文件,修改如下:

<Host></Host>之間加入:

<Context path="/JndiTest" docBase="E:/Tomcat 5.0/webapps/JndiTest" debug="1" reloadable="true">

    <Resource name="jdbc/test" type="javax.sql.DataSource"/>

    <ResourceParams name="jdbc/test">

      <parameter>

        <name>url</name>

        <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>

      </parameter>

      <parameter>

        <name>driverClassName</name>

        <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

      </parameter>

      <parameter>

        <name>maxWait</name>

        <value>5000</value>

      </parameter>

      <parameter>

        <name>maxActive</name>

        <value>4</value>

      </parameter>

      <parameter>

        <name>password</name>

        <value>jsjrj</value>

      </parameter>

      <parameter>

        <name>maxIdle</name>

        <value>2</value>

      </parameter>

      <parameter>

        <name>username</name>

        <value>sa</value>

      </parameter>

      <parameter>

        <name>factory</name>

        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

      </parameter>

    </ResourceParams>

   </Context>

<Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>下的

<Resource name="jdbc/test" type="javax.sql.DataSource"/>

同時移去上邊的這段:(也可以不移去<ResourceParams name="jdbc/test">

      <parameter>

        <name>url</name>

        <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb</value>

      </parameter>

      <parameter>

        <name>driverClassName</name>

        <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

      </parameter>

      <parameter>

        <name>maxWait</name>

        <value>5000</value>

      </parameter>

      <parameter>

        <name>maxActive</name>

        <value>4</value>

      </parameter>

      <parameter>

        <name>password</name>

        <value>jsjrj</value>

      </parameter>

      <parameter>

        <name>maxIdle</name>

        <value>2</value>

      </parameter>

      <parameter>

        <name>username</name>

        <value>sa</value>

      </parameter>

      <parameter>

        <name>factory</name>

        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

      </parameter>

</ResourceParams>

注意要在每個WEB應用程序的web.xml文件中都加入

<resource-ref>
  <description>SqlServer Datasource example</description>
  <res-ref-name>jdbc/SqlServerDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  </resource-ref>

3.測試

編寫jsp文件:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.sql.*"%>

<%@ page import="javax.sql.*"%> 

<%@ page import="javax.naming.*"%> 

<html>

<body>

<%

 

Context ctx = new InitialContext();

Connection conn=null;

          ctx = new InitialContext();

          DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/test");

          conn = ds.getConnection();

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="select * from T_Student";

ResultSet rs=stmt.executeQuery(sql);

while(rs.next()) {%>

<%

out.print(rs.getString(1));

out.print(rs.getString(2));

out.print(rs.getString(3));

}%>

<%

out.print("數據庫操作成功,恭喜你");

rs.close();

stmt.close();

conn.close();

%>

</body>

</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章