浏览 3199 次
锁定老帖子 主题:在ibatis中使用proxool数据源
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-11
最后修改:2010-10-29
第一:采用spring将ibatis与proxool进行整合,利用spring将proxool数据源注入到sqlmapclient中去,具体配置可在网上找spring+ibatis整合的例子。 我所要说的是采用第二种方式,不依赖spring完全独立,首先我们要自定义一个DataSourceFactory类,这个类必须实现com.ibatis.sqlmap.engine.datasource.DataSourceFactory接口 代码如下: package com.wang.ibatis; import java.util.Map; import javax.sql.DataSource; import org.logicalcobwebs.proxool.ProxoolDataSource; import com.ibatis.sqlmap.engine.datasource.DataSourceFactory; public class ProxoolDataSourceFactory implements DataSourceFactory { /** * 使用ProxoolDataSource数据源 */ private ProxoolDataSource dataSource; @Override public DataSource getDataSource() { return dataSource; } /** * 此方法中实现对ProxoolDataSource类中相关属性的设置 */ @Override public void initialize(Map map) { dataSource = new ProxoolDataSource(); dataSource.setDriver((String)map.get("driver")); dataSource.setDriverUrl((String)map.get("driverUrl")); dataSource.setUser((String)map.get("user")); dataSource.setPassword((String)map.get("password")); dataSource.setAlias("alias"); } } 然后在sqlMapConfig.xml文件中这样设置,代码如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <!-- Configure a built-in transaction manager. If you're using an app server, you probably want to use its transaction manager and a managed datasource --> <transactionManager type="JDBC" commitRequired="false"> <dataSource type="com.ufinity.ibatis.ProxoolDataSourceFactory"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="driverUrl" value="jdbc:mysql://localhost:3306/mydb"/> <property name="user" value="root"/> <property name="password" value="root"/> <property name="alias" value="default"/> </dataSource> </transactionManager> <!-- List the SQL Map XML files. They can be loaded from the classpath, as they are here (com.domain.data...) --> <sqlMap resource="com/ufinity/ibatis/User.xml"/> <!-- List more here... <sqlMap resource="com/mydomain/data/Order.xml"/> <sqlMap resource="com/mydomain/data/Documents.xml"/> --> </sqlMapConfig> 这样就可以正常使用proxool的数据源了。 不过在proxool-0.9.1版本以下有个问题,就必须要把数据用名与密码写到数据库连接URL里面去,这在proxool-0.9.0RC3及以下的版本中的一个BUG,不过在0.9.1的版本中已经修正过来,而0.9.1的版本又有很大家不适应的地方(具体有哪些,我没测试,网上看到的),要想使用0.9.0RC3版本又不想将用户名与密码加入URL中去,我们必须修改源码org.logicalcobwebs.proxool.ProxoolDataSource的registerPool方法,很简单,只需要将cpd.setUser(getUser())与cpd.setPassword(getPassword())两方法放到cpd.setDelegateProperties(delegateProperties)方法后面就可以了,这点在0.9.1的源码中作者有说明。 修改完,请使用jdk1.5进行重新编译, 1.6的javax.sql.DataSource接口继承了java.sql.Wrapper这个只有1.6版本的jdk才有的接口,而此接口的方法并未在ProxoolDataSource类中实现,因此编译是无法通过的。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-08
好像proxool里配置的数据库连接,可以注入到spring的bean中!
|
|
返回顶楼 | |