ibatisでproxoolデータソースを使用する
3465 ワード
ibatis自体はproxoolのデータソース接続をサポートしていません.いくつかの方法で実現できます.
第一に、springを用いてibatisとproxoolを統合し、springを利用してproxoolデータソースをsqlmapclientに注入し、具体的な構成はネット上でspring+ibatis統合の例を探すことができる.
私が言いたいのは2つ目の方法を採用して、springに依存しないで完全に独立して、まず私達は1つのDataSourceFactoryクラスをカスタマイズして、このクラスはcomを実現しなければなりません.ibatis.sqlmap.engine.datasource.DataSourceFactoryインタフェース
コードは次のとおりです.
そしてsqlMapConfig.xmlファイルでは、次のように設定されています.
これでproxoolのデータソースを正常に使用できます.
でもproxool-0.9.1バージョン以下で問題がある場合は、proxool-0.9でデータベース接続URLにデータ名とパスワードを書き込む必要があります.0 RC 3および以下のバージョンの1つのBUGですが、0.9です.1のバージョンでは修正されましたが、0.9.1のバージョンはまたとてもみんなの適応しない地方(具体的にどれらがあって、私はテストしていないで、ネット上で見た)があって、0.9.0 RC 3のバージョンを使ってまたユーザー名とパスワードをURLの中に入れたくなくて、私達はソースコードorg.logicalcobwebs.proxool.ProxoolDataSourceのregisterPoolの方法を修正しなければならなくて、とても簡単で、cpd.setUser(getUser()とcpd.setPassword(getPassword()の2つの方法をcpdに配置する.setDelegateProperties(delegateProperties)メソッドの後でいいのは0.9.1のソースコードに作者が説明しています.
修正が完了したらjdk 1を使用してください.5再コンパイルを行い、1.6のjavax.sql.DataSourceインタフェースはjavaを継承する.sql.Wrapperという1.6バージョンのjdkならではのインタフェースですが、このインタフェースの方法はProxoolDataSourceクラスでは実現されていないため、コンパイルは通過できません.
第一に、springを用いてibatisとproxoolを統合し、springを利用してproxoolデータソースをsqlmapclientに注入し、具体的な構成はネット上でspring+ibatis統合の例を探すことができる.
私が言いたいのは2つ目の方法を採用して、springに依存しないで完全に独立して、まず私達は1つの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ファイルでは、次のように設定されています.
br> PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
これでproxoolのデータソースを正常に使用できます.
でもproxool-0.9.1バージョン以下で問題がある場合は、proxool-0.9でデータベース接続URLにデータ名とパスワードを書き込む必要があります.0 RC 3および以下のバージョンの1つのBUGですが、0.9です.1のバージョンでは修正されましたが、0.9.1のバージョンはまたとてもみんなの適応しない地方(具体的にどれらがあって、私はテストしていないで、ネット上で見た)があって、0.9.0 RC 3のバージョンを使ってまたユーザー名とパスワードをURLの中に入れたくなくて、私達はソースコードorg.logicalcobwebs.proxool.ProxoolDataSourceのregisterPoolの方法を修正しなければならなくて、とても簡単で、cpd.setUser(getUser()とcpd.setPassword(getPassword()の2つの方法をcpdに配置する.setDelegateProperties(delegateProperties)メソッドの後でいいのは0.9.1のソースコードに作者が説明しています.
修正が完了したらjdk 1を使用してください.5再コンパイルを行い、1.6のjavax.sql.DataSourceインタフェースはjavaを継承する.sql.Wrapperという1.6バージョンのjdkならではのインタフェースですが、このインタフェースの方法はProxoolDataSourceクラスでは実現されていないため、コンパイルは通過できません.