帮忙看一下数据库连接池(不好意思就10分了 -_-||| )
我刚学没多长时间,按照网上的方法我配置了一个数据连接池。但是不知道对不对。
下面是源程序:
(测试程序我放在默认的ROOT文件夹里)
D:\jakarta-tomcat-5.0.28\conf、server.xml <host> </host>
<Logger className= "org.apache.catalina.logger.FileLogger "
directory= "logs " prefix= "localhost_log. " suffix= ".txt "
timestamp= "true "/>
<Context path= " " docBase= "ROOT "
debug= "5 " reloadable= "true " crossContext= "true ">
<Logger className= "org.apache.catalina.logger.FileLogger "
directory= "logs " prefix= "localhost_log. " suffix= ".txt "
timestamp= "true "/>
<Resource name= "jdbc/connectDB "
auth= "Container "
type= "javax.sql.DataSource "/>
<ResourceParams name= "jdbc/connectDB ">
<parameter>
<name> factory </name>
<value> org.apache.commons.dbcp.BasicDataSourceFactory </value>
</parameter>
<parameter>
<name> removeAbandoned </name>
<value> true </value>
</parameter>
<parameter>
<name> removeAbandonedTimeout </name>
<value> 60 </value>
</parameter>
<parameter>
<name> logAbandoned </name>
<value> false </value>
</parameter>
<parameter>
<name> maxActive </name>
<value> 1000 </value>
</parameter>
<parameter>
<name> maxIdle </name>
<value> 30 </value>
</parameter>
<parameter>
<name> maxWait </name>
<value> 10000 </value>
</parameter>
<parameter>
<name> username </name>
<value> sa </value>
</parameter>
<parameter>
<name> password </name>
<value> tytymnty110110 </value>
</parameter>
<parameter>
<name> driverClassName </name>
<value> net.sourceforge.jtds.jdbc.Driver </value>
</parameter>
<parameter>
<name> url </name>
<value> jdbc:jtds:sqlserver://127.0.0.1:1433/airin_b2b;charset=gb2312 </value>
</parameter>
</ResourceParams>
</Context>
在:D:\jakarta-tomcat-5.0.28\webapps\ROOT\WEB-INF\web.xml
<?xml version= "1.0 " encoding= "ISO-8859-1 "?>
<web-app>
<display-name> tiannet web </display-name>
<description> connectDB test </description>
<resource-ref>
<description> DB Connection </description>
<res-ref-name> jdbc/connectDB </res-ref-name>
<res-type> javax.sql.DataSource </res-type>
<res-auth> Container </res-auth>
</resource-ref>
<welcome-file-list>
<welcome-file> index.jsp </welcome-file>
</welcome-file-list>
</web-app>
测试程序:
<%@ page contentType= "text/html;charset=gb2312 "%>
<%@ page import= "java.sql.* "%>
<%@ page import= "javax.sql.* "%>
<%@ page import= "javax.naming.* "%>
<html>
<body>
<%
DataSource ds = null;
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
InitialContext ctx = null;
String m_strDriver = "net.sourceforge.jtds.jdbc.Driver ", // 驱动字符串
m_strConURL = "jdbc:jtds:sqlserver "; // 连接字符串
try
{
ctx=new InitialContext();
ds=(DataSource)ctx.lookup( "java:comp/env/jdbc/connectDB "); //注意connectDB的名称和上面一致
conn = ds.getConnection();
stmt = conn.createStatement();
String strSql = " select * from 用户表 "; //test为数据库中的一个表
rs = stmt.executeQuery(strSql);
while(rs.next())
{
out.println(rs.getString(1) + " ");
out.println(rs.getString(2) + " ");
} rs.close();
stmt.close();
conn.close();
ctx.close();
}
catch(Exception ex)
{
out.println(ex.getMessage());
}
// finally
// {
// }
%>
</body>
</html>
Tomcat启动时提示:
AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@2b249)
LogAbandoned: tree
RemoveAbandonedTimeout:60
[解决办法]
给你一个例子,照着看吧(tomcat5.0后的版本不用在web。xml中不用声明对使用数据源的引用):
<Host name= "localhost " debug= "0 " appBase= "webapps " unpackWARs= "true " autoDeploy= "true " xmlValidation= "false " xmlNamespaceAware= "false ">
<!-- 配置项目的Context 信息-->
<Context path= "/desconn " reloadable= "true " docBase= "D:TestConnDes\WebRoot " workDir= "D:\TestConnDes\WebRoot\WEB-INF\Work ">
<!-- 配置数据源-->
<Resource auth= "Container " description= "XCPM Oracle Connection " name= "jdbc/desconn " type= "javax.sql.DataSource "/>
<ResourceParams name= "jdbc/desconn ">
<parameter>
<name> factory </name>
<value> org.apache.commons.dbcp.BasicDataSourceFactory </value>
</parameter>
<parameter>
<name> maxActive </name>
<value> 50 </value>
</parameter>
<parameter>
<name> maxWait </name>
<value> 1000 </value>
</parameter>
<parameter>
<name> username </name>
<value> sa </value> <!-- 数据库用户名-->
</parameter>
<parameter>
<name> password </name>
<value> 123456 </value> <!-- 数据库密码-->
</parameter>
<parameter>
<name> url </name>
<value> jdbc:microsoft:sqlserver://192.168.0.0:1433;DatabaseName=testDB </value> <!-- 数据库URL--> </parameter>
<parameter>
<name> driverClassName </name>
<value> com.microsoft.jdbc.sqlserver.SQLServerDriver </value> <!-- 数据库驱动--> </parameter>
<parameter>
<name> maxIdle </name>
<value> 30 </value>
</parameter>
</ResourceParams>
</Context>
</Host>
页面中使用数据源:
<%@ page language= "java " pageEncoding= "UTF-8 "%>
<%@ page import= "java.util.* " %>
<%@ page import= "java.sql.* " %>
<%@ page import= "javax.sql.* " %>
<%@ page import= "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 'TestDesConn.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>
测试tomcat数据源加密程序 <br>
<%
int i = 0 ;
try{
Context ctx = null;
DataSource ds = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String jndi_ds = "java:comp/env/jdbc/desconn " ;
ctx = new InitialContext();
ds = ( DataSource ) ctx.lookup(jndi_ds);
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery( "select * from orders ");
while (rs.next()) {
i++;
}
}catch (Exception e) {
e.printStackTrace();
}
System.out.println( "数据库中一共有 " + i + " 条订单记录。 ");
%>
</body>
</html>