关于topcat配置数据库连接池的问题

netstarry 2003-05-10 06:49:47
我使用tomcat4.1的管理页面配置了连接池
server.xml增加了如下内容
<Resource name="dbconnection" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="dbconnection">
<parameter>
<name>validationQuery</name>
<value></value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>oliver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/xyjmud</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>oliver</value>
</parameter>
</ResourceParams>

是放在GlobalNamingResources标签里面的
我把mysql的驱动也拷贝在了common/lib目录
但是启动服务器的时候出错
GlobalResourcesLifecycleListener: Exception processing Global JNDI Resources
javax.naming.NamingException: Cannot create resource instance
请问如何解决?谢了!
...全文
65 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
netstarry 2003-05-10
  • 打赏
  • 举报
回复
找不到org.apache.commons.dbcp.BasicDataSourceFactory这个类,这个类在哪?
希偌 2003-05-10
  • 打赏
  • 举报
回复
配置方法请参阅文档
http://www.zdnet.com.cn/developer/code/story/0,2000081534,39134180,00.htm
JavaZheng 2003-05-10
  • 打赏
  • 举报
回复
试试看收工写server。xml试试看,我上次也用控制台配置就没成功
送一篇好文给你
介绍利用tomcat4.1内置连接池连接数据库的方法

tomcat4.1较之以前的版本有了很大的变化,这里我们主要介绍利用tomcat4.1内置的连接池,连接数据库的方法,主要是对它的核心配置文件进行一些修改,比以往的方法更简洁,更高效。下面是针对两个不同的操作系统linux和windows的两个不同数据库的详细说明。



•linux操作系统:Rathat8.0

数据库:mysql



下载下列软件包

j2sdk-1_4_0_02-linux-i586-rpm.bin

jakarta-tomcat-4.1.12.tar

mysql-3.23.53a-rpm

mysql-connector-java-2.0.14.tar



•windows操作系统:Windows 2000

数据库:SQLServer2000



下载下列软件包

j2sdk-1_4_0_01-windows-i586

jakarta-tomcat-4.1.12.zip

setup (Microsoft SQL server 2000 for Driver JDBC)



以下配置适用于redhat8.0-mysql环境,windows2000-sqlsever2000环境下的配置被注释掉了。其中locahost为redhat8.0-mysql和windows2000-sqlsever2000的主机名或IP地址。

假设已经建好的数据库名为:DBjsp;用户名zktd;密码 123。



一、修改配置文件

1、在/tomcat/webapps目录下新建应用程序目录,如目录名为DBTest。

2、在/tomcat/webapps/DBTest目录下新建分类子目录,如目录名分别为jsp,servlet,WEB-INF。

3、在DBTest/WEB-INF目录下新建classes目录,以后自定义的javabean就放置在此目录下

4、修改配置文件server.xml

打开配置文件/usr/local/tomcat/conf/server.xml

添加内容的位置在</context>和</host>标签之间

添加内容如下:

<Context path="/DBTest" docBase="DBTest"

debug="5" reloadable="true" crossContext="true">



<Logger className="org.apache.catalina.logger.FileLogger"

prefix="localhost_DBTest_log." suffix=".txt"

timestamp="true"/>



<Resource name="jdbc/TestDB"

auth="Container"

type="javax.sql.DataSource"/>



<ResourceParams name="jdbc/TestDB">

<parameter>

<name>factory</name>

<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

</parameter>



<!-- Maximum number of dB connections in pool. Make sure you

configure your mysqld max_connections large enough to handle

all of your db connections. Set to 0 for no limit.

-->

<parameter>

<name>maxActive</name>

<value>100</value>

</parameter>



<!-- Maximum number of idle dB connections to retain in pool.

Set to 0 for no limit.

-->

<parameter>

<name>maxIdle</name>

<value>30</value>

</parameter>



<!-- Maximum time to wait for a dB connection to become available

in ms, in this example 10 seconds. An Exception is thrown if

this timeout is exceeded. Set to -1 to wait indefinitely.

-->

<parameter>

<name>maxWait</name>

<value>10000</value>

</parameter>



<!-- MySQL dB username and password for dB connections -->

<parameter>

