Guest User

Untitled

a guest
Jan 13th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.89 KB | None | 0 0
  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-test</artifactId>
  9. <scope>test</scope>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-data-jpa</artifactId>
  14. <exclusions>
  15. <exclusion>
  16. <groupId>org.hibernate</groupId>
  17. <artifactId>hibernate-entitymanager</artifactId>
  18. </exclusion>
  19. <exclusion>
  20. <groupId>org.hibernate</groupId>
  21. <artifactId>hibernate-core</artifactId>
  22. </exclusion>
  23. </exclusions>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.eclipse.persistence</groupId>
  27. <artifactId>org.eclipse.persistence.jpa</artifactId>
  28. <version>2.7.0</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>mysql</groupId>
  32. <artifactId>mysql-connector-java</artifactId>
  33. </dependency>
  34. <dependency>
  35. <groupId>commons-io</groupId>
  36. <artifactId>commons-io</artifactId>
  37. <version>2.6</version>
  38. </dependency>
  39. <dependency>
  40. <groupId>commons-collections</groupId>
  41. <artifactId>commons-collections</artifactId>
  42. <version>3.2.2</version>
  43. </dependency>
  44. <dependency>
  45. <groupId>com.alibaba</groupId>
  46. <artifactId>fastjson</artifactId>
  47. <version>1.2.54</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>io.springfox</groupId>
  51. <artifactId>springfox-swagger2</artifactId>
  52. <version>2.7.0</version>
  53. </dependency>
  54.  
  55. <dependency>
  56. <groupId>io.springfox</groupId>
  57. <artifactId>springfox-swagger-ui</artifactId>
  58. <version>2.7.0</version>
  59. </dependency>
  60.  
  61. <dependency>
  62. <groupId>org.jmockit</groupId>
  63. <artifactId>jmockit</artifactId>
  64. <version>1.33</version>
  65. <scope>test</scope>
  66. </dependency>
  67.  
  68. <dependency>
  69. <groupId>org.springframework.boot</groupId>
  70. <artifactId>spring-boot-starter-jta-atomikos</artifactId>
  71. </dependency>
  72. <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-dbcp -->
  73. <dependency>
  74. <groupId>org.apache.tomcat</groupId>
  75. <artifactId>tomcat-dbcp</artifactId>
  76. <version>8.5.4</version>
  77. </dependency>
  78.  
  79.  
  80. </dependencies>
  81.  
  82. @Configuration
  83. public class MainConfig {
  84. @Bean(name = "userTransaction")
  85. public UserTransaction userTransaction() throws Throwable {
  86. UserTransactionImp userTransactionImp = new UserTransactionImp();
  87. userTransactionImp.setTransactionTimeout(10000);
  88. return userTransactionImp;
  89. }
  90.  
  91. @Bean(name = "atomikosTransactionManager", initMethod = "init", destroyMethod = "close")
  92. public TransactionManager atomikosTransactionManager() throws Throwable {
  93. UserTransactionManager userTransactionManager = new UserTransactionManager();
  94. userTransactionManager.setForceShutdown(true);
  95. return userTransactionManager;
  96. }
  97.  
  98. @Bean(name = "transactionManager")
  99. @DependsOn({ "userTransaction", "atomikosTransactionManager" })
  100. public PlatformTransactionManager transactionManager() throws Throwable {
  101. UserTransaction userTransaction = userTransaction();
  102. TransactionManager atomikosTransactionManager = atomikosTransactionManager();
  103. JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(userTransaction, atomikosTransactionManager);
  104. jtaTransactionManager.setAllowCustomIsolationLevels(true);
  105. return jtaTransactionManager;
  106. }
  107. }
  108.  
  109. @Configuration
  110. @EnableTransactionManagement(proxyTargetClass = true)
  111. @EnableJpaRepositories(basePackages = "com.evan.jta.repository.ds1", entityManagerFactoryRef = "entityManagerFactory", transactionManagerRef = "transactionManager")
  112. public class JpaConfigDs1{
  113. @Bean(name = "dataSource", initMethod = "init", destroyMethod = "close")
  114. @ConfigurationProperties(prefix = "spring.jta.atomikos.datasource.jta-user")
  115. public DataSource dataSource() {
  116. System.out.println("jta-user dataSource init");
  117. return new AtomikosDataSourceBean();
  118. }
  119.  
  120. @Bean(name = "jpaVendorAdapter")
  121. public JpaVendorAdapter jpaVendorAdapter() {
  122. System.out.println("jpaVendorAdapter init");
  123. EclipseLinkJpaVendorAdapter adapter = new EclipseLinkJpaVendorAdapter();
  124. adapter.setShowSql(true);
  125. adapter.setDatabase(Database.MYSQL); adapter.setDatabasePlatform("org.eclipse.persistence.platform.database.MySQLPlatform");
  126. adapter.setGenerateDdl(true);
  127. return adapter;
  128. }
  129.  
  130. @Bean(name = "entityManagerFactory")
  131. public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
  132. System.out.println("entityManagerFactory init");
  133. LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
  134. entityManager.setJpaVendorAdapter(jpaVendorAdapter());
  135. // entity package
  136. entityManager.setPackagesToScan("com.evan.jta.model.ds1");
  137. entityManager.setJtaDataSource(dataSource());
  138. Properties properties = new Properties();
  139. properties.put("eclipselink.weaving", "false");
  140. entityManager.setJpaProperties(properties);
  141. entityManager.setPersistenceUnitName("entityManagerFactory_user");
  142. return entityManager;
  143.  
  144. }
  145.  
  146. @Configuration
  147. @EnableTransactionManagement(proxyTargetClass = true)
  148. @EnableJpaRepositories(basePackages = "com.evan.jta.repository.ds2", entityManagerFactoryRef = "entityManagerFactory2", transactionManagerRef = "transactionManager")
  149. public class JpaConfigDs2{
  150. @Bean(name = "dataSource2", initMethod = "init", destroyMethod = "close")
  151. @ConfigurationProperties(prefix = "spring.jta.atomikos.datasource.jta-product")
  152. public DataSource dataSource() {
  153. System.out.println("jta-product dataSource init");
  154. return new AtomikosDataSourceBean();
  155. }
  156. @Bean(name = "jpaVendorAdapter2")
  157. public JpaVendorAdapter jpaVendorAdapter() {
  158. System.out.println("jpaVendorAdapter init");
  159. EclipseLinkJpaVendorAdapter adapter = new EclipseLinkJpaVendorAdapter();
  160. adapter.setShowSql(true);
  161. adapter.setDatabase(Database.MYSQL); adapter.setDatabasePlatform("org.eclipse.persistence.platform.database.MySQLPlatform");
  162. adapter.setGenerateDdl(true);
  163. return adapter;
  164. }
  165.  
  166. @Bean(name = "entityManagerFactory2")
  167. public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
  168. System.out.println("entityManagerFactory init");
  169. LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
  170. entityManager.setJpaVendorAdapter(jpaVendorAdapter());
  171. // entity package
  172. entityManager.setPackagesToScan("com.evan.jta.model.ds2");
  173. entityManager.setJtaDataSource(dataSource());
  174. Properties properties = new Properties();
  175. properties.put("eclipselink.weaving", "false");
  176. entityManager.setJpaProperties(properties); entityManager.setPersistenceUnitName("entityManagerFactory2_product");
  177. return entityManager;
  178.  
  179. }
  180.  
  181. log:
  182. path: D:logworkdev
  183. appName: dewls
  184. level: info
  185. server:
  186. port: 8888
  187. connection-timeout: 120000
  188.  
  189. spring:
  190. jta:
  191. enabled: true
  192. atomikos:
  193. datasource:
  194. jta-user:
  195. xa-properties.url: jdbc:mysql://xxxx:3306/dewls01?useUnicode=yes&characterEncoding=utf8&useSSL=true
  196. xa-properties.user: root
  197. xa-properties.password: 123
  198. xa-data-source-class-name: com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
  199. unique-resource-name: jta-customer
  200. max-pool-size: 25
  201. min-pool-size: 3
  202. max-lifetime: 20000
  203. borrow-connection-timeout: 10000
  204. jta-product:
  205. xa-properties.url: jdbc:mysql://xxxxx/dewls02?useUnicode=yes&characterEncoding=utf8&useSSL=true
  206. xa-properties.user: root
  207. xa-properties.password: root
  208. xa-data-source-class-name: com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
  209. unique-resource-name: order
  210. max-pool-size: 25
  211. min-pool-size: 3
  212. max-lifetime: 20000
  213. borrow-connection-timeout: 10000
  214. jpa:
  215. show-sql: true
  216. database: MySQLenter code here
  217.  
  218. @Service
  219. public class JtaService {
  220. @Autowired
  221. private UserRepository userRepository;
  222.  
  223. @Autowired
  224. private ProductRepository productRepository;
  225.  
  226. @Transactional
  227. public void jtaTesting() {
  228. User user = new User();
  229. userRepository.save(user);
  230.  
  231. Product product = new Product();
  232. productRepository.save(product);
  233. // int i = 1 / 0;
  234. }
  235. }
  236.  
  237. [ INFO ] [2019-01-13 13:25:07] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] [180] - Initializing Spring FrameworkServlet 'dispatcherServlet'
Add Comment
Please, Sign In to add comment