社区
Web 开发
帖子详情
急求使用Proxool连接池写JSP的实例!
javavip
2005-07-26 03:03:56
求 配置文件 和 实例!
谢谢!
...全文
406
10
打赏
收藏
急求使用Proxool连接池写JSP的实例!
求 配置文件 和 实例! 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sjhasp
2005-07-27
打赏
举报
回复
补充:
如果配置文件是xml文件,那么<param-value>WEB-INF/proxool.properties</param-value>
就应该是<param-value>WEB-INF/proxool.xml</param-value>,proxool.jar要放到WEB-INF/lib目录下。配置文件就随便了,但是在servlet配置中一定要与实际路径相符。
sjhasp
2005-07-27
打赏
举报
回复
1,如果要使用多个数据库,是否可以采用以下配置,不过我没试过,有待你测试。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<alias>xml-test1</alias>
<driver-url>jdbc:hsqldb:.</driver-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>
<driver-properties>
<property name="user" value="sa"/>
<property name="password" value=""/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
<proxool>
<alias>xml-test2</alias>
<driver-url>jdbc:hsqldb:.</driver-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>
<driver-properties>
<property name="user" value="sa"/>
<property name="password" value=""/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>
2,不需要JAXPConfigurator.configure,直接在web.xml文件加上下面这段就可以了,proxool提供了一个初始化配置文件的servlet。
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-lass>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>propertyFile</param-name>
<param-value>WEB-INF/proxool.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
javavip
2005-07-26
打赏
举报
回复
上面WEB-INF/lib错了!
1)如果是多个数据库,这个proxool.properties或者proxool.xml文件该怎么写?
2)proxool.jar文件我放在CLASSPATH下了,使用JAXPConfigurator.configure("proxool.xml", false);找不到配置文件,该怎么办? 如果想用这个方法加载配置,是不是一定要放在WEB-INF/lib下才可以?
javavip
2005-07-26
打赏
举报
回复
TO sjhasp(编程浪子) :我有 个疑问
1)如果是多个数据库,这个proxool.properties或者proxool.xml文件该怎么写?
2)proxool.jar文件我放在CLASSPATH下了,使用JAXPConfigurator.configure("proxool.xml", false);找不到配置文件,该怎么办? 如果想用这个方法加载配置,是不是一定要放在WEB-INF下才可以?
谢谢!
javavip
2005-07-26
打赏
举报
回复
谢谢ccm1980(海浪),不过我需要的是 proxool 连接池。
可否教教我?谢谢!
sjhasp
2005-07-26
打赏
举报
回复
proxool使用指南:
1,下载proxool-0.8.3.jar并放到相应的目录,这个应该比较简单了
2,写一个配置文件(proxool.properties)放到WEB-INF目录下,配置文件内容如下:
jdbc-0.proxool.alias=bidding
jdbc-0.proxool.driver-url=jjdbc:oracle:thin:@127.0.0.1:1521:dbname
jdbc-0.proxool.driver-class=oracle.jdbc.driver.OracleDriver
jdbc-0.user=name
jdbc-0.password=pass
jdbc-0.proxool.maximum-connection-count=200
jdbc-0.proxool.house-keeping-test-sql=select *
3,在WEB-INF/web.xml中添加如下代码:(其作用是在服务启动时初始化proxool)
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-lass>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>propertyFile</param-name>
<param-value>WEB-INF/proxool.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
4,配置就这么简单,下面给你一段怎么得到一个连接代码,其他的应该就比较简单了
public Connection getConnection() {
try {
conn = DriverManager.getConnection("proxool.bidding");
}catch(SQLException ex){
ex.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
log("Problem closing connection");
}
}
return conn;
}
javavip
2005-07-26
打赏
举报
回复
proxool.xml里,怎么配置多个数据库别名?
javavip
2005-07-26
打赏
举报
回复
另外:JAXPConfigurator.configure("proxool.xml", false);
我将proxool.xml放在WEB-INF下,怎么找不到呢?
ccm1980
2005-07-26
打赏
举报
回复
:配置
在进行具体的管理之前,我们先给tomcat添加一个用户,使这个用户有权限来进行管理。
打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:
<user name=\"zf\" password=\"zf\" roles=\"standard,manager\"/>
注意:这一行的最后部分一定是/>,tomcat的文档掉了/符号,如果没有/符号的话,tomcat重起时将无法访问应用程序。通过logs/catalina.out文件你可以看到这个错误的详细信息。
然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户名和密码即可。
2:应用程序列表
在浏览器中输入http://localhost:8080/manager/list,浏览器将会显示如下的信息:
OK - Listed applications for virtual host localhost
/ex:running:1
/examples:running:1
/webdav:running:0
/tomcat-docs:running:0
/manager:running:0
/:running:0
面的信息分别为应用程序的路径,当前状态(running 或者stopped),与这个程序相连的session数。
3:重新装载应用程序
在浏览器中输入 http://localhost:8080/manager/reload?path=/examples,浏览器显示如下:
OK - Reloaded application at context path /examples
表示example应用程序装载成功,如果我们将server.xml的Context元素的reloadable属性设为true(见上面表格),则没必要利用这种方式重新装载应用程序,因为tomcat会自动装载。
Tomcat中SERVER.XML配置:
<Context path="/bizcity" docBase="bizcity" debug="0">
<Resource name="jdbc/bizcity" auth="Container" type="javax.sql.DataSource" />
<ResourceParams name="jdbc/bizcity">
<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://192.168.10.1:1433;DataBaseName=BizCity</value>
</parameter>
<parameter><name>username</name><value>sa</value></parameter>
<parameter><name>password</name><value>123456</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>
代碼部分:
package biz;
import java.sql.*;
import javax.sql.*;
import java.util.Vector;
import java.util.Date;a
import javax.naming.*;
public class connpool{ // 連接池類
private int maxconn; //最大連接數
private int nActive; //已創建的連接數
private Vector freeCons=new Vector(); //存儲當前可用連接的數組
private Context initCtx = null; //Context 上下文类型
private Context ctx =null;
private DataSource ds=null;
public connpool()
{
this.maxconn=20;
this.nActive =0;
try{
initCtx = new InitialContext(); //初始化上下文,可以读配置文件如:web.xml
if(initCtx==null) throw new Exception("Initial Failed!");
ctx = (Context) initCtx.lookup("java:comp/env");
//szJdbc="jdbc/bizcity" 此值在Tomcat的SERVER.XML文件中配置
if(ctx!=null) ds= (DataSource) ctx.lookup("jdbc/bizcity");
if(ds==null) throw new Exception("Look up DataSource Failed!"); //以上这是从配置文件读取上下文的一种方法!
参数在上下文中定义
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
public void SetMaxConn(int n){//默認最大連接數為 20 ~ 200;
if(n<20) n=20;
if(n>200) n=200;
this.maxconn =n;
}
public synchronized void freeConnection(Connection con) //歸還連接
{ //synchronized关键字定义可异步同时连接
try{
if(con.isClosed()){
con=null; //System.out.println("Connection is Closed\n");
}
else{
freeCons.addElement(con);
System.out.println("Add Exists Connection,Current Conut=" + freeCons.size());
}
}
catch(Exception e){System.out.println(e.getMessage());}
//notifyAll();
}
public synchronized Connection getConnection(long timeout) //取得一個連接(指定超時時間)
{
long startTime=new Date().getTime(); //記錄超時用
Connection con=null;
while(con==null){
if(freeCons.size()>0){//在有可用的連接時,選用可用連接
con=(Connection) freeCons.firstElement(); //從數組中取得第一個 把能用的连接取走了一个,当然再能用的连接中,减去一个了
freeCons.removeElementAt(0); //並從數組中刪除
try{
if(con.isClosed()){ //如果已關閉,則將已創建連接減一
nActive--;
con=null;
}
}
catch(Exception e){System.out.println(e.getMessage());}
if(con!=null) System.out.println("Get Exists Connection\n");
}else if(nActive<maxconn){ //沒有可用連接且已創建的連接數小于最大數時,創建新連接
con=newConnection();
if(con!=null) System.out.print("Create New Connection ******" + nActive );
}
if(con!=null) break; //取得可用連接後,則直接退出等待
//否則,進行等待0.5s,進行下一次獲取連接的操作
try{
wait(500); //等待0.5秒
}
catch(InterruptedException e) {}
if((new Date().getTime()-startTime)>=timeout){
System.out.println("Connection timeout\n");
break; //超時則退出
}
}
return con;
}
public void release(){ //關閉所有連接
int i=freeCons.size();
int j=0;
for (j=0;j<i;j++){
Connection con=(Connection)freeCons.elementAt(j);
try{
con.close();
}
catch(SQLException e) {
System.out.println("無法關閉連接池中的當前連接");
}
}
freeCons.removeAllElements();
nActive=0;
}
private Connection newConnection(){ //創建一個新連接
Connection con=null;
try{
con=ds.getConnection();
if(con==null) throw new Exception("Create Connection Failed!");
else nActive++;
}
catch(Exception e){
System.out.println(e.getMessage());
}
return con;
}
}
JSP調用:
<%@ page language="java" import="java.sql.*"%>
<jsp:useBean id="vCon" scope="application" class="biz.connpool"/>
<%!
Connection con=null;
java.sql.Statement stmt=null;
%>
<%
try{
if(con==null) con=vCon.getConnection(10000); //最大等待時間為10s
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
} //两个结果集 第一个参数时说结果集是不可滚动的,只能向前滚!
第二个是结果集是只读的
catch(Exception e){
System.err.println(e.getMessage());
}
ResultSet rs=stmt.executeQuery("Select *........");
........
stmt.close();
vCon.freeConnection(con);
con=null;
%>
看看这个例子,再做配置我想就不应该是问题了
javavip
2005-07-26
打赏
举报
回复
自己顶下!
pro
xool
连接池
使用
详细说明
pro
xool
连接池
使用
详细说明,
pro
xool
连接池
使用
详细说明,
pro
xool
连接池
使用
详细说明。
pro
xool
连接池
配置详解
pro
xool
连接池
配置详解
pro
xool
连接池
配置详解
pro
xool
连接池
配置详解
pro
xool
连接池
配置详解
pro
xool
连接池
配置详解
pro
xool
连接池
配置详解
pro
xool
连接池
配置文件
项目实用的
pro
xool
连接池
配置文件,每个标签都有注释,可以直接拿来
使用
pro
xool
连接池
用户名密码加密
pro
xool
数据库
连接池
用户名、密码加密处理,文件里面包含可直接
使用
加密的jar以及相关
使用
说明。
在Hibernate中配置
Pro
xool
连接池
在Hibernate中配置
Pro
xool
连接池
Web 开发
81,092
社区成员
341,716
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章