Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- JTA transaction with multiple data source in Spring
- <bean id="parentDataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource"
- abstract="true">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
- <property name="username" value="root"/>
- </bean>
- <bean id="firstDataSource" parent="parentDataSource">
- <property name="url" value="jdbc:mysql://localhost:3306/test"/>
- </bean>
- <bean id="secondDataSource" parent="parentDataSource">
- <property name="url" value="jdbc:mysql://localhost:3306/test2"/>
- </bean>
- <bean id="jtaTransactionManager"
- class="org.springframework.transaction.jta.JtaTransactionManager">
- </bean>
- <bean id="customerDAO" class="springapp.datasource.CustomerDAO">
- <property name="dataSource">
- <ref local="firstDataSource"/>
- </property>
- <property name="dataSource2">
- <ref local="secondDataSource"/>
- </property>
- <property name="jtaTransactionManager">
- <ref local="jtaTransactionManager"/>
- </property>
- </bean>
- public class CustomerDAO {
- private DataSource dataSource;
- private DataSource dataSource2;
- private JtaTransactionManager jtaTransactionManager;
- public DataSource getDataSource2() {
- return dataSource2;
- }
- public void setDataSource2(DataSource dataSource2) {
- this.dataSource2 = dataSource2;
- }
- public JtaTransactionManager getJtaTransactionManager() {
- return jtaTransactionManager;
- }
- public void setJtaTransactionManager(JtaTransactionManager jtaTransactionManager) {
- this.jtaTransactionManager = jtaTransactionManager;
- }
- public DataSource getDataSource() {
- return dataSource;
- }
- public void setDataSource(DataSource dataSource) {
- this.dataSource = dataSource;
- }
- public void insertItem(Item item){
- TransactionTemplate tt = new TransactionTemplate(jtaTransactionManager);
- tt.execute(new TransactionCallback<Object>(){
- @Override
- public Object doInTransaction(TransactionStatus arg0) {
- JdbcTemplate jt = new JdbcTemplate(dataSource);
- String sql = "insert into item(name,price) values ('aaaa',11);";
- jt.setDataSource(dataSource);
- jt.update(sql);
- sql = "insert into item(name,price) values ('aaaa',12);";
- jt.setDataSource(dataSource2);
- jt.update(sql);
- return null;
- }
- });
- }
- }
Add Comment
Please, Sign In to add comment