2014-02-21 35 views

回答

1

是的,你可以建议管理从春天和从applicationContext获得。

<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSource" > 
     <property name="driverClassName" value="${database.driverClassName}"/> 
     <property name="url" value="${database.url}"/> 
     <property name="username" value="${database.username}"/> 
     <property name="password" value="${database.password}"/> 

<bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSourceOrderDetail" > 
     <property name="driverClassName" value="${database.driverClassName}"/> 
     <property name="url" value="${database.url.orderdetail}"/> 
     <property name="username" value="${database.username}"/> 
     <property name="password" value="${database.password}"/> 
    </bean> 

只需要有ID的不同的名称,要恰当地注入

检查this检讨如何能春季ibatis的整合,然后使用数据源豆

配置豆

或者,如果您要使用datasource-ds.xml,只需将两个datasource xml文件放在应用程序上下文中的lib文件夹中,如果你使用的是jboss或tomcat。

UPDATE

<jpa:repositories base-package="com.staples.sa.pricemart.repository.pag" 
    entity-manager-factory-ref="entityManagerFactory" /> 

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    <qualifier value="pagTransactionManager" /> 
</bean> 

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    id="entityManagerFactory"> 
    <property name="persistenceUnitName" value="persistenceUnit" /> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaDialect"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> 
    </property> 
</bean> 
<jpa:repositories base-package="com.staples.sa.pricemart.repository.orderdetail" 
    entity-manager-factory-ref="entityManagerFactoryOrderDetail" /> 


<bean id="transactionManagerOrderDetail" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactoryOrderDetail" /> 
    <qualifier value="orderDetailTX" /> 
</bean> 


<bean 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    id="entityManagerFactoryOrderDetail"> 
    <property name="persistenceUnitName" value="persistenceUnitOrderDetail" /> 
    <property name="dataSource" ref="dataSourceOrderDetail" /> 
    <property name="jpaDialect"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> 
    </property> 
</bean> 

<!-- --> 

的persistence.xml需要这个样子。 (需要完成XML配置)

<persistence-unit name="persistenceUnit" 
     transaction-type="RESOURCE_LOCAL"> 

而且

<!-- Add the persistence context for OrderDetail --> 
<persistence-unit name="persistenceUnitOrderDetail" 
    transaction-type="RESOURCE_LOCAL"> 
+0

你能告诉我please.So怎么样春天的交易,它可以处理两个2个数据源。 – 9ine

+1

您需要针对不同的数据库拥有不同的事务bean。 –

+0

@PradeepKrKaushal是的,我认为是。 – 9ine

0

您可以为通过声明数据源豆,不同的ID在Spring上下文喜欢配置尽可能多的数据库和 注入相应的属性从属性文件。如果两个数据库不同,那么您处于分布式事务的范围内,并且您必须配置可以与JTA一起运行的Spring transaction manager。另外值得注意的是,Spring事务管理器仅仅是一个抽象概念,它需要配置外部JTA事务 管理器(如Bitrionix/Atomikos),或者如果在EE应用服务器上部署,则可以在JNDI注册中心查找事务管理器。然后,当您标记事务边界(可能使用Spring Transactional注释)时,Spring将自动协调事务。

0

下面是示例代码为您

class Main { 
    public static void main(String args[]) throws Exception { 
    ApplicationContext ac = new ClassPathXmlApplicationContext("context.xml", Main.class); 
    DataSource dataSource = (DataSource) ac.getBean("dataSource"); 
    DataSource mysqlDataSource = (DataSource) ac.getBean("mysqlDataSource"); 

的context.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> 
    <property name="url" value="jdbc:oracle:thin:@oracle.devcake.co.uk:1521:INTL"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/> 
</bean> 

<bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://dbhost-prospring-psql/prospring"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/> 
</bean> 

<bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler"> 
    <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/> 
</bean> 

<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"/> 

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 
相关问题