2016-11-09 61 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名稱指向哪個數據庫。