poolman 数据库连接池示例

cjg435 2003-08-09 11:56:49
我用的是虚拟主机,不能用应用服务器自带的连接池,现在要找一个比较成熟的连接池,我找到了poolman 我看了自带的readme,按要求配置了,但不知道在JSP页面中怎么用,能否给我一些例子程序,e-mial是cjg@adlo.com.cn
或者提供一些更好的连接池。谢谢!
...全文
57 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leowu 2003-08-11
  • 打赏
  • 举报
回复
一个poolman.xml的例子,放在你的javasource根目录下,程序里可以通过
JNDI的lookup方法得到这个DataSource。
<?xml version="1.0" encoding="UTF-8"?>

<poolman>

<management-mode>local</management-mode>

<!-- ========================================================== -->
<!-- These entries are an example of JDBC Connection pooling. -->
<!-- Many of the parameters are optional. Consult the -->
<!-- UsersGuide.html doument and the poolman.xml.template file -->
<!-- for guidance and element definitions. -->
<!-- ========================================================== -->

<datasource>

<!-- ============================== -->
<!-- Physical Connection Attributes -->
<!-- ============================== -->

<!-- Standard JDBC Driver info -->

<dbname>jdbc/isfa</dbname>
<jndiName>isfa</jndiName>
<driver>COM.ibm.db2.jdbc.app.DB2Driver</driver>
<url>jdbc:db2:isfa</url>

<username>db2inst1</username>
<password>ibmdb2</password>

<minimumSize>0</minimumSize>
<maximumSize>10</maximumSize>
<connectionTimeout>600</connectionTimeout>
<userTimeout>12</userTimeout>
<shrinkBy>10</shrinkBy>

<logFile>e:\poolman.log</logFile>
<debugging>true</debugging>

<!-- Query Cache Attributes-->

<cacheEnabled>false</cacheEnabled>
<cacheSize>20</cacheSize>
<cacheRefreshInterval>120</cacheRefreshInterval>

</datasource>



<!-- DISABLED FOR PRODUCTION
<admin-agent>
<class>com.sun.jdmk.comm.HtmlAdaptorServer</class>
<name>Adaptor:name=html</name>
<maxClients>10</maxClients>
<port>8082</port>
</admin-agent>
-->

</poolman>
cjg435 2003-08-11
  • 打赏
  • 举报
回复
老大,我都说了我是:我用的是虚拟主机,不能用应用服务器自带的连接池,
主机提供的是tomcat的,TOMCAT 的连接池我会用,但现在不能虚似主机上用,
要找poolman这样的连接池,但我不知道怎样用,还有我用的inet的JDBC去连接msSql
好像这个inet中有连接池,便我也不知怎么用!能否帮我看看!分不够可在加!
cjg435 2003-08-11
  • 打赏
  • 举报
回复
首先谢谢leowu(leo) poolman的配置我已经配好了,并且在命令行测试也有时成功有时不成功,我用的是inetdae这个jdbc驱动,连接msSQL数据库,我想问的是在JSP页面中怎么连接和关闭,要有例子,inet 包里面还有pool包这个好像也是连接池,但也不知怎么用!
icecloud 2003-08-10
  • 打赏
  • 举报
回复
楼上的不要误导..你说的方法很差劲
tomiw 2003-08-10
  • 打赏
  • 举报
回复
在CLASSPATH中加入微软的JDBC的三个驱动包
在jsp中输入DBConnectionManager类
<% @page import="test.DBConnectionManager" %>
icecloud 2003-08-10
  • 打赏
  • 举报
回复
不用poolman吧?
自己找一个类呗。

http://expert.csdn.net/Expert/topic/1656/1656634.xml?temp=.214245
lizexpert 2003-08-09
  • 打赏
  • 举报
回复
up
一个使用ADO连接池的示例,演示了TADOStoredProc动态参数的使用,带重连机制 =================== unit UnitDemo; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; //数据库服务器 gDBServer: String = '127.0.0.1'; //数据库名称 gDBName: String = 'master'; //数据库用户名 gDBUser: String = 'sa'; //密码 gDBPass: String = '2001'; implementation {$R *.dfm} uses ADODB, UnitADOConnectionPool; const CreateSQL = 'create procedure TestMyPool (@type sysname) '#13#10+ 'as'#13#10+ 'select * from sysobjects where xtype=@type'#13#10+ 'return @@rowcount'; DeleteSQL = 'if Exists(select 1 from sysobjects where xtype=N''P'' and name=N''TestMyPool'')'#13#10+ ' drop procedure TestMyPool'; var gPoolMan: TADOConnPoolMan = Nil; procedure TForm2.Button1Click(Sender: TObject); var ADOObject:TADOConnPoolObject; ADOStoredProc:TADOStoredProc; Running :Integer; I: Integer; begin //取得一个存储过程资源(含一数据库有效连接) ADOObject := gPoolMan.CreateSP('TestMyPool'); if ADOObject = Nil then //取得资源失败 Exit; try ADOStoredProc := ADOObject.ExecObject as TADOStoredProc; Running := 2;//允许重试(两次)操作,以便在操作失败之后达到重连 while Running>0 do begin Dec(Running); if ADOObject.NeedRefresh then begin//判断是否有重连标志(比如数据库断开等,可能需要进行重连) if Not ADOObject.Reconnect then Exit; ADOObject.NeedRefresh := Not ADOStoredProc.Parameters.Refresh; if ADOObject.NeedRefresh then Exit; end; for I := 1(*Zero is the *Result* Parameter*) to ADOStoredProc.Parameters.Count - 1 do begin //========================= //传递参数 ADOStoredProc.Parameters.Items[I].Value := 'U'; //========================= end; if Running 0 then try //执行存储过程 ADOStoredProc.Open; //执行存储过程成功,退出循环进入后续的数据处理 break; except On E:Exception do begin //执行失败非程序级的异常通常有两种可能: //1.数据库连接断开 //2.自适合的参数传递当中可能存储过程已更新,参与不一致 //设置重连标志 ADOObject.NeedRefresh := True; //=================== //这里记录数据库操作失败日志 //=================== end; end; Exit; end; //========================== //从ADOStoredProc当中读取记录 ShowMessage(IntToStr(ADOStoredProc.Parameters.ParamByName('Result').Value)); //========================== //关闭存储对象的资源 ADOStoredProc.Close; finally //调用结束,释放资源 ADOObject.Free; end; end; procedure TForm2.FormCreate(Sender: TObject); var ADOConn:TADOConnection; begin (****************BEGIN*******************) (*注:仅为测试准备 *) //初始化测试环境 ADOConn := Nil; if Not TADOConnPoolMan.ConnectADO( gDBServer,gDBUser,gDBPass,gDBName,true,ADOConn) then Exit; try ADOConn.Execute(DeleteSQL); ADOConn.Execute(CreateSQL); finally try ADOConn.Close; except end; ADOConn.Free; end; (*****************END********************) //初始化连接池 gPoolMan := TADOConnPoolMan.Create(gDBServer,gDBUser,gDBPass,gDBName,true); end; procedure TForm2.FormDestroy(Sender: TObject); var ADOConn:TADOConnection; begin //释放连接池 if Assigned(gPoolMan) then gPoolMan.Free; (****************BEGIN*******************) (*注:仅为测试准备 *) //清理测试环境 ADOConn := Nil; if Not TADOConnPoolMan.ConnectADO( gDBServer,gDBUser,gDBPass,gDBName,true,ADOConn) then Exit; try ADOConn.Execute(DeleteSQL); finally try ADOConn.Close; except end; ADOConn.Free; end; (*****************END********************) end; end.

81,115

社区成员

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

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