免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3076 | 回复: 4
打印 上一主题 下一主题

关于Tomcat设置Connection Pool出错的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-02 20:23 |只看该作者 |倒序浏览
通过阅读Tomcat的文档(jndi how to),自己动手去实现它所说的实例.可是在运行jsp时,却说无法创建DataSource,提示一ClassNotFoundExceptionrg.hsql.jdbcDriver
按道理应该不会出现这个问题啊?后来我又下载了hsql.jar并配置了ClassPath,但是问题依然如旧........请各位高手救救我啊!!!!!!!!

论坛徽章:
0
2 [报告]
发表于 2003-04-03 23:57 |只看该作者

关于Tomcat设置Connection Pool出错的问题

这位兄弟,你用什么版本的小猫,这儿有几个版本的Tomcat
Tomcat 4.x 和Tomcat 4.1.x是可以直接用Connection Pool的,但是Tomcat-4.x-LE-JDK14和Tomcat-4.1.x-LE-JDK14是不能直接用CP的,原因是:
在完整版本的$TOMCAT_HOME/common/lib在有common-dbcp.jar和common-pool.jar两个库及其相关的库


[另]:不推荐使用Tomcat提供的ConnectionPool,而使用数据库产商自己提供的ConnectionPool的JDBC实现,如Oracle的oracle.jdbc.pool.OracleConnectionPoolDataSource,Postgre的org.postgresql.jdbc2.option.ConnectionPool等,目前几乎所有的常用数据库(无论是商用还是开源的数据库)都提供ConnectionPool的JDBC实现

论坛徽章:
0
3 [报告]
发表于 2003-04-05 14:10 |只看该作者

关于Tomcat设置Connection Pool出错的问题

[quote]原帖由 "seth"]鍪褂肨omcat提供的ConnectionPool,而使用数据库产商自己提供的ConnectionPool的JDBC实现,如Oracle的oracle.jdbc.pool.OracleConnectionPoolDataSource,Postgre的org.postgresql.jdbc2.option.ConnectionPool等,?.........[/quote 发表:


为什么不推荐使用Tomcat 本身的 Connection Pool ?麻烦说明一下优劣

论坛徽章:
0
4 [报告]
发表于 2003-04-06 18:52 |只看该作者

关于Tomcat设置Connection Pool出错的问题

直接用是什么意思,难道不用配置server.xml&web.xml了吗?我用的是4.0.6!您说的用其它厂商开发的jdbc来建立连接池能不能详细的讲讲啊???

论坛徽章:
0
5 [报告]
发表于 2003-04-09 01:17 |只看该作者

关于Tomcat设置Connection Pool出错的问题

通常情况下,数据库产商或专用的数据库JDBC驱动会针对数据特性的做一些优化,或提供一些特别的服务,如Oracle的oci8方式。
Apache为了做到更加通用,只是在产商的驱动上简单包装了一层JDBC API,虽然也支持JDBC 2.0 及 JDBC 2.0 Optional API,但和产商所做的却不是一回事。(这事我也做过,implements了java.sql.Connection,javax.sql.DataSource, javax.sql.ConnectionPoolDataSource...无数的接口,以及自己实现了一个ConnectionPool来支持javax.sql.ConnectionPoolDataSource,全是体力活,到最后却吃力不讨好:(。我相信Apache实现的比我好,但产商提供的底层服务却实实在在地被包装掉了)
我们可以利用Tomcat提供的JNDI服务来实现自己的连接池,具体的做法是有一个JNDIDataSourceInitServlet,它在Context启动时被加载:
....
public void init () throws ServletException {
        oracle.jdbc.pool.OracleConnectionPoolDataSource ds =
                new oracle.jdbc.pool.OracleConnectionPoolDataSource ();
        String url = "jdbcracleci8DatabaseName";
        ds.setURL(url);
        ds.setUser("UserName";
        ds.setPassword("assword";
                // 如果设置了超时
        if (LoginTimeout != null)
                ds.setLoginTimeout((LoginTimeoutInMilSecond);
                // 如果设置了目志文件               
        if (log != null)
                ds.setLogWriter(new PrintWriter(new FileOutputStream(props.getProperty("log", true), true));
               
                try {
                       javax.naming.Context ctx = new javax.naming.InitialContext();
                       ctx.bind ("jdbc/oracle", ds); // 绑定到JNDI服务上
                } catch (javax.naming.NamingException ne) {
                          // 异常处理
                }
            .......
}

其中的一些数据库属性可以放在一个配置文件(或干脆载web.xml文件)中。
以后的处理和直接配在Tomcat的JDBC上是一样的,如:
        javax.sql.DataSource ds = (javax.sql.DataSource)(new javax.naming.InitialContext().find ("jdbc/oracle");
            java.sql.Connection conn = ds.getConnection ();

这样做的好处还有,classes12.zip文件不用放在$TOMCAT_HOME/common/lib下,可以直接放在${PATH_TO_YOUR_WEB_CONTEXT}/WEB-INF/lib下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP