数据库连接池问题

gwang119 2004-09-20 10:48:45
我的 server.xml 代码:

<Context path="/Exec" docBase="d:\tomcat\webapps\Exec" debug="0">
<Logger className="org.apache.catalina.logger.FileLogger" directory="LogDefineByDigitalTitan" prefix="LogDefineByDigitalTitan." suffix=".txt"
timestamp="true"/>
<Environment name="maxExemptions" type="java.lang.Integer"
value="15"/>
<Parameter name="context.param.name" value="context.param.value"
override="false"/>
<Resource name="jdbc/AccessDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/AccessDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>sun.jdbc.odbc.JdbcOdbcDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:odbc:{Microsoft Access Driver(*.mdb)};d:\\sellsystem</value>
</parameter>
<parameter>
<name>username</name>
<value>java</value>
</parameter>
<parameter>
<name>password</name>
<value>java</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>98</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>

我在编辑了一个.jsp文件访问数据库连接池时,总是提示我未发现数据源并且没有指定默认的驱动程序!哪位高手帮忙?拿出最后20分!
...全文
151 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
gwang119 2004-09-20
我用的是Access!
回复
vongood 2004-09-20
象楼上。。。。。。。。。
回复
JIEK_ONE 2004-09-20
晕 这个要看你连的是什么数据库啊
不管你连的是MYSQL、SQL、DB2、ORACLE都可以在网上找的
啊 BAIDU、GOOGLE你应该知道怎么用吧
回复
gwang119 2004-09-20
在哪获得jdbc的驱动?
回复
viano 2004-09-20


给你个例子:


<!-- Tomcat Root Context -->

<Context path="" docBase="RooT" debug="0" reloadable="true">
<ResourceLink name="users" global="jdbc/oracle"
type="org.apache.catalina.UserDatabase"/>
<Resource name="jdbc/oracle" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/oracle">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@ip:端口:数据库名</value>
</parameter>
<parameter>
<name>username</name>
<value>用户名</value>
</parameter>
<parameter>
<name>password</name>
<value>密码</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>60</value>
</parameter>
<parameter>
<name>mixActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
</ResourceParams>
</Context>

绝对没有问题

在你的页面这样调用:

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
javax.sql.DataSource ds = (DataSource)envCtx.lookup("jdbc/oracle");
Connection conn = null;
Statement stmt = null;
Top
回复人:viano(我爱十三妹子) ( 五级(中级)) 信誉:100 2004-09-20 11:53:00 得分:0
?
还有要在 conf web。conf 下面加上:

<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
回复
viano 2004-09-20


还有要在 conf web。conf 下面加上:

<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
回复
viano 2004-09-20


你没有把 jdbc 驱动程序放到 lib 下面 所以不能找到!
回复
gwang119 2004-09-20
在哪里获得jdbc的驱动?
回复
gogollili 2004-09-20
你的jdbc驱动包没有找到,看看有没有将其放到你的lib文件夹下
回复
gwang119 2004-09-20
没有人知道吗?
回复
viano 2004-09-20
package com.west100;

import java.io.*;
import java.sql.*;
import java.util.Date;
import java.util.*;



public class ConnManager {


//private static String Driver = "数据库驱动";
private static String Url = "你的url";
private static String Login = "数据库用户名";
private static String Pass = "密码";
//private Connection conn;
//private Statement stmt;
//private PreparedStatement pstmt;
private int minConn = 1;
private int maxConn = 20;
PrintWriter loger=null;
String logFile ="F:/project/movie/WebModule/log/log.txt";

static int connAmount = 0; //现有的连接个数
static Stack stack = new Stack();
Vector vector = new Vector();

private static ConnManager instance;

public static synchronized ConnManager getInstance()
{
if(instance == null)
{
instance = new ConnManager();
}
else
{
System.out.println(instance);
}
return instance;
}


private ConnManager()
{
try
{
loger = new PrintWriter(new FileWriter(logFile, true), true);
}
catch(IOException e)
{
System.err.println("无法打开日志文件"+logFile);
loger = new PrintWriter(System.err);
}


try
{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
for(int i=0; i<minConn; i++)
{
Connection conn = newConnection();
if(conn != null)
{
stack.push(newConnection());
}
}

}
catch(Exception e)
{
System.out.println("ConnectionManager: driver not loaded");
//conn = null;
}


}

private void log(String msg)
{
loger.println(new Date() + ":" + msg);
}


public synchronized void freeConnection(Connection con)
{
stack.push(con);
notifyAll();
log("归还一个连接到连接池!");
}


public synchronized Connection getConnection()
{
Connection conn = null;


// System.out.println(" ======================="+stack.size());

if(stack.size() > 0)
{
System.out.println("从连接池取出一个连接");
System.out.println("现在可用的连接总数1. 为:" + stack.size());
conn = (Connection) stack.pop();
System.out.println("现在可用的连接总数2. 为:" + stack.size());

}
if(stack.size() < maxConn)
{
conn = newConnection();
}
else if(stack.size() >= maxConn)
{
try
{
System.out.println("等待连接");
wait(100000);
return getConnection();
}
catch(InterruptedException e)
{
System.out.println("发生异常" + e.getMessage());
}
}
return conn;
}

private synchronized Connection newConnection()
{
Connection conn = null;
try
{
if(stack.size() < maxConn)
{
conn = DriverManager.getConnection(Url, Login, Pass);
connAmount++;
if(conn != null)
{
System.out.println("创建一个连接成功:" + connAmount + " " + conn);
System.out.println("连接池创建一个连接 !");
}
return conn;
}
else
{
try
{
log("等待 连接中 :");
wait(10000);
return newConnection();
}
catch(InterruptedException e)
{
log("等待 超时 !");
return null;
}
}
}
catch(SQLException e)
{
log("无法创建连接: " + Url);
return null;
}

//return conn;
}
}
回复
viano 2004-09-20


数据库连接池 可以自己写一个

也可以用网络上的 例如 jive 的!



回复
gwang119 2004-09-20
如果一定要用数据库连接池呢?
回复
viano 2004-09-20


如果你学习用,或者小型网站 用mysql 吧!
回复
viano 2004-09-20


Access ???

再不要用了。

要连接你可以建一个数据源 odbc 去连它吧!
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-09-20 10:48
社区公告
暂无公告