<name>username</name>

<value>zktd</value>

</parameter>

<parameter>

<name>password</name>

<value>123</value>

</parameter>



<!-- Class name for mm.mysql JDBC driver -->

<parameter>

<name>driverClassName</name>

<!--*用于sqlserver2000*<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>*sqlserver2000*-->

<value>org.gjt.mm.mysql.Driver</value>

</parameter>



<!-- The JDBC connection url for connecting to your MySQL dB.

The autoReconnect=true argument to the url makes sure that the

mm.mysql JDBC Driver will automatically reconnect if mysqld closed the

connection. mysqld by default closes idle connections after 8 hours.

-->

<parameter>

<name>url</name>

<!--*用于SQLServer2000*<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DBjsp</value>*SQLServer2000*-->

<value>jdbc:mysql://localhost:3306/DBjsp</value>

</parameter>

</ResourceParams>

</Context>



5、新增一个配置文件:web.xml

将配置文件放置在/tomcat/webapps/DBTest/WEB-INF/目录下。

配置文件内容如下:



<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<description>MySQL Test App</description>

<resource-ref>

<description>DB Connection</description>

<res-ref-name>jdbc/TestDB</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

</web-app>



(6)、添加环境变量

如果你的tomcat是新安装的,则需要修改下面的配置文件添加环境变量

打开配置文件/etc/profile添加下面的环境变量



JAVA_HOME=/usr/java/jdk

export JAVA_HOME



CLASSPATH=/usr/java/jdk/src.zip

export CLASSPATH



PATH="$PATH:/usr/X11R6/bin":/usr/java/jdk/bin:/usr/java/jre/bin:.



CATALINA_HOME=/usr/local/tomcat

export CATALINA_HOME



二、安装jdbc驱动程序



首先将mysql-connector-java-2.0.14.tar解压缩

# tar xvzf mysql-connector-java-2.0.14.tar

然后将JDBC的.jar文件拷贝到公共库的/tomcat/common/lib目录下



同样对于windows2000操作系统的sqlserver2000

双击setup安装jdbc驱动程序,将/program files/microsoft SQL Server 2000 driver for JDBC/lib目录下的.jar文件拷贝至公共库的/tomcat/common/lib目录下





三、应用举例(用连接池连接数据库实例)



(1) 在数据库DBjsp下建表testdata

mysql> create table testdata (
-> id int not null auto_increment primary key,
-> foo varchar(25),
-> bar int);



(2) 编写测试程序test.jsp,读取数据库表名为testdata的字段的内容,并将结果显示出来。

testdata有两个字段foo和bar。



<html>

<head>

<title>DB Test</title>

</head>

<body>



<%

foo.DBTest tst = new foo.DBTest();

tst.init();

%>



<h2>Results</h2>

Foo <%= tst.getFoo() %><br/>

Bar <%= tst.getBar() %>



</body>

</html>



(3)编写javabean程序取名为DBTest.java用于连接数据库,将编译好的DBTest.class保存到/tomcat/webapps/DBTest/WEB-INF/classes/foo目录下



package foo;

import javax.naming.*;

import javax.sql.*;

import java.sql.*;



public class DBTest {



String foo = "Not Connected";

int bar = -1;



public void init() {

try{

Context ctx = new InitialContext();

if(ctx == null )

throw new Exception("Boom - No Context");



DataSource ds =

(DataSource)ctx.lookup(

"java:comp/env/jdbc/TestDB");



if (ds != null) {

Connection conn = ds.getConnection();



if(conn != null) {

foo = "Got Connection "+conn.toString();

Statement stmt = conn.createStatement();

ResultSet rst =

stmt.executeQuery(

"select id, foo, bar from testdata");

if(rst.next()) {

foo=rst.getString(1);

bar=rst.getInt(2);

}

conn.close();

}

}

}catch(Exception e) {

e.printStackTrace();

}

}



public String getFoo() { return foo; }

public int getBar() { return bar;}

}



(3) 启动tomcat,运行测试程序

# /usr/local/tomcat/bin/startup.sh

http://localhost:8080/DBTest/test.jsp

运行结果将显示testdata表中的foo和bar字段的内容。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