tomcat7连接池使用_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1796 | 回复: 0   主题: tomcat7连接池使用        下一篇 
johnnyfox
注册用户
等级:新兵
经验:41
发帖:90
精华:0
注册:2011-12-12
状态:离线
发送短消息息给johnnyfox 加好友    发送短消息息给johnnyfox 发消息
发表于: IP:您无权察看 2015-5-8 15:16:44 | [全部帖] [楼主帖] 楼主

tomcat之前连接池使用dbcp实现,dbcp有很多的缺点,现在的tomcat采用了自己实现的线程池,用起来还是非常的简单方面的。整体操作如下:

   1 配置连接池

   将以下内容保存为context.xml,放在web项目下的META-INF文件夹下:

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPE xml>
<Context>
<Resourcename="jdbc/test"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
maxActive="100" //最大激活连接  


maxIdle="30"   //最大空闲连接  


maxWait="1000"  //最大等待数  


username="test"  //数据库用户名  


password="testtest" //数据库密码  


driverClassName="com.mysql.jdbc.Driver" //此处使用mysql数据库,请自行修改驱动  


url="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"/>   //test为数据库名,编码为UTF-8  
</Context>


2 代码中引用连接池

package com.hrb2c.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.Future;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
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 org.apache.tomcat.jdbc.pool.DataSource;
/**
 * 数据库连接池
 * 
 * @author Yuedong Li
 * 
 */
@WebServlet("/ConnPoolTest")
publicclass ConnPoolTest extends HttpServlet {
      privatestaticfinallong serialVersionUID = 1L;
      private Connection con = null;
      privatestatic DataSource datasource;
      /**
      * @see HttpServlet#HttpServlet()
      */
      public ConnPoolTest() {
            super();
            try {
                  //获取数据源


                  datasource = getInstance();
                  //连接池同步


                  Future<Connection> future = datasource.getConnectionAsync();
                  while (!future.isDone()) {
                        // 等待连接池同步


                        Thread.sleep(100);
                  }
                  // 获取连接池


                  con = future.get();
            } catch (Exception e) {
                  e.printStackTrace();
            }
      }
      /**

     * 单例模式获取数据源
     * @return
     * @throws NamingException
     */
      private DataSource getInstance() throws NamingException {
            if (datasource == null) {
                  Context initContext = new InitialContext();
                  Context envContext = (Context) initContext.lookup("java:/comp/env");
                  datasource = (DataSource) envContext.lookup("jdbc/test");
            }
            return datasource;
      }
      /**

     * 处理get方法
     */
      protectedvoid doGet(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
            doPost(request, response);
      }
      /**

     * 处理post方法
     */
      protectedvoid doPost(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
            Statement st;
            StringBuffer buff = new StringBuffer("<html><body>");
            try {
                  if (con != null) {
                        //简单查询,test表中有2列,id与name

                        buff.append("id");
                        buff.append(" ");
                        buff.append("name");
                        buff.append("<br>");
                        st = con.createStatement();
                        ResultSet rs = st.executeQuery("select * from test");
                        while (rs.next()) {
                              buff.append(rs.getString("id"));
                              buff.append(" ");
                              buff.append(rs.getString("name"));
                              buff.append("<br>");
                        }
                  }
                  buff.append("</body></html>");
            } catch (SQLException e) {
                  e.printStackTrace();
            }
            PrintWriter out = response.getWriter();
            out.write(buff.toString());
      }
}


这样就可以运行起来了,运行后可能会出现以下异常:

java.sql.SQLException: com.mysql.jdbc.Driver


只需要将mysql的jdbc驱动的jar包放进tomcat的lib目录里就可以了,注意是tomcat的目录下,不是项目的目录下。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论