如何 不使用 server.xml文件配置Tomcat自带连接池?

04-04-05 seaman0916
使用server.xml文件配置Tomcat自带连接池我已经配置成功了,但是我现在遇到的问题是:我做的是个管理系统,选择不同的选项会连接到不同的数据库,这就要创建不同的连接池,当然这在server.xml中也是可以实现的,但是这些数据库配置信息我希望可以通过程序修改,这就造成了修改后必须要重新启动Tomcat!

我想能不能把配置文件放到其他的地方,当然格式还是按server.xml中的方式,我选择不同的选项时传递不同的配置文件的路径,这样就会读取不同的参数,创建连接池!这样的话,修改配置文件不需要重新启动tomcat,而且配置参数是不需要考虑tomcat的路径(server.xml),程序移植时也方便一些!

DataSource ds = null;

try{

Context initCtx = new InitialContext();

Context envCtx = (Context) initCtx.lookup("java:comp/env");

ds = (DataSource)envCtx.lookup("jdbc/TestDB");

Connection conn=ds.getConnection();

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("select * from users");

while(rs.next()){

out.println(rs.getString(2));

}

conn.close();

}catch(Exception ne){ out.println(ne); }

这是连接池的使用,我想是否能通过 JNDI 来搞定呢? 或者其他的方法.

希望给个建议!

liugy
2004-04-05 17:33
使用TOMCAT的连接池时,conn.close();并不会真正关掉连接,而是将连接还给了池子。这个池里对象是由TOMCAT维护的。自己实现连接池也是可能的,使用一些设计模式呗。但是要真正控制连接池是比较困难的,比如连接超时后的释放问题等。

我至今不知到如何在JAVA的应用层写由时间(timer)驱动的程序。谁知道吗?

cats_tiger
2004-04-07 13:49
看来好复杂,还不如用jive的连接池。要不就自己作连接池,也不是很复杂。

seaman0916
2004-04-07 16:27
谢谢大家!

Jive的连接池我没用过,但是我说的动态连接多个数据库,并且创建连接池的功能可以实现吗?

seaman0916
2004-04-08 14:59
在 JSP编程指南(第二版) 的page458上有这段代码:

import javax.sql.*;

import javax.naming.*;

com.dbcompany.BasicDataSource ds=new com.dbcompany.BasicDataSource();

datasource.setServerName("decartes"); // a DB server

db.setDatabaseName("presidential_election");

//DataBase 对象被JNDI名称服务功能注册

Context context=new Context();

context.bind("jdbc/election",dataSource);

------------------------------------

这就是一种配置数据源的方法吧,只是com.dbcompany.BasicDataSource这个包,我找不到!

请问: 还有没有和上面类似功能的配置数据源方法?

猜你喜欢