我刚学没多长时间,按照网上的方法我配置了一个数据连接池。但是不知道对不对。
下面是源程序:
(测试程序我放在默认的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
下面是源程序:
(测试程序我放在默认的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
<!-- 配置项目的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>
如果我再实例化一个conn; 是在连接池里获取一个数据库链接吗?