给Domino插上连接池的翅膀(一)--JnpServer实现
来源:互联网 发布:孕囊后两个数据一样 编辑:程序博客网 时间:2024/06/05 04:41
Domino平台与关系型数据库的集成,通常是用LEI、DECS 或ODBC、JDBC。在Domino901平台上的XPages Extension Library 中增加了连接池的支持,但是必须是在Xpage中用。笔者觉得连接池没那么复杂的技术,不需要限定在某个平台上。因此,笔者一直在研究如何在Domino平台上实现Tomcat、Webshpere、weblogic上才具有的连接池功能。功夫不负有心人,虽说前途有险阻,毕竟只要肯登攀。只有想不到的,没有做不到的。
做过J2EE平台应用程序的读者应该都知道,在Tomcat,weblogic这些应用服务器平台上都支持配置连接池的功能。Tomcat默认是DBCP 也可以换成C3P0等其他开源的连接池。在这些应用服务器上之所以能运行连接池是因为他们有JnpServer这样的容器。笔者在之前的文章中向大家介绍了在Domino平台上如何集成JnpServer,其实笔者想实现的是如何在Domino平台上运行连接池。有人一定会说,Xpage中已经有这个功能了,你还瞎折腾啥?没有折腾就没有进步,而且除了容纳连接池,JnpServer还能干很多其他事情,只需要读者动动脑。闲言少叙,进入正题。那么如何做才能在JnpServer上运行连接池那?
在服务器端正常启动C3P0,应显示如下信息:
2015/07/08 13:21:48 RunJava JVM: starting DominoJnpserver...
2015/07/08 13:21:48 RunJava JVM: 正在启动JnpServer...
2015/07/08 13:21:48 RunJava JVM: JNPDataSource:oracle.jdbc.driver.OracleDriver
2015/07/08 13:21:49 RunJava JVM: JnpServer启动完毕。
2015/07/08 13:21:49 RunJava JVM: driverclass:oracle.jdbc.driver.OracleDriver
2015/07/08 13:21:50 RunJava JVM: 13:21:50,375 INFO [MLog] MLog clients using slf4j logging.
2015/07/08 13:21:50 RunJava JVM: 13:21:50,589 INFO [C3P0Registry] Initializing c3p0-0.9.5 [built 02-January-2015 13:25:04 -0500; debug? true; trace: 10]
做过J2EE平台应用程序的读者应该都知道,在Tomcat,weblogic这些应用服务器平台上都支持配置连接池的功能。Tomcat默认是DBCP 也可以换成C3P0等其他开源的连接池。在这些应用服务器上之所以能运行连接池是因为他们有JnpServer这样的容器。笔者在之前的文章中向大家介绍了在Domino平台上如何集成JnpServer,其实笔者想实现的是如何在Domino平台上运行连接池。有人一定会说,Xpage中已经有这个功能了,你还瞎折腾啥?没有折腾就没有进步,而且除了容纳连接池,JnpServer还能干很多其他事情,只需要读者动动脑。闲言少叙,进入正题。那么如何做才能在JnpServer上运行连接池那?
首先要运行JnpServer,请参阅本文末尾的相关文章。笔者此次集成的是C3P0连接池,当然也可以是其他开源的连接池产品。其次,准备运行C3P0所需要的Jar包。这点颇为恼人,一般开源产品都有的毛病就是依赖其他开源的产品,而且还不告诉你。笔者为了启动C3P0,前前后后找了5个Jar包,都是在运行的时候报错误,才知道需要找哪些类,继而寻找缺失的Jar包。为了顺利运行连接池,笔者也只好忍耐。所有的Jar包都准备齐全了,放到JVM的ext目录下。看过笔者前几篇介绍JnpServer的读者应该知道怎么做,这里笔者就不介绍了。还是用那段代码,启动JnpSever后,要编写初始化连接池的代码:
Class.forName(jnpconfig.getDriverclass());DataSource unpooled = DataSources.unpooledDataSource(jnpconfig.getJdbcurl(), jnpconfig.getUser(),jnpconfig.getPassword());DataSource pooled = DataSources.pooledDataSource(unpooled);ctx = new InitialContext();ctx.rebind(jnpconfig.getJndiname(), pooled);
在服务器端正常启动C3P0,应显示如下信息:
2015/07/08 13:21:48 RunJava JVM: starting DominoJnpserver...
2015/07/08 13:21:48 RunJava JVM: 正在启动JnpServer...
2015/07/08 13:21:48 RunJava JVM: JNPDataSource:oracle.jdbc.driver.OracleDriver
2015/07/08 13:21:49 RunJava JVM: JnpServer启动完毕。
2015/07/08 13:21:49 RunJava JVM: driverclass:oracle.jdbc.driver.OracleDriver
2015/07/08 13:21:50 RunJava JVM: 13:21:50,375 INFO [MLog] MLog clients using slf4j logging.
2015/07/08 13:21:50 RunJava JVM: 13:21:50,589 INFO [C3P0Registry] Initializing c3p0-0.9.5 [built 02-January-2015 13:25:04 -0500; debug? true; trace: 10]
如果一切顺利,那么此时连接池的服务器端已经正常运行,只需要用户在客户端编写取出连接池的代码就可以正常工作了。这里所谓的客户端是指在代理、Servlet、Xpage、WebService中调用连接池。其实写法也很简单,完全可以参照J2EE平台上获取连接池的代码。比如:
InitialContext ctx = new InitialContext(props);DataSource ds = (DataSource) ctx.lookup(sjndiname);con = ds.getConnection();stmt = con.createStatement();rs = stmt.executeQuery("select * from TESTDATA t");while (rs.next()) { System.out.println(rs.getString(1));}
配置完成后,在Web端调用 代理运行,能正常输出Oracle表中内容,即可表明:连接池能正常工作。在Oracle中表数据如图:
到此,C3P0连接池运行正常。
0 0
- 给Domino插上连接池的翅膀(一)--JnpServer实现
- 给Dreamweaver插上Svn的翅膀
- 给App插上IM的翅膀
- 给linux插上XManager的翅膀
- 给mybatis插上快速开发的翅膀
- 花生壳给个人网站插上飞翔的翅膀
- 给Eclipse、Android Studio插上Vim的翅膀
- 给PLSQL插上飞翔的翅膀-PLSQL优化
- 给PLSQL插上飞翔的翅膀-PLSQL优化
- 给PLSQL插上飞翔的翅膀-PLSQL优化
- Domino – JnpServer集成【一】-- 研究
- 给你的Firefox4插上翅膀!
- 给 VMware 插上翅膀 -- 安装 VMware Tools
- boost::format给std::string插上翅膀
- 【09北京英雄会】程韬:给Social Game插上飞翔的翅膀
- CSTO沙龙第三期预告:给艺术插上科技的翅膀
- 给移动应用开发插上翅膀--最简单的REST服务搭建
- 为自己的梦想插上翅膀
- linux下sqlite3的重新安装——暨linux命令行卸载和安装软件
- 数据规整化:清理、转换、合并、重塑 《用Python进行数据分析》读书笔记第7章
- android数据库
- SDL2 Qt Mingw编译
- 关于Oracle函数LPAD、RPAD及ROUND的使用
- 给Domino插上连接池的翅膀(一)--JnpServer实现
- HDU折线分割平面
- codeforces Gym 101341 K Competitions
- python的内存管理机制
- xcode 中#pragma得使用
- cocos
- 关于hashcode 里面 使用31 系数的问题
- $("#.form").serialisable();
- git clone慢的问题