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



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

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



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

 

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


你可能感兴趣的:(spring,应用服务器,class,java)