2016-11-09 32 views
0

我工作的一个Spring MVC 4应用程序,这是我JPAConfig之一,我必须设定两个不同的数据源这里是类和数据源定义:Spring MVC的变化数据源

@Configuration 
@EnableJpaRepositories(basePackageClasses = MassaContratos.class, enableDefaultTransactions = false, 
         entityManagerFactoryRef = "entityManagerFactory08",transactionManagerRef = "transactionManager08") 
@EnableTransactionManagement 
public class JPAConfig08 { 

    @Bean 
    public DataSource dataSource08() { 
     JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup(); 
     dataSourceLookup.setResourceRef(true); 
     return dataSourceLookup.getDataSource("jdbc/DB08"); 
    } 

    @Bean 
    public JpaVendorAdapter jpaVendorAdapter08() { 
     HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter(); 
     adapter.setDatabase(Database.ORACLE); 
     adapter.setShowSql(false); 
     adapter.setGenerateDdl(false); 
     adapter.setDatabasePlatform("org.hibernate.dialect.OracleDialect"); 
     return adapter; 
    } 

    @Bean 
    public EntityManagerFactory entityManagerFactory08() { 
     LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
     factory.setDataSource(dataSource08()); 
     factory.setJpaVendorAdapter(jpaVendorAdapter08()); 
     factory.setPackagesToScan(MassaContrato.class.getPackage().getName()); 
     factory.afterPropertiesSet(); 
     return factory.getObject(); 
    } 

    @Bean 
    public PlatformTransactionManager transactionManager08() { 
     JpaTransactionManager transactionManager = new JpaTransactionManager(); 
     transactionManager.setEntityManagerFactory(entityManagerFactory08()); 
     return transactionManager; 
    } 

} 

什么我需要做的,我不知道该怎么办是......如何改变这种

dataSourceLookup.getDataSource("jdbc/DB08"); 

从其他数据库CONFIGS

例如挑选:

dataSourceLookup.getDataSource("jdbc/DB08-dev"); 

我需要动态更改数据源。

回答

0

我不确定你能做到这一点,因为这不是JNDI试图实现的目标。

JNDI将配置推迟到容器。这样,您的JNDI名称在任何环境中都是相同的。容器配置。确定JNDI名称指向哪个数据库。