SPRING多数据源切换的问题和解决方法
来源:互联网 发布:关于网络言论自由作文 编辑:程序博客网 时间:2024/06/06 03:06
在应用中,需要热切换数据源。但发现如下问题:
- 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
- java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
配置如下
- <bean id= "myDataSource1" class = "org.springframework.jndi.JndiObjectFactoryBean" >
- <property name="jndiName" >
- <value>java:/ds1</value>
- </property>
- </bean>
- <bean id="myDataSource2" class = "org.springframework.jndi.JndiObjectFactoryBean" >
- <property name="jndiName" >
- <value>java:/ds2</value>
- </property>
- </bean>
- <bean id="myTransactionManager" class = "org.springframework.transaction.jta.JtaTransactionManager" >
- <property name="userTransactionName" >
- <value>UserTransaction</value>
- </property>
- <property name="transactionManagerName" >
- <value>java:/TransactionManager</value>
- </property>
- </bean>
- <bean id="swappableDataSource"
- class = "org.springframework.aop.target.HotSwappableTargetSource" >
- <constructor-arg>
- <ref local="myDataSource1" />
- </constructor-arg>
- </bean>
- <bean id="swappable"
- class = "org.springframework.aop.framework.ProxyFactoryBean" >
- <property name="targetSource" >
- <ref local="swappableDataSource" />
- </property>
- </bean>
- <bean id="mySessionFactory1" class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
- <property name="mappingResources" >
- <list>
- <value>test/po/impl/Cus.hbm.xml</value>
- </list>
- </property>
- <property name="hibernateProperties" >
- <props>
- <prop key="hibernate.dialect" > ${hibernate.dialect} </prop>
- <prop key="hibernate.show_sql" > true </prop>
- <prop key="hibernate.generate_statistics" > true </prop>
- <prop key="hibernate.cache.provider_class" >
- org.hibernate.cache.EhCacheProvider</prop>
- </props>
- </property>
- <property name="dataSource" >
- <ref local="swappable" />
- </property>
- </bean>
这里的数据源是用应用服务器JNDI提供的,如果用自己的就没有问题。
- <bean id= "dataSource1" class = "org.springframework.jdbc.datasource.DriverManagerDataSource" >
- <property name="driverClassName" value= "${jdbc.driverClassName}" />
- <property name="url" value= "${jdbc.url1}" />
- <property name="username" value= "${jdbc.username}" />
- <property name="password" value= "${jdbc.password}" />
- </bean>
用应用服务器的JNDI就会出现上面的错误
解决方法---------代理为javax.jdbc.DataSource接口就可以了。
- SPRING多数据源切换的问题和解决方法
- spring框架中切换多数据源的问题
- spring框架多数据源切换问题的解决
- spring框架多数据源切换问题的解决
- 基于spring和ibatis的多数据源切换方案
- Spring多数据源的动态切换
- Spring多数据源的动态切换
- spring的AbstractRoutingDataSource 多数据源切换
- spring 多数据源切换
- Spring多数据源切换
- proxool+spring多数据源动态切换配置问题
- 【Spring】使用Spring的AbstractRoutingDataSource实现多数据源切换
- Spring-基于Spring的多数据源切换
- 【Spring】使用Spring的AbstractRoutingDataSource实现多数据源切换
- 基于Spring Boot实现Mybatis的多数据源切换和动态数据源加载
- 基于Spring+Mybatis的多数据源动态切换
- 基于Spring+Mybatis的多数据源动态切换
- spring+mybatis 多数据源切换失败的可能原因。
- 多线程编程系列(五):“生产者消费者”实验——PV原语实现
- Java数字图像处理基础知识 - 必读
- Spring中事件处理de小技巧
- 彻底卸载MYSQL,windows版
- 图像匹配
- SPRING多数据源切换的问题和解决方法
- 进程间通信系列(一)管道读写实例
- 再析在spring框架中解决多数据源的问题
- Spring中事务管理浅谈
- 使用memcache作为session的处理器
- Java高手谈做程序员的基本原则
- java 单例类 final类 抽象类
- linux用户与组管理
- 让android支持多种编程语言