`
ihyperwin
  • 浏览: 435978 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

利用Spring、JNDI切换数据源

 
阅读更多

 利用SpringJNDI切换数据源

 publicclass DataSourceManager extends AbstractRoutingDataSource {

      @Override

      protected Object determineCurrentLookupKey() {

           String key = ContextHolder.getDataSource();// 获取key

           return key;// 返回当前线程实际的DataSource对应的Key

          

      }

}

 

publicclass ContextHolder {

 

      publicstaticfinal ThreadLocal<String> context = new ThreadLocal<String>();

      publicstatic String getDataSource() {

           returncontext.get();

      }    

      publicstaticvoid setDataSource(String dataSource){

           context.set(dataSource);

      }

publicstaticvoid clear() {

           context.remove();

      }

}

 

      <!-- 使用JBOSS jndi resourceRef属性用来指定是否预准备前缀:java:comp/env/,默认false-->

      <bean id="dataSource1" class="org.springframework.jndi.JndiObjectFactoryBean"

            lazy-init="true">

           <property name="jndiName" value="java:TestDb" />

           <property name="resourceRef" value="true" />

      </bean>

     

      <!-- 使用JBOSS jndi-->

      <bean id="dataSource2" class="org.springframework.jndi.JndiObjectFactoryBean"

            lazy-init="true">

           <property name="jndiName" value="java:OracleDS" />

           <property name="resourceRef" value="true" />

      </bean>

     

      <!-- JNDI的切换实现切库操作-->

      <bean id="dataSource" class="dynamicDataSource.DataSourceManager">

                 <property name="targetDataSources">

                           <map>

                                       <entry key="mysql" value-ref="dataSource1" />                                                               <entry key="oracle" value-ref="dataSource2" />

                            </map>

                 </property>

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

      </bean>

 

切库语句:

ContextHolder.setDataSource("oracle");//默认库为mysql数据库,在此切换为Oracle数据库

 

分享到:
评论

相关推荐

    SSH动态切换数据源

    SSH动态切换数据源是一种在Java Web开发中处理多数据库连接切换的技术,主要应用于Spring、Struts和Hibernate(SSH)这三大框架集成的项目。SSH框架是企业级应用开发的常用组合,提供了强大的业务逻辑处理和数据持久...

    spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制

    这样,我们可以在运行时根据业务需求灵活地切换数据源。 6. **分布式事务控制** AtomikosDataSource支持JTA事务,这意味着我们可以在同一个事务中操作多个数据源。Spring的`@Transactional`注解可以用来开启和管理...

    动态数据源实现spring

    在Spring框架中,动态数据源实现是一个重要的特性,它允许应用程序根据特定的条件或用户需求在运行时切换数据源。这种灵活性对于多租户系统、数据隔离或者在不同环境(如开发、测试、生产)之间切换数据库配置尤其...

    Spring 配置各种数据源

    在Spring框架中,配置数据源是一项至关重要的任务,因为数据源是应用程序与数据库交互的桥梁。Spring提供了多种方式来配置数据源,以适应不同的应用场景和需求。以下将详细阐述Spring配置各种数据源的方法、原理以及...

    Spring多数据源分布式事务管理

    在Spring中,我们可以通过DataSourceProxy和AbstractRoutingDataSource来实现多数据源的切换。DataSourceProxy是Spring的一个代理类,它可以对数据源进行包装,以便在执行SQL语句前决定使用哪个数据源。...

    Springboot 动态多数据源 jta分布式事务

    4. 自定义切换逻辑:编写代码来根据业务需求动态选择使用哪个数据源。 接下来,我们谈谈JTA和分布式事务。在微服务架构中,跨服务的数据一致性是非常重要的,这就需要用到分布式事务。JTA是Java平台中处理分布式...

    基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务

    基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务。一个基于springboot的快速集成多数据源的启动器。支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主...支持 多层数据源嵌套切换 。

    SpringMVC配置多数据源实战

    在SpringMVC项目中,我们可以通过Spring的`AbstractRoutingDataSource`类来实现动态切换数据源的功能。这个类允许我们在运行时根据特定条件(如事务、业务逻辑等)选择要使用的数据源。 1. **创建数据源bean** 为...

    cxf多数据源配置

    4. **AOP代理和数据源切换**:通过Spring的AOP(面向切面编程)功能,可以在运行时动态选择使用哪个数据源。例如,可以根据方法的注解或请求参数来决定。 5. ** CXF服务配置**:在CXF服务中,我们可以使用Spring的`...

    动态创建数据源,加上jar包就可以运行

    在Java中,我们通常通过Java的Context和Initial LifeCycle(JNDI)服务或者Spring框架来管理数据源。 动态创建数据源一般涉及以下步骤: 1. **导入依赖**:项目中需要包含JDBC驱动的jar包,例如MySQL的`mysql-...

    Spring JMS 消息处理-基于JNDI

    JNDI是一种服务,它提供了一个接口来查找和管理Java对象的名称,这些对象可以是消息队列、数据源或者其他服务。在Spring中,JNDI通常用于查找消息队列的位置,这样应用就可以通过JMS模板发送或接收消息。JNDI查找...

    dynamic-datasource-spring-boot-starter:springboot的动态数据源多数据源动态数据源主从分离读写分离分布式事务https:dynamic-datasource.com

    一个基于springboot的快速集成多数据源的启动器简介dynamic-datasource-spring-boot-starter是一个基于springboot的快速集成多数据源的启动器。其支持Jdk 1.7 +,SpringBoot 1.4.x 1.5.x 2.xx。文件| 文献资料|特性...

    基于 SpringBoot的多数据源 动态数据源 主从分离 快速启动器 支持分布式事务

    支持 多层数据源嵌套切换 。(ServiceA &gt;&gt;&gt; ServiceB &gt;&gt;&gt; ServiceC)。 提供 基于seata的分布式事务方案 。 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 支持数据库敏感配置信息 加

    分包数据源(全局分布式事务).rar

    5. **切换数据源**:在业务逻辑中,可以通过Spring的`@Resource`注解注入不同的数据源bean,根据业务需求动态选择数据源执行SQL操作。 6. **处理异常**:在分布式事务中,必须正确处理异常,例如,如果一个事务分支...

    轻量级的java数据源jdbc框架

    通过配置多个数据源,开发者可以轻松地管理和切换这些数据库连接,实现数据的高效访问。 在实际使用中,开发者可以通过 JNDI 查找或直接实例化 DataSource 对象来获取数据库连接。此外,由于这个框架是基于 JDBC ...

    dynamic-datasource-spring-boot-starter-v3.5.1.zip

    Dynamic-Datasource (opens new window)- 基于 SpringBoot 的多数据源组件,功能强悍,支持 Seata 分布式事务。 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式...支持 多层数据源嵌套切换 。

    dynamic-datasource-spring-boot-starter-v3.5.1.tar.gz

    Dynamic-Datasource (opens new window)- 基于 SpringBoot 的多数据源组件,功能强悍,支持 Seata 分布式事务。 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式...支持 多层数据源嵌套切换 。

    spring-3.2.8.jar

    3. 数据源管理:Spring提供多种数据源管理方式,如单例数据源、多数据源,支持JNDI查找,便于实现数据库连接的管理和切换。 4. ORM集成:Spring支持多种ORM框架,如Hibernate、JPA、MyBatis等,提供统一的DAO层接口...

    J2EE(SSH整合)开发笔记.doc

    2. **构建Hibernate**:配置Hibernate,使其由Spring管理,这包括设置数据源、方言等属性,以及利用JNDI进行数据源的连接。 3. **构建Struts**:配置Struts框架,使其能够与Spring和Hibernate协同工作。 #### 最后...

Global site tag (gtag.js) - Google Analytics