mysql、imformix动态数据源配置

 

  因需要语言类型来动态选择对应的数据源,所以把自己处理的过程写下来,以备忘。

  1、把informix数据库驱动放在MAVEN中,在pom.xml中配置,把informix数据库驱动加载到本地

  2、在Tomcat的server.xml配置数据源

     <Resource name="jdbc/InformixDatabase"

        type="javax.sql.DataSource"

        maxIdle="10"

        maxWait="30"

        username="informix"

        password="informix"

        maxActive="100"

        testWhileIdle="true"

        timeBetweenEvictionRunsMillis="60000"

        minEvictableIdleTimeMillis="60000"

        testOnBorrow="true"

        driverClassName="com.informix.jdbc.IfxDriver"

        user="jdbc:informix-sqli://url:host/tradepage2:INFORMIXSERVER=db1_tcp;NEWCODESET=big5,cp1252,819;CONNECTIONRETRYCOUNT=10;CONNECTIONRETRYDELAY=2;LOGINTIMEOUT=2"/>

   3、编写DbContextHolder是获得和设置上下文的类:

       public class DbContextHolder{

          private static final ThreadLocal contextHolder = new ThreadLocal();

 

          public static void setDbType(String dbType){

             contextHolder.set(dbType);

          }

 

          public static String getDbType(){

             return (String)contextHolder.get();

          }

 

          public static void clearDbType(){

             contextHolder.remove();

          }

       }

 

    4、建立动态数据源类,须继承AbstractRoutingDataSource:

       public class DynamicDataSource extends AbstractRoutingDataSource {

protected Object determineCurrentLookupKey() {

return DbContextHolder.getDbType();

}

}

 5、编写spring配置文件配置多数据源映射关系

   <jee:jndi-lookup id="EN_US" jndi-name="java:comp/env/jdbc/MysqlDatabase"/>

   <jee:jndi-lookup id="ZH_TW" jndi-name="java:comp/env/jdbc/InformixDatabase"/>

 

    <bean id="ttnetDataSource"  class="org.DynamicDataSource">

       <property name="targetDataSources">

          <map key-type="java.lang.String">

            <entry key="EN_US" value-ref="EN_US"/>

            <entry key="ZH_TW" value-ref="ZH_TW"/>

          </map>

       </property>

       <property name="defaultTargetDataSource" ref="EN_US"/>

    </bean>

 6、在需要调用的service类中使用如下方式

    if("ZH_TW".equals(lanCode))

       DbContextHolder.setDbType("ZH_TW");

    else

       DbContextHolder.setDbType("EN_US");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值