mysql、imformix动态数据源配置-程序员宅基地

技术标签: informix驱动文件  

 

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

  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");

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dwzhang2009/article/details/84212640

智能推荐

E-puck2机器人系列教程-2.LED代表的含义-程序员宅基地

e-puck2有三组LED,用户无法控制,他代表什么含义呢。

Java中的Set List Map 的各自特点-程序员宅基地

List接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的

为什么有些 985、211 的本科学生即使在大学里混得很水,在找工作时学历却那么管用?...-程序员宅基地

仅作学术分享,不代表本公众号立场,侵权联系删除转载于:来自 | 知乎 https://www.zhihu.com/question/354234322编辑 | AI有道最近网上有个..._rqcen 清华

SD-WAN,新零售行业增长新助力_新零售 网络带宽 增长-程序员宅基地

​“新零售”这个名词早已不新鲜,却在今年疫情爆发后再度成为“沸腾”的新话题。随着数字化转型从趋势步入常态化,越来越多的零售企业深刻领会到新技术对行业的重塑力量,随着零售业态不断创新演变,未来将不再有新、旧零售之分,行业巨头一定是线上线下深度结合、共同推进。对零售企业而言,在数字化与智能化过程中,不可避免要对新零售实现的基础——“网络”进行规划与实施,以实现总部与门店、门店与门店之间的网络统一性和实时性。针对新零售行业特有的网络需求,有孚网络以 SD-WAN 及云管端一体化管理为基础,提供.._新零售 网络带宽 增长

linux gpio 输出无效-程序员宅基地

linux gpio 输出无效 必须每次fclose/******************************************************************************A simple program of Hisilicon Hi35xx video encode implementation.Copyright , 2010-2011, Hi...

使用endmqm 命令无法停止MQ队列管理器,怎么办?-程序员宅基地

使用endmqm 命令无法停止MQ队列管理器,怎么办? 环境 产品: MQSeries 平台: UNIX 版本: v5.0以上 ..._endmqm -i

随便推点

[imx6q][android]学习笔记-android里uboot和kernel的编译配置-程序员宅基地

[imx6q][android]学习笔记-android里uboot和kernel的编译配置之前有移植过fsl的yocto,uboot和kernel可以运行了,学习一下imx6q的android SDK,已经移植好的BSP有些配置文件不一样,怎么改呢?一直在找位置,刚刚发现了,记录一下: 主要是启发来源于android_M6.0.1_2.1.0_docs/Android_Frequently_As

MySQL数据库基本知识_mysql数据库基础知识-程序员宅基地

SQL的全称是Structured Query Language,结构化查询语言,对数据库进行查询、修改等操作。SQL 具有如下优点。1、一体化:SQL 集数据定义、数据操作和数据控制于一体,可以完成数据库中的全部工作。2、使用方式灵活:SQL 具有两种使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入C、C++、Fortran、Java 等语言中使用。3、非过程化:只提操作要求,不必描述操作步骤。....................._mysql数据库基础知识

如何将旧数据库导入Django项目-程序员宅基地

做大作业时遇到这个问题,发现没有太好的教程,所以在此总结本教程是面向萌新的实践性教程首先创建一个project和一个app,如图下面假设我们有一个叫test.db的sqlite3数据库,我将演示如何将这个数据库导入项目我们有一个基本假设就是我们的数据库内必须有一个属性为primary key 否则后续导入需要更麻烦的处理首先我们要将数据库路径放入项目数据库放入books...

用flask开发个人博客(10)—— Jinja2模板中的控制结构-程序员宅基地

前面介绍了Jinja2模板中的变量,下面介绍下模板中的控制结构。if语句:{% if condition %} ...{% else %} ...{% endif %}在模板文件中实现,输入用户名时浏览器上显示Hello 用户名,若不输入用户名显示Hello Stranger:test.html:{% if user %} Hello {{use

Mac下安装adb-程序员宅基地

1、检查是否安装adbbriandeMacBook-Pro:~ brian$ adb -bash: adb: command not foundbriandeMacBook-Pro:~ brian$2、未安装则执行指令:$ brew cask install android-platform-toolsbriandeMacBook-Pro:~ brian...

qrcode生成二维码_"qrcode = new qrcode(\"qrcode\", { text: url, widt-程序员宅基地

使用qrocde 前端生成二维码展示<script> import QRCode from 'qrcodejs2'; import Cookie from 'vue-cookies'; export default { name: "binding-weixin", data(){ return{ qrcode:'' } }, methods:_"qrcode = new qrcode(\"qrcode\", { text: url, width: 200, height: 200,"