Tomcat5的数据库连接池配置...

    技术2022-05-11  72

    本文主要介绍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="workCatalinalocalhostJndiTest">   <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>  

    最新回复(0)