问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-08 19:17

我来回答

2个回答

热心网友 时间:2022-04-08 20:47

这是我自己写的,肯定好用,参考一下吧。
数据库连接的建立和关闭是非常耗费系统资源的操作。数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由应用程序动态的对池中的连接进行申请、使用和释放。对于多余连接池中的连接数的请求,应在请求队列中排队等待。并且应用程序会根据连接的使用率动态的增加和减少池中的连接数。
连接池技术尽可能多的重用了消耗内存的资源,大大节省了内存,提高了服务器的效率。
不同的版本的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是否安装成功。

热心网友 时间:2022-04-08 22:05

我的是在Tomcat6.0中的conf的context.xml中试这样配置的:
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="scott" password="tiger" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@localhost:1522:ORA10G" />
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑文件编辑好如何发送给微信如何把电脑上的文件发到微信上 笔记本电脑上的文件发送到微信怎么把电脑里的文件传到手机微信 我每天早晨吃米糊放白糖有害吗? 吃糖太多对我有好处么! 适合明年工作计划开头的句子 让人耳目一新的年度工作计划开头句子锦集五十四句 个人年度工作计划开头优美句子 让上司眼前一亮的工作计划开头语收藏四十一句 工作计划开头 怎么写工作计划开头 新干线0系电动列车的运行设备 有谁知道网上投标上传不了文件,怎么办? 高德地图有有对亲友的定位功能吗? 双方都是安卓系统手机从高德地图怎样去设置定位功能去 农业银行白户信用贷款可以吗? 农业银行有信用贷款吗 怎样在word文档里制作田字格 田字格word制作方法 梦见朋友说讨厌自己? 我刚才梦见全班同学都很讨厌我,只有一个曾经说喜欢我的人一直在支持我 梦见从小学就一直欺负我的人和我在一个班级陷害我让所有人都讨厌我自己想尽一? 做梦梦到以前喜欢我的男同学讨厌我,怎么回事 梦见所有人都讨厌自己还揍我!都是我熟悉的小学同学和好朋友几乎所有人除了亲戚和女朋友之外。 梦见异性说讨厌自己 梦见自己的好朋友,都很讨厌我,都不和我玩,心里很难过 昨晚梦见以前对我很好的老同学现在见面突然很讨厌我,请问这预兆着什么? 做梦梦见小学同学都讨厌我是怎么回事 梦见好朋友说讨厌我! 梦见班里男同学讨厌自己寓意 梦见同学们都讨厌我是怎么回事? 怎么用笔记本电脑连接投影仪(在属性设置里的方法)? 我是百度云的会员,使用MAC电脑上用浏览器传一个1.6G的文件,说超过*了! 火狐浏览器上传文件最大多大 115网盘不是说支持单文件*115G吗?为什么我用115浏览器上传还是提示单文件过大? QQ浏览器上传图片显示图片太大怎么办 QQ浏览器的云u盘单个文件上传*多大?为什么我上传90m的压缩包上去,... 蓝丁胶可以贴对联吗 京东溯源码怎么查询 京东全球购溯源码怎么扫 京东追溯编码有什么用 请问用妙控鼠标操作微信版Mac的时候该怎么转发消息? 如何把微信聊天记录同步到mac微信聊天记录 写作文 我眼中的仙人掌 雪蛤有什么功效? 有专门拦截广告的软件吗 比较好的是那一个 发泡处理 梦见有人往家里送一筐西红柿好不好 三分钟泡面 三小时煲汤 慢慢来的都是一种诚意,是什么意思? 梦见老乡给我送小青西红柿? 如何看待「有人三分钟泡面,有人三小时煲汤」,现在人对美食、对生活的投入差异是否越来越大? 我梦见妈妈送我番茄