tomcat 数据库连接池

news/2024/5/19 0:01:30 标签: tomcat, 数据库连接池, sqlserver, null, jdbc, microsoft

1.mysql-jdbc
2.tomcat-admin安装到%tomcat home%中,localhost:8080/admin admin,12345(可自己设定密码
tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>

3.进入后,点击左边的树结点Data Sources,再选择右上角下拉框"create new data source"
填写 JNDI Name连接池JNDI名 jdbc/mysql
     DataSource URL        jdbc:mysql://localhost/db
     JDBC Driver class     com.mysql.jdbc.Driver
     UserName              root
                           911
      Max.Active.Connection 最大连接数
    Max.Idle.Connection 最大空闲连接数
 右下角save,右上角commit changes

该信息保存在Tomcat的conf/server.xml中
4.修改conf/context.xml
中添加一句
<Context>
   <ResourceLink name="jdbc/mysql" global="jdbc/mysql"/>
</Context>

5 testdb.jsp
<%@ page language="java"  contentType="text/html; charset=GB2312" import="java.sql.*,javax.sql.*,javax.naming.*"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'index.jsp' starting page</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>
 
  <body>
   <%
      Connection con=null;
      Statement sm=null;
      ResultSet rs=null;
      try{
        InitialContext ctx=new InitialContext();
        DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
        con=ds.getConnection();
        sm=con.createStatement();
        rs=sm.executeQuery("select * from mysql");
        while(rs.next())
        {
         out.println(rs.getString(2));
         
        }
     
      }
      catch(Exception e)
      {
       e.printStackTrace();
     
      }
  
     finally{
      if(rs!=null){
       try{
        rs.close();
       }
       catch(SQLException e)
       {
       e.printStackTrace();
       }
       rs=null;
     
      }
    
        if(con!=null){
       try{
        con.close();
       }
       catch(SQLException e)
       {
       e.printStackTrace();
       }
        con=null;
     
      }
        if(sm!=null){
       try{
        sm.close();
       }
       catch(SQLException e)
       {
       e.printStackTrace();
       }
       sm=null;
     
      }
    
     }
 
    %>
  </body>
</html>

6.内部测试? server如何添加

 

 

sqlserver2000配置

于解决了困扰多天的连接池的问题,写下这编文章与大家一起分享。我是在tomcat5.5.9下配置的,tomcat5.5.X和以前的版本有一些差别,所以配置上也有差别。我就说一下在tomcat5.5.9配置的基本步骤:(确定你以安装好tomcat5.5.9、sql2000)

1、把数据库JDBC驱动拷贝到%TOMCAT_HOME%/common/lib和%TOMCAT_HOME%/webapps/yourweb/WEB-INF/lib下(我的web文件夹名字叫quickstart)
这一步大家都知道,不然tomcat无法与数据库连接。

2、修改%TOMCAT_HOME%/conf/server.xml文件,在 <GlobalNamingResources></GlobalNamingResources>之间
添加以下内容:

<Resource name="jdbc/quickstart" type="javax.sql.DataSource" password="123456" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" username="sa" url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart" maxActive="4"/>


以上内容根据大家的具体情况进行相应修改,比如:把name="jdbc/quickstart"中的quickstart改成和你web文件夹名称一样,把password="123456"中的“123456”改成你数据库的密码。

3、在%TOMCAT_HOME%/conf/Catalina/localhost下新建一个与你web文件夹同名的xml文件(我的是quickstart.xml)
这一步非常重要,如果没有这步就会出错,会出现
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'


这样的错误,在文件中加入第2步的内容,如下:


<?xml version="1.0" encoding="UTF-8"?><Context> <Resource name="jdbc/quickstart" type="javax.sql.DataSource" password="123456" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" username="sa" url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart" maxActive="4"/> </Context>


根据个人具体情况进行相应修改。

4、修改%TOMCAT_HOME%/webapps/yourweb/WEB-INF下的web.xml文件,在<web-app></web-app>之间添加以下内容


<resource-ref> <description>sqlserverDB Connection</description> <res-ref-name>jdbc/quickstart</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>


把<res-ref-name>jdbc/quickstart</res-ref-name>中的quickstart改成你的web文件夹名称。

5、测试,在quickstart下新建一个index.jsp文件


<%@ page contentType="text/html; charset=gb2312" %><%@ page import="javax.naming.*" %><%@ page import="javax.sql.*" %><%@ page import="java.sql.*" %><html><head><title>JDBC Test</title></head><body><% Connection conn=null; Statement stmt=null; ResultSet rs=null; ResultSetMetaData md=null; try { Context initCtx=new InitialContext(); DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/quickstart"); if(ds!=null) { out.println("已经获得DataSource"); out.println(ds.toString()); conn=ds.getConnection(); stmt=conn.createStatement(); out.println("aa"); rs=stmt.executeQuery("select * from cat"); md=rs.getMetaData(); out.println("<table border=1>"); out.println("<tr>"); for(int i=0;i<md.getColumnCount();i++) { out.println("<td>"+md.getColumnName(i+1)+"</td>"); } while(rs.next()) { out.println("<tr>"); out.println("<td>"+rs.getString(1)+"</td>"); out.println("<td>"+rs.getString(2)+"</td>"); out.println("<td>"+rs.getString(3)+"</td>"); out.println("<td>"+rs.getString(4)+"</td>"); out.println("</tr>"); } out.println("</table>"); conn.close(); } } catch(Exception e) { out.println(e.toString()); System.out.println(e.toString()); }%></body></html>


运行tomcat服务器,在浏览器中输入http://localhost:8080/quickstart/index.jsp看看成功了没有。 

 


http://www.niftyadmin.cn/n/1426112.html

相关文章

二维有序数组的查找——剔除列剔除行

题目描述 在一个二维数组中&#xff08;每个一维数组的长度相同&#xff09;&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该…

JavaScript——读取链表元素,颠倒存储

题目背景&#xff1a; 对链表的考察。面试的时候&#xff0c;由于链表的创建、插入、删除等操作&#xff0c;代码量不是很多&#xff0c;相较哈希表、有向图等数据结构而言&#xff1b;但又考察应聘者的编程功底&#xff0c;为各个公司面试官所青睐。应当重视。 题目描述&…

js——两个栈Stack实现一个队列Queue

基本概念理解: /*栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性表。 其限制是仅允许在表的一端进行插入和删除运算。 这一端被称为栈顶&#xff0c;相对地&#xff0c;把另一端称为栈底。 向一个栈插入新元素又称作进栈、入栈或压栈&#xff0c…

使用struts

使用struts <action-mappings ><action path"/login" type"com.yourcompany.struts.action.LoginAction" ><forward name"ok" path"/tt1.jsp" /></action></action-mappings>

在浏览器中输入URL并回车后都发生了什么?

震惊脸&#xff0c;从没想过这是一个问题! 然而&#xff0c;这是前端小白必须要深刻了解的问题。前端面试经常问道&#xff0c;下面的每个阶段都可以大做文章&#xff01;&#xff01;&#xff01; 在浏览器网址栏输入baidu.com&#xff0c;点击enter出现百度搜索引擎。在这很…

讲讲浏览器的缓存机制

问题的开端是由http响应状态码304引出的&#xff01; 一般而言&#xff0c;第一次访问一个网站&#xff0c;返回的状态码是200。那304状态码有什么用&#xff1f; 这跟浏览器性能优化分不开。 例如&#xff0c;浏览器直接使用缓存而不发起请求&#xff0c;减少请求&#xff…