woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

Tomcat连接池配置与使用

src:http://www.javaeye.com/topic/25161

其实Tomcat的连接池配置并不是很难,但也花费了我一些时间。今天,终于搞定,希望将经验分享出来,能给未解决问题的朋友提供帮助。
   
这里我的Tomcat版本为5.0.28,这个版本应该说是Tomcat比较稳定的一个版本。
   
首先备份你的$TomcatHome$/conf/server.xml文件($TomcatHome$是指你的tomcat安装路径),然后在<Host>节点下添加:

Java代码

  1. <Context path="/pool" docBase="pool">  
  2.   <Resource name="jdbc/test" scope="Shareable" type="javax.sql.DataSource"/>  
  3.   <ResourceParams name="jdbc/test">  
  4.     <parameter>  
  5.       <name>factory</name>  
  6.       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>  
  7.     </parameter>  
  8.     <!-- DBCP database connection settings -->  
  9.     <parameter>  
  10.       <name>url</name>  
  11.       <value>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=pubs</value>  
  12.     </parameter>  
  13.     <parameter>  
  14.       <name>driverClassName</name>  
  15.       <value>net.sourceforge.jtds.jdbc.Driver</value>  
  16.     </parameter>  
  17.     <parameter>  
  18.       <name>username</name>  
  19.       <value>sa</value>  
  20.     </parameter>  
  21.     <parameter>  
  22.       <name>password</name>  
  23.       <value>sa</value>  
  24.     </parameter>  
  25.     <!-- DBCP connection pooling options -->  
  26.     <parameter>  
  27.       <name>maxWait</name>  
  28.       <value>3000</value>  
  29.     </parameter>  
  30.     <parameter>  
  31.       <name>maxIdle</name>  
  32.       <value>100</value>  
  33.     </parameter>  
  34.     <parameter>  
  35.       <name>maxActive</name>  
  36.       <value>10</value>  
  37.     </parameter>  
  38.   </ResourceParams>  
  39. </Context> 
<Context path="/pool" docBase="pool">
  <Resource name="jdbc/test" scope="Shareable" type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/test">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <!-- DBCP database connection settings -->
    <parameter>
      <name>url</name>
      <value>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=pubs</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>net.sourceforge.jtds.jdbc.Driver</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>sa</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>sa</value>
    </parameter>
    <!-- DBCP connection pooling options -->
    <parameter>
      <name>maxWait</name>
      <value>3000</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>100</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>10</value>
    </parameter>
  </ResourceParams>
</Context>


   
其中红色部分是你需要修改的。
    <Context path="/pool" docBase="pool">
这里的pool是指你的项目在tomcat发布目录webapps下的目录路径,这里我的项目目录为:.../webapps/pool
    <Resource name="jdbc/test"..>jdbc/test
为需要通过jndi调用的数据源名称。
    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
这里我们用的是dbcp连接池包,这是apache提供的一个免费开源连接池,而且效率和稳定性都不错。如果你使用的是tomcat5x或以上的版本,可以在$TomcatHome$/common/lib目录下找到它。
   
关于数据库的设置,这里就不在多说。

   
下面打开web.xml文件,在其根节点下添加数据源的引用设置。

Java代码

  1. <resource-ref>  
  2.   <res-ref-name>jdbc/test</res-ref-name>  
  3.   <res-type>javax.sql.DataSource</res-type>  
  4.   <res-auth>Container</res-auth>  
  5. </resource-ref> 
<resource-ref>
  <res-ref-name>jdbc/test</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>


   
最后我们在代码中从连接池获得Connection对象。

Java代码

  1. Context context = new InitialContext();  
  2. //获得数据源  
  3. DataSource ds = context.lookup("java:comp/env/jdbc/test");  
  4. //获取连接  
  5. Connection conn = ds.getConnection(); 
Context context = new InitialContext();
//获得数据源
DataSource ds = context.lookup("java:comp/env/jdbc/test");
//获取连接
Connection conn = ds.getConnection();


   
这样我们就在代码中获得了Connection对象,至于剩下的操作,就完全是jdbc操作了。

 Test.jsp
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%>
<html>
<head><title>test.jsp</title></head>
<body bgcolor="#ffffff">
<h1>test Tomcat</h1>
<%
try
{
    Context initCtx=new InitialContext();
    DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/TestDB");
    Connection conn=ds.getConnection();
    out.println("data from database:<br>");
    Statement stmt=conn.createStatement();
    ResultSet rs =stmt.executeQuery("select id, foo, bar from testdata");
    while(rs.next())
    {
        out.println(rs.getInt("id"));
        out.println(rs.getString("foo"));
        out.println(rs.getString("bar"));
    }
    rs.close();
    stmt.close();
}
catch(Exception e)
{
    e.printStackTrace();
}
%>
</body>
</html>

声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。

推荐链接

 

posted on 2009-08-03 17:54 肥仔 阅读(175) 评论(0)  编辑 收藏 引用 所属分类: Web-后台


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理