`
huxiaoheihei
  • 浏览: 174644 次
  • 性别: Icon_minigender_2
  • 来自: 吉林
社区版块
存档分类
最新评论

tomcat 6..0.20 连接池配置 SQL server 2000数据库

阅读更多
我的测试是程序是index.jsp
<%@   page   contentType="text/html;charset=gb2312"%>   
<%@   page   import="java.sql.*"%>  
<%@   page   import="javax.sql.*"%>  
<%@   page   import="javax.naming.*"%>  
<HTML>
<HEAD>
<TITLE>JSP测试页面</TITLE>
</HEAD>
<BODY>
<%out.println("<h1>Hello,test JNDI ! </h1>");%>
<%
     Context ctx = new InitialContext();   
      Context envctx = (Context)ctx.lookup("java:comp/env");   
      DataSource ds = (DataSource) envctx.lookup("jdbc/TestDB");   
      Connection  conn=ds.getConnection();   
      Statement st=conn.createStatement();  

out.print("使用jdbc驱动操作数据库操作成功,恭喜你"); %>

</BODY>
</HTML> 

tomcat 的conf的context.xml的配置如下:
<?xml version='1.0' encoding='utf-8'?>

<Context>

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Resource name="jdbc/TestDB" auth="Container"
              type="javax.sql.DataSource"
              username="zhanghr"
              password="000000"
              maxWait="50"
              maxIdle="40"
              maxActive="10"
              driverClassName="com.microsoft.jdbc.sqlserver.SQLServer"
              url="jdbc:microsoft:sqlserver://192.168.1.109:1433;DatabaseName=test" />
</Context>

我的程序目录WEN-INF中web.xml文件配置如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd"
   version="2.4">

  <display-name>DbTest</display-name>

<resource-ref>  
         <description>DB Connection</description>  
         <res-ref-name>jdbc/TestDB</res-ref-name>  
         <res-type>javax.sql.DataSource</res-type>  
         <res-auth>Container</res-auth>  
        </resource-ref>  
</web-app>

我得到的出错信息是:
description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 15

12:      Context ctx = new InitialContext();   
13:       Context envctx = (Context)ctx.lookup("java:comp/env");   
14:       DataSource ds = (DataSource) envctx.lookup("jdbc/TestDB");   
15:       Connection  conn=ds.getConnection();   
16:       Statement st=conn.createStatement();  
17:
18:  out.print("使用jdbc驱动操作数据库操作成功,恭喜你"); %>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)



这是我自己写的,肯定好用,参考一下吧。
数据库连接的建立和关闭是非常耗费系统资源的操作。数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由应用程序动态的对池中的连接进行申请、使用和释放。对于多余连接池中的连接数的请求,应在请求队列中排队等待。并且应用程序会根据连接的使用率动态的增加和减少池中的连接数。
连接池技术尽可能多的重用了消耗内存的资源,大大节省了内存,提高了服务器的效率。
不同的版本的tomcat创建连接池的方法是不同的。下面基于tomcat5.5 + MS sql server 2k来说明。
step1:数据库驱动(三个jar)放到$tomcat$/common/lib中。
step2:打开$tomcat$/conf/server.xml,在host下加入如下代码
以下是引用片段:
<Context path="" docBase="D:\myelipseJsp\dsideal\WebRoot" reloadable="true">
<Resource
      name="jdbc/xxx"
      type="javax.sql.DataSource"
      username="sa"
      password=""
      driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
      url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=database"
      maxActive="300"
      maxIdle="100"
      maxWait="5000"
      removeAbandoned="true"
      removeAbandonedTimeout="100"  
      logAbandoned="true"
        />
</Context>



注:在tomcat6.0下,需要在Resource中加入一句auth="Container"即可。

maxActive是最大激活连接数,这里取值为300,表示同时最多有300个数据库连接。
maxIdle是最大的空闲连接数,这里取值为100,表示即使没有数据库连接时依然可以保持100空闲的连接,而不被清除,随时处于待命状态。
MaxWait是最大等待秒钟数,这里取值5000,表示5秒后超时,也可取值-1,表示无限等待,直到超时为止。
removeAbandoned="true"
removeAbandonedTimeout="100"  
logAbandoned="true"
以上三句话也需要加入,其主要作用在于当并发用户超过预定的连接后会有一些连接因为等待而失效,要及时回收这些无效链接。100表示100秒。

在connpool.jsp中使用。

以下是引用片段:
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>
<%@ page import="javax.naming.Context"%>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/xxx");
Connection conn = ds.getConnection();
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from news";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%> <br>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();  
%> 


注意两段代码中的jdbc/xxx为连接池的名字,要保持一致。

当然我们也可以将连接封装起来,作为一个类使用。结合我们以前所讲的dataconn.java,这里我将它们合并为一个类。代码如下:

以下是引用片段:
package dataconn;
import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
public class  dataconn{
ResultSet rs = null;
Connection conn=null;
Statement stmt=null;
//连接池
public  static  synchronized Connection getConnection() throws Exception
{
  try
  {
  
   Context initCtx = new javax.naming.InitialContext();
            Context envCtx = (Context) initCtx.lookup("java:comp/env");
            DataSource ds = (DataSource)envCtx.lookup("jdbc/xxx"); ;
   return ds.getConnection();
  }
  catch(SQLException e)
  {
   throw e;
  }
  catch(NamingException e)
  {
       throw e;
  }
 
}
//更新数据
public void executeUpdate(String sql) {
  try {
   conn = getConnection();
   }
  catch (Exception ex) {
                           ex.printStackTrace();
                   }
  try {
    stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
   stmt.executeUpdate(sql);
   }
  catch(SQLException ex) {
   System.err.println("aq.executeUpdate: " + ex.getMessage());
   System.err.println("aq.executeUpadatestrSQL: " + sql);
   }
  }
 
//查询数据
public ResultSet executeQuery(String sql) {
   rs = null;
   try {
   conn = getConnection();
   }
  catch (Exception ex) {
                           ex.printStackTrace();
                   }
   try {
    stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    rs = stmt.executeQuery(sql);
    }
   catch(SQLException ex) {
    System.err.println("aq.executeQuery: " + ex.getMessage());
    System.err.println("aq.executeQuerystrSQL: " + sql);
   }
   return rs;
  } 
 
public void closeStmt()
  {
   try{
    if(stmt!=null){
     stmt.close();
    }
      }
   catch(SQLException e){
    e.printStackTrace();
      }
  }


public void closeConn()
{
  try{
   if (conn!=null){
    conn.close();
   }
     }
  catch(SQLException e){
   e.printStackTrace();
     }
}
}


此外你要保证你的sqlserver数据库是好用的才行,用这个测试一下
<%@ page contentType="text/html;charset=gb2312"%>
  <%@ page import="java.sql.*"%>
  <html>
  <body>
  <%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
  String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=data_2007";
  String user="sa";
  String password="sa";  
  Connection conn= DriverManager.getConnection(url,user,password);
  Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  String sql="select * from userlist";
  ResultSet rs=stmt.executeQuery(sql);
  while(rs.next()) {%>
  您的第一个字段内容为:<%=rs.getString(1)%> <br>
  您的第二个字段内容为:<%=rs.getString(2)%> <br>
  您的第三个字段内容为:<%=rs.getString(3)%> <br>
  <%}%>
  <%out.print("数据库操作成功,恭喜你");%>
  <%rs.close();
  stmt.close();
  conn.close();  
  %>

将上面代码另存为.jsp,注意修改数据库名,用户名和密码,即可测试sql server是否安装成功。
分享到:
评论

相关推荐

    JSP中tomcat的SQL Server2000数据库连接池的配置

    在探讨“JSP中Tomcat的SQL Server2000数据库连接池的配置”这一主题时,我们首先需要理解几个核心概念:JSP(JavaServer Pages)、Tomcat、SQL Server2000以及数据库连接池。 ### JSP(JavaServer Pages) JSP是一...

    Tomcat连接池配置.doc

    * global:指定全局数据库连接配置名 * name:指定全局数据库连接的别名 * type:指定连接池的类型 PoolLocal.xml 文档中的主要配置项包括: * docBase:指定工程目录 * name:指定局部数据库连接的别名 五、...

    Tomcat服务器配置及数据库连接池配置(个人整理版)

    ### Tomcat服务器配置及数据库连接池配置详解 #### 一、Tomcat服务器配置与环境搭建 ##### 1. JDK安装与配置 - **系统环境**:Windows 2003 Server SP3。 - **JDK路径设置**: - `JAVA_HOME` 设置为 `C:\JDK`。 ...

    tomcat 6.X 连接池的配置

    Tomcat 6.X 的连接池配置是一个核心环节,它通过数据库连接池实现资源复用,提高应用效率。 【标签】:Tomcat 连接池 MySQL Oracle 【正文】: 数据库连接池是现代Web应用程序中不可或缺的一部分,它优化了数据库...

    Tomcat6.doc数据库连接池配置

    Tomcat作为一款流行的Java Servlet容器,支持多种数据库连接池的配置。在Tomcat 6.0版本中,数据库连接池的配置相比之前的版本有了更多的灵活性。以下是针对Tomcat 6.0进行数据库连接池配置的详细步骤: 首先,我们...

    tomcat配置sql数据库

    通过上述步骤,我们不仅成功地在Tomcat中配置了SQL Server数据库,而且还了解了如何编写简单的JSP页面来测试数据库连接。这对于初学者来说是非常实用的技能,也是深入学习Java Web开发的基础之一。在未来的学习和...

    Tomcat6.x连接池的配置说明

    本文将详细讲解Tomcat 6.x版本的连接池配置,以帮助你理解并实施有效的数据库连接管理。 首先,Tomcat 6.x默认使用的是Catalina内置的JDBC连接池,也称为DBCP(Database Connection Pool)。它基于Apache Commons ...

    tomcat5.5.X域名转向和连接池配置的server.xml文件

    Tomcat 5.5.x的`server.xml`文件是服务器配置的核心,它控制着虚拟主机、连接池等关键功能。理解并正确配置这些参数对于优化Web应用的性能和用户体验至关重要。通过本文的讲解,你应该能掌握如何在`server.xml`中...

    Tomcat5.5.X下配置连接池

    Tomcat 5.5.x版本虽然相对较老,但依然有很多项目在运行,因此了解如何在该版本下配置连接池是至关重要的。连接池是一种管理数据库连接的技术,它能够有效地复用数据库连接,减少创建和销毁连接的开销,提高系统性能...

    数据库连接池配置使用驱动(sqlserver+mysql)

    本教程将重点讲解如何在Tomcat容器中配置SQL Server和MySQL的数据库连接池,并涉及相应的驱动使用。 一、SQL Server连接池配置 1. **下载驱动**:首先,你需要下载适用于Java的SQL Server数据库驱动,通常为`mssql...

    tomcat连接sqlserver2008的步骤

    在IT行业中,Tomcat是一款广泛使用的轻量级Java应用服务器,而SQL Server 2008是Microsoft提供的一个强大数据库管理系统。将Tomcat与SQL Server 2008连接起来,可以让Java应用程序利用数据库存储和处理数据。以下是...

    tomcat连接池与阿里Druid连接池

    Tomcat 连接池是一种基于 Java 的数据库连接池实现,提供了高效、可靠的数据库连接管理。阿里 Druid 连接池是阿里巴巴开发的开源连接池,提供了高性能、可靠的数据库连接管理。下面我们将对 Tomcat 连接池和阿里 ...

    tomcat数据库连接池配置.TXT

    tomcat数据库连接池配置.TXTtomcat数据库连接池配置.TXTtomcat数据库连接池配置.TXTtomcat数据库连接池配置.TXT

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

    ### Tomcat5的数据库连接池配置详解 #### 引言 在Java Web开发中,数据库连接池是一项关键的技术,能够显著提升应用性能和资源利用效率。对于Tomcat5这一历史较为悠久但依然在某些场景中活跃的服务器软件,正确...

    tomcat配置sql数据库[参考].pdf

    ### Tomcat配置SQL Server数据库连接池详解 #### 一、背景介绍 随着互联网技术的发展,Web应用程序变得越来越重要。为了确保这些应用能够高效地运行,合理配置应用服务器和数据库之间的连接至关重要。Tomcat作为一...

    tomcat_连接池数据库密码加密解密方法

    在Tomcat环境下,连接池通常使用Apache Commons DBCP(Database Connection Pool)来管理数据库连接。默认情况下,DBCP会直接读取配置文件中的用户名和密码,这意味着这些信息是以明文形式存在的。一旦服务器被非法...

    tomcat7.0.109下载

    7. **JNDI资源**:Tomcat支持JNDI(Java Naming and Directory Interface),允许在`conf/server.xml`中的`&lt;GlobalNamingResources&gt;`元素内定义数据库连接池和其他资源。 8. **性能优化**:Tomcat可以通过调整...

    tomcat6.0配置sql2005数据库连接池.doc

    配置数据库连接池是为了优化数据库连接的创建和管理,提高应用性能。 【描述】中的知识点:配置连接池可以避免频繁地创建和关闭数据库连接,减少系统资源消耗,尤其在高并发环境下至关重要。Tomcat的`context.xml`...

    tomcat5.5+sql2000数据库连接池配置

    ### Tomcat 5.5 + SQL Server 2000 数据库连接池配置详解 本文旨在详细介绍如何在Tomcat 5.5环境下配置SQL Server 2000的数据库连接池,解决常见的连接问题,并确保应用程序能够高效稳定地运行。 #### 一、环境...

    tomcat5.0.x与tomcat5.5.x的配置有较大区别

    标题中的“tomcat5.0.x与tomcat5.5.x的配置有较大区别”指的是在升级或迁移Tomcat版本时,配置...在实际操作中,根据具体的应用需求和数据库配置,可能还需要调整其他参数,如连接池的初始化大小、最小空闲连接数等。

Global site tag (gtag.js) - Google Analytics