Guest User

Untitled

a guest
May 25th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.78 KB | None | 0 0
  1. package sp.config;
  2.  
  3. import com.atomikos.icatch.jta.J2eeUserTransaction;
  4. import com.atomikos.icatch.jta.UserTransactionImp;
  5. import com.atomikos.icatch.jta.UserTransactionManager;
  6. import com.atomikos.jdbc.AtomikosDataSourceBean;
  7. import org.springframework.beans.factory.annotation.Qualifier;
  8. import org.springframework.context.annotation.Bean;
  9. import org.springframework.context.annotation.Configuration;
  10. import com.mysql.jdbc.jdbc2.optional.MysqlXADataSource;
  11. import org.springframework.orm.jpa.JpaVendorAdapter;
  12. import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
  13. import org.springframework.orm.jpa.vendor.Database;
  14. import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
  15. import org.springframework.transaction.jta.JtaTransactionManager;
  16.  
  17. import javax.sql.DataSource;
  18.  
  19. @Configuration
  20. public class NewDbConfig {
  21.  
  22. @Bean(name="dataSourceA")
  23. public AtomikosDataSourceBean dataSourceA() {
  24. AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean();
  25. dataSource.setUniqueResourceName("DataSourceA");
  26.  
  27. MysqlXADataSource mysqlXADataSource = new MysqlXADataSource();
  28. mysqlXADataSource.setDatabaseName("atomikos_one");
  29. mysqlXADataSource.setServerName("localhost");
  30. mysqlXADataSource.setPort(3306);
  31. mysqlXADataSource.setUser("root");
  32. mysqlXADataSource.setPassword("mypass");
  33. mysqlXADataSource.setUrl("jdbc:mysql://localhost:3306/atomikos_one");
  34.  
  35. dataSource.setXaDataSource(mysqlXADataSource);
  36.  
  37. return dataSource;
  38. }
  39.  
  40. @Bean(name="dataSourceB")
  41. public AtomikosDataSourceBean dataSourceB() {
  42. AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean();
  43. dataSource.setUniqueResourceName("DataSourceB");
  44.  
  45. MysqlXADataSource mysqlXADataSource = new MysqlXADataSource();
  46. mysqlXADataSource.setDatabaseName("atomikos_two");
  47. mysqlXADataSource.setServerName("localhost");
  48. mysqlXADataSource.setPort(3306);
  49. mysqlXADataSource.setUser("root");
  50. mysqlXADataSource.setPassword("mypass");
  51. mysqlXADataSource.setUrl("jdbc:mysql://localhost:3306/atomikos_two");
  52.  
  53. dataSource.setXaDataSource(mysqlXADataSource);
  54.  
  55. return dataSource;
  56. }
  57.  
  58. @Bean(name="entityManagerFactoryA")
  59. public LocalContainerEntityManagerFactoryBean entityManagerFactoryA(
  60. @Qualifier("dataSourceA") DataSource dataSource,
  61. @Qualifier("vendorAdapterA") JpaVendorAdapter vendorAdapter
  62. ) {
  63. LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
  64. factoryBean.setPackagesToScan("sp.model.atomikosA");
  65. factoryBean.setDataSource(dataSource);
  66. factoryBean.setJpaVendorAdapter(vendorAdapter);
  67.  
  68. return factoryBean;
  69. }
  70.  
  71. @Bean(name="vendorAdapterA")
  72. public JpaVendorAdapter hibernateJpaVendorAdapterA() {
  73. HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
  74. vendorAdapter.setShowSql(true);
  75. vendorAdapter.setDatabase(Database.MYSQL);
  76. vendorAdapter.setDatabasePlatform("org.hibernate.dialect.MySQL5Dialect");
  77. return vendorAdapter;
  78. }
  79.  
  80. @Bean(name="entityManagerFactoryB")
  81. public LocalContainerEntityManagerFactoryBean entityManagerFactoryB(
  82. @Qualifier("dataSourceB") DataSource dataSource,
  83. @Qualifier("vendorAdapterB") JpaVendorAdapter vendorAdapter
  84. ) {
  85. LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
  86. factoryBean.setPackagesToScan("sp.model.atomikosB");
  87. factoryBean.setDataSource(dataSource);
  88. factoryBean.setJpaVendorAdapter(vendorAdapter);
  89.  
  90. return factoryBean;
  91. }
  92.  
  93. @Bean(name="vendorAdapterB")
  94. public JpaVendorAdapter hibernateJpaVendorAdapterB() {
  95. HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
  96. vendorAdapter.setShowSql(true);
  97. vendorAdapter.setDatabase(Database.MYSQL);
  98. vendorAdapter.setDatabasePlatform("org.hibernate.dialect.MySQL5Dialect");
  99. return vendorAdapter;
  100. }
  101.  
  102. @Bean(name="atomikosTransactionManager")
  103. public UserTransactionManager userTransactionManager() {
  104. UserTransactionManager transactionManager = new UserTransactionManager();
  105. transactionManager.setForceShutdown(false);
  106. return transactionManager;
  107. }
  108.  
  109. @Bean(name="atomikosUserTransaction")
  110. public UserTransactionImp atomikosUserTransaction() {
  111. UserTransactionImp j2eeUserTransaction = new UserTransactionImp();
  112. try {
  113. j2eeUserTransaction.setTransactionTimeout(300);
  114. } catch (Exception e) {
  115.  
  116. }
  117. return j2eeUserTransaction;
  118. }
  119.  
  120. @Bean(name="transactionManager")
  121. public JtaTransactionManager jtaTransactionManager(
  122. @Qualifier("atomikosTransactionManager") UserTransactionManager userTransactionManager,
  123. @Qualifier("atomikosUserTransaction") UserTransactionImp j2eeUserTransaction
  124. ) {
  125. JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
  126. jtaTransactionManager.setTransactionManager(userTransactionManager);
  127. jtaTransactionManager.setUserTransaction(j2eeUserTransaction);
  128. jtaTransactionManager.setAllowCustomIsolationLevels(true);
  129. return jtaTransactionManager;
  130. }
  131.  
  132. }
  133.  
  134. package sp.dao.atomikosA;
  135.  
  136. import sp.model.atomikosA.Customer;
  137. import org.springframework.stereotype.Service;
  138.  
  139. import javax.persistence.EntityManager;
  140. import javax.persistence.PersistenceContext;
  141.  
  142. @Service
  143. public class CustomerADaoImpl implements CustomerADao {
  144.  
  145. @PersistenceContext(unitName="entityManagerFactoryA")
  146. protected EntityManager em;
  147.  
  148. public void persistItem(Customer customer) {
  149. em.persist(customer);
  150. }
  151. }
  152.  
  153. package sp.dao.atomikosB;
  154.  
  155. import sp.model.atomikosB.Order;
  156. import org.springframework.stereotype.Service;
  157.  
  158. import javax.persistence.EntityManager;
  159. import javax.persistence.PersistenceContext;
  160.  
  161. @Service
  162. public class OrderBDaoImpl implements OrderBDao {
  163.  
  164. @PersistenceContext(unitName="entityManagerFactoryB")
  165. protected EntityManager em;
  166.  
  167. public void persistItem(Order order) {
  168. em.persist(order);
  169. }
  170. }
  171.  
  172. package sp.services;
  173.  
  174. import sp.dao.atomikosA.CustomerADao;
  175. import sp.dao.atomikosB.OrderBDao;
  176. import sp.model.atomikosA.Customer;
  177. import sp.model.atomikosB.Order;
  178. import org.springframework.beans.factory.annotation.Autowired;
  179. import org.springframework.stereotype.Service;
  180. import org.springframework.transaction.annotation.Transactional;
  181.  
  182. @Service("employeeService")
  183. public class EmployeeServiceImpl implements EmployeeService {
  184.  
  185. @Autowired
  186. private CustomerADao customerADao;
  187.  
  188. @Autowired
  189. private OrderBDao orderBDao;
  190.  
  191. @Transactional(rollbackFor=Exception.class)
  192. public void persistEmployees(Customer employeeA, Order employeeB) throws Exception {
  193. System.out.println("Persist A");
  194. customerADao.persistItem(employeeA);
  195. System.out.println("Persist A OK - persist B");
  196. orderBDao.persistItem(employeeB);
  197. System.out.println("Persist B okk");
  198. }
  199.  
  200. @Transactional
  201. public void persistCustomer(Customer customer) throws Exception {
  202. System.out.println("Persist A");
  203. customerADao.persistItem(customer);
  204. }
  205.  
  206. }
  207.  
  208. @RequestMapping("/")
  209. @ResponseBody
  210. public String index() {
  211.  
  212. sp.model.atomikosA.Customer customer = new sp.model.atomikosA.Customer();
  213. customer.setName("Maksat");
  214. customer.setAge(27);
  215. customer.setCustId(3L);
  216.  
  217. Order order = new Order();
  218. order.setCustId(3L);
  219. order.setCode(1);
  220. order.setQuantity(1);
  221.  
  222. try {
  223. employeeService.persistEmployees(customer, order);
  224. employeeService.persistCustomer(customer);
  225. } catch (Exception e) {
  226. int del = 2;
  227. }
  228.  
  229. return "success";
  230. }
Add Comment
Please, Sign In to add comment