`
aijuans
  • 浏览: 1568108 次
社区版块
存档分类
最新评论

SPRING多数据源切换的问题和解决方法

阅读更多

在应用中,需要热切换数据源。但发现如下问题:

Java代码   收藏代码
  1. org.springframework.beans.factory.BeanCreationException: Error creating bean with name  'swappable'  defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is  null   
  2. java.lang.IllegalArgumentException: Superclass has no null  constructors but no arguments were given  

配置如下

Java代码   收藏代码
  1. <bean id= "myDataSource1"   class = "org.springframework.jndi.JndiObjectFactoryBean" >  
  2.     <property name="jndiName" >  
  3.         <value>java:/ds1</value>  
  4.     </property>  
  5. </bean>  
  6.   
  7. <bean id="myDataSource2"   class = "org.springframework.jndi.JndiObjectFactoryBean" >  
  8.     <property name="jndiName" >  
  9.         <value>java:/ds2</value>  
  10.     </property>  
  11. </bean>  
  12.   
  13.   
  14. <bean id="myTransactionManager"   class = "org.springframework.transaction.jta.JtaTransactionManager" >  
  15.   
  16.     <property name="userTransactionName" >  
  17.         <value>UserTransaction</value>  
  18.     </property>   
  19.       
  20.     <property name="transactionManagerName" >  
  21.         <value>java:/TransactionManager</value>  
  22.     </property>  
  23.   
  24. </bean>  
  25.   
  26. <bean id="swappableDataSource"   
  27.       class = "org.springframework.aop.target.HotSwappableTargetSource" >  
  28.     <constructor-arg>  
  29.         <ref local="myDataSource1" />  
  30.     </constructor-arg>  
  31. </bean>  
  32.   
  33. <bean id="swappable"   
  34.       class = "org.springframework.aop.framework.ProxyFactoryBean" >  
  35.     <property name="targetSource" >  
  36.         <ref local="swappableDataSource" />  
  37.     </property>  
  38. </bean>  
  39. <bean id="mySessionFactory1"   class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >  
  40.     <property name="mappingResources" >  
  41.         <list>  
  42.             <value>test/po/impl/Cus.hbm.xml</value>        
  43.         </list>  
  44.     </property>  
  45.     <property name="hibernateProperties" >  
  46.         <props>  
  47.             <prop key="hibernate.dialect" > ${hibernate.dialect} </prop>  
  48.             <prop key="hibernate.show_sql" > true </prop>  
  49.             <prop key="hibernate.generate_statistics" > true </prop>  
  50.             <prop key="hibernate.cache.provider_class" >  
  51.             org.hibernate.cache.EhCacheProvider</prop>  
  52.         </props>  
  53.     </property>  
  54.     <property name="dataSource" >  
  55.         <ref local="swappable" />  
  56.     </property>  
  57. </bean>  



这里的数据源是用应用服务器JNDI提供的,如果用自己的就没有问题。 

Java代码   收藏代码
  1. <bean id= "dataSource1"   class = "org.springframework.jdbc.datasource.DriverManagerDataSource" >  
  2.     <property name="driverClassName"  value= "${jdbc.driverClassName}" />  
  3.     <property name="url"  value= "${jdbc.url1}" />  
  4.     <property name="username"  value= "${jdbc.username}" />  
  5.     <property name="password"  value= "${jdbc.password}" />  
  6. </bean>  



用应用服务器的JNDI就会出现上面的错误

 

解决方法---------代理为javax.jdbc.DataSource接口就可以了。 

更多详细信息请查看  Spring 教程 http://www.itchm.com/forum-59-1.html

3
0
分享到:
评论

相关推荐

    spring框架多数据源切换问题的解决

    首先,这个方案完全是在spring的框架下解决的,数据源依然配置在spring的配置文件中,sessionFactory依然去配置它的dataSource属性,它甚至都不知道dataSource的改变。 其次,实现简单,易于维护。这个方案虽然我说...

    Spring Boot多数据源(支持Spring声明式事务切换和回滚).pdf

    在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论多数据源回滚策略。以下是对这些知识点的详细说明: 1. **动态数据源切换**: - 通过AspectJ实现数据源的动态切换,可以设置在...

    spring boot数据源切换demo

    在Spring Boot应用中,数据源切换是一个常见的需求,特别是在分布式系统或者微服务架构中,可能需要连接多个数据库来实现不同的业务功能。本示例“spring boot数据源切换demo”将展示如何在Spring Boot中集成MyBatis...

    spring多数据源动态切换方案

    在企业级应用开发中,Spring框架的广泛使用使得...通过这种方式,我们可以灵活地处理复杂的数据源切换场景,适应不同业务的需求。在实际项目中,还需要考虑线程安全、异常处理、测试等方面的问题,确保系统稳定运行。

    Springcloud 多数库 多数据源整合,查询动态切换数据库

    创建一个自定义的数据源切换注解,比如`@SwitchDataSource`,并在需要切换数据源的方法上使用。通过AspectJ的切面处理,我们可以在方法执行前后动态改变ThreadLocal中的数据源引用。 3. **Spring Cloud Config ...

    SpringBoot配置多数据源实现动态切换数据源

    本文将深入探讨如何在SpringBoot项目中配置多数据源,并实现数据源的动态切换,帮助你理解和掌握这一核心技能。 首先,我们理解"多数据源"的概念。在SpringBoot应用中,多数据源意味着系统能够连接并操作多个不同的...

    基于Spring多数据源实例

    3. **创建数据源切换接口和服务实现**:定义一个数据源切换接口,如`DataSourceSwitcher`,包含选择和切换数据源的方法。然后,创建一个实现类,如`DefaultDataSourceSwitcher`,在此类中实现具体的切换逻辑,如根据...

    mybatis+spring实现动态切换数据源

    通过以上步骤,我们就实现了MyBatis与Spring配合下的动态数据源切换。这种机制有助于在多租户系统、读写分离或者高可用架构中灵活地管理数据库访问,提高了系统的可扩展性和灵活性。在实际应用中,还需要考虑数据源...

    springboot-AOP实现多数据源动态切换(Druid连接池)

    具体实现中,需要定义一个Pointcut来指定哪些方法触发数据源切换,以及一个Advice来执行数据源的切换逻辑。 - **动态数据源切换逻辑**:核心逻辑是在AOP切面的Advice中实现。当一个需要切换数据源的方法被调用时,...

    spring boot多数据源(AOP注解动态切换)

    在Spring Boot应用中,多数据源的配置与管理是一项重要的任务,特别是在大型系统中,可能需要连接到不同的...在实际项目中,你可能还需要考虑事务管理、数据源切换的异常处理等问题,确保整个系统的稳定性和一致性。

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

    综上所述,"spring+druid+AtomikosDataSource"的组合为开发者提供了一套强大的工具,用于实现多数据源切换和分布式事务控制。在实际项目中,通过合理的配置和编码,可以构建出高效、健壮的分布式系统。在`mult-table...

    Spring动态切换多数据源Demo

    "Spring动态切换多数据源Demo"是一个示例项目,它展示了如何在Spring中实现灵活的数据源切换。 首先,我们需要了解Spring中的数据源。在Spring中,数据源(DataSource)是Java中定义的javax.sql.DataSource接口的...

    java spring 多数据源

    本教程将深入探讨如何在Spring中配置和管理多个数据源,并以MySQL为例进行实战演示。 首先,我们需要理解Spring Boot对数据源的默认支持。Spring Boot通过`spring.datasource.*`的配置属性简化了数据库连接的设置,...

    Spring+SpringMvc+MybatisPlus+Aop(自定义注解)动态切换数据源

    - AOP切面的Java类,实现了方法执行前后的拦截和数据源切换。 - 数据源相关的Java配置类,用于配置Spring的DataSource和MybatisPlus。 - Mapper接口和对应的XML文件,定义数据库操作。 - 业务逻辑层的Java类,其中的...

    Mybatis+Spring+SpringMVC+quartz多数据源切换

    这个项目结合了四个关键的技术组件,它们分别是Mybatis、Spring、SpringMVC和Quartz,下面将详细介绍这些技术以及它们在多数据源切换和跨数据库同步中的应用。 **Mybatis** 是一款轻量级的Java持久层框架,它允许...

    spring多数据源

    通过以上步骤,我们可以成功地在Spring应用中实现多数据源配置,灵活地管理和切换不同的数据库。这在大型分布式系统中尤其有用,能帮助我们构建更加健壮、高效的数据库访问架构。在实际项目中,还可以结合Spring ...

    Spring多数据源解决方案

    Spring多数据源解决方案是针对大型应用中数据分片和分布式数据库管理的需求而设计的一种策略。...在实际项目中,可以根据具体需求进行定制,例如使用更复杂的上下文判断规则,或者实现更高效的数据源切换策略。

    spring-boot集成mybtis+druid实现hive/mysql多数据源切换

    本文将详细讨论如何使用Spring Boot、MyBatis和Druid来实现MySQL与Hive之间的多数据源切换,以满足不同业务场景的需求。 首先,Spring Boot是Spring框架的一种轻量级实现,它简化了配置并提供了快速开发新应用的...

    spring 动态切换数据源

    - 在生产环境中,需要确保数据源切换的正确性,可以使用监控工具(如Spring Actuator)跟踪数据源切换情况,同时编写单元测试和集成测试确保功能正常。 综上所述,Spring动态切换数据源是通过配置不同数据源,结合...

    springboot实现多数据源而且加上事务不会使aop切换数据源失效

    在Spring Boot应用中,我们...以上就是使用Spring Boot、MyBatis和AOP实现多数据源切换并保证事务有效性的详细步骤。这个实例适用于简单的读写分离场景,如果涉及到更复杂的分布式事务需求,还需要进一步扩展和调整。

Global site tag (gtag.js) - Google Analytics