server.xml配置如下:
<Context path="/ch000" docBase="ch000" debug="0"
reloadable="true" crossContext="true"> <Resource name="jdbc/temp" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/temp">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=JAVATEST</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>1</value>
</parameter>
</ResourceParams>
</Context> web.xml配置如下:
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<resource-ref>
<description>DB connection</description>
<res-ref-name>jdbc/temp</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app> DatabaseConn.java 如下:
package com.jspdev.util;import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
//一个用于查找数据源的工具类。
public class DatabaseConn {
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/temp"); ;
DataSource ds= (DataSource) initCtx.lookup("java:comp/env/jdbc/temp");
return ds.getConnection();
}
catch(SQLException e)
{
throw e;
}
catch(NamingException e)
{
throw e;
}
}} conpool.jsp如下:
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="javax.naming.Context"%>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.jspdev.util.*"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%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> </head> <body>
<%
try {
Connection conn = DatabaseConn.getConnection();
Statement stmt = conn.createStatement();
ResultSet rst = stmt.executeQuery("select * from test");
out.println("----------------");
while (rst.next()) {
out.println("Name:" + rst.getString("Name"));
out.println("<br>");
}
rst.close();
stmt.close();
conn.close();
} catch (Exception ne) {
out.println(ne);
} %>
<BR>
this is conpool.jsp
</body>
</html>在浏览器输入:http://localhost:8080/ch000/conpool.jsp
出现如下:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
this is conpool.jsp 请能人回答下,哪里出问题了?
另:jdbc都安装了的,而且也把那3个*.jar拷到common/lib中去了的。
<Context path="/ch000" docBase="ch000" debug="0"
reloadable="true" crossContext="true"> <Resource name="jdbc/temp" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/temp">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=JAVATEST</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>1</value>
</parameter>
</ResourceParams>
</Context> web.xml配置如下:
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<resource-ref>
<description>DB connection</description>
<res-ref-name>jdbc/temp</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app> DatabaseConn.java 如下:
package com.jspdev.util;import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
//一个用于查找数据源的工具类。
public class DatabaseConn {
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/temp"); ;
DataSource ds= (DataSource) initCtx.lookup("java:comp/env/jdbc/temp");
return ds.getConnection();
}
catch(SQLException e)
{
throw e;
}
catch(NamingException e)
{
throw e;
}
}} conpool.jsp如下:
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="javax.naming.Context"%>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.jspdev.util.*"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%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> </head> <body>
<%
try {
Connection conn = DatabaseConn.getConnection();
Statement stmt = conn.createStatement();
ResultSet rst = stmt.executeQuery("select * from test");
out.println("----------------");
while (rst.next()) {
out.println("Name:" + rst.getString("Name"));
out.println("<br>");
}
rst.close();
stmt.close();
conn.close();
} catch (Exception ne) {
out.println(ne);
} %>
<BR>
this is conpool.jsp
</body>
</html>在浏览器输入:http://localhost:8080/ch000/conpool.jsp
出现如下:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
this is conpool.jsp 请能人回答下,哪里出问题了?
另:jdbc都安装了的,而且也把那3个*.jar拷到common/lib中去了的。
还要在你WEB项目下的META-INF文件夹下的context.xml中设置数据源链接(没有自己手动建一个)
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<ResourceLink
name="jdbc/temp"
type="javax.sql.DataSource"
global="jdbc/temp"/>
</Context>
属性说明:name,同你在WEB.XML中子节点res-ref-name值;
type,同样取”javax.sql.DataSource”;
global,同name值。
this is conpool.jsp <name>url</name>
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=JAVATEST</value> 可能有问题
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=JAVATEST;user=sa;password=sql;</value>怎么没看到你数据源里面连接数据库的账号密码??
在你的server.xml 配制里面加上
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
TO:mikewolf_sky(天狼子)
按照你的方法,我手动添加了context.xml。但问题还是一样。
TO:feigme(泡沫微笑。o 0) 因为我的数据库默认用dbo,所以没有去设置用户跟密码。
再次谢谢!!
希望高手能解答
同样按照你的方法添加上去了数据库的账号密码。但问题还是一样。。
偶写了一篇搞连接池的,应该蛮详细了,你看看吧,希望对你有用!GOOD LUCK!
<ResourceParams name="jdbc/temp" .....>
TO:chaucer518(我爱我家的思思), http://127.0.0.1:8080/admin ,我的TOMCAT说要下载admin。改天再下载来研究。
TO:liaoxiaoqi(天崖) ,我的TOMCAT是5.5.17。按照你的方法,我把我的参数贴出来看对不对。<ResourceParams
name="jdbc/temp"
type="javax.sql.DataSource"
password="bn"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="20"
maxWait="5000"
username="bn"
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev;user=bn;password=bn;"
maxActive="100">
但出现了另外一种异常:
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
this is conpool.jsp
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev;SelectMethod=Cursor"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
username="sa"
password="sa"
maxWait="15000"
maxIdle="100"
maxActive="50" />
这里只要改3处文件(2个是TOMCAT\conf下的server.xml和context.xml,1个是自己工程下的web.xml)另外,mikewolf_sky(天狼子) 说的我没有去配。注意:我把数据源改为"jdbc/bn"另外创建了一个ch80的工程来测试的。
server.xml配置如下:<Context path="/ch80" docBase="ch80" debug="0"
reloadable="true" crossContext="true"> <Resource name="jdbc/bn" scope="Shareable" type="javax.sql.DataSource"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev;SelectMethod=Cursor"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
username="an"
password="an"
maxWait="15000"
maxIdle="100"
maxActive="50" />
<ResourceParams name="jdbc/bn">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev</value>
</parameter> <parameter>
<name>username</name>
<value>an</value>
</parameter>
<parameter>
<name>password</name>
<value>an</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
</Host>context.xml配置如下:(在</Context>上面添加如下代码)
<ResourceLink
name="jdbc/bn"
type="javax.sql.DataSource"
global="jdbc/bn"/>web.xml配置如下:(在</web-app>上面添加如下代码)<resource-ref>
<description>DB connection</description>
<res-ref-name>jdbc/bn</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
大功告成!!!