Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.eclipse.persistence</groupId>
- <artifactId>org.eclipse.persistence.jpa</artifactId>
- <version>2.7.0</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.6</version>
- </dependency>
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- <version>3.2.2</version>
- </dependency>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.54</version>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- <version>2.7.0</version>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- <version>2.7.0</version>
- </dependency>
- <dependency>
- <groupId>org.jmockit</groupId>
- <artifactId>jmockit</artifactId>
- <version>1.33</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jta-atomikos</artifactId>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-dbcp -->
- <dependency>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-dbcp</artifactId>
- <version>8.5.4</version>
- </dependency>
- </dependencies>
- @Configuration
- public class MainConfig {
- @Bean(name = "userTransaction")
- public UserTransaction userTransaction() throws Throwable {
- UserTransactionImp userTransactionImp = new UserTransactionImp();
- userTransactionImp.setTransactionTimeout(10000);
- return userTransactionImp;
- }
- @Bean(name = "atomikosTransactionManager", initMethod = "init", destroyMethod = "close")
- public TransactionManager atomikosTransactionManager() throws Throwable {
- UserTransactionManager userTransactionManager = new UserTransactionManager();
- userTransactionManager.setForceShutdown(true);
- return userTransactionManager;
- }
- @Bean(name = "transactionManager")
- @DependsOn({ "userTransaction", "atomikosTransactionManager" })
- public PlatformTransactionManager transactionManager() throws Throwable {
- UserTransaction userTransaction = userTransaction();
- TransactionManager atomikosTransactionManager = atomikosTransactionManager();
- JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(userTransaction, atomikosTransactionManager);
- jtaTransactionManager.setAllowCustomIsolationLevels(true);
- return jtaTransactionManager;
- }
- }
- @Configuration
- @EnableTransactionManagement(proxyTargetClass = true)
- @EnableJpaRepositories(basePackages = "com.evan.jta.repository.ds1", entityManagerFactoryRef = "entityManagerFactory", transactionManagerRef = "transactionManager")
- public class JpaConfigDs1{
- @Bean(name = "dataSource", initMethod = "init", destroyMethod = "close")
- @ConfigurationProperties(prefix = "spring.jta.atomikos.datasource.jta-user")
- public DataSource dataSource() {
- System.out.println("jta-user dataSource init");
- return new AtomikosDataSourceBean();
- }
- @Bean(name = "jpaVendorAdapter")
- public JpaVendorAdapter jpaVendorAdapter() {
- System.out.println("jpaVendorAdapter init");
- EclipseLinkJpaVendorAdapter adapter = new EclipseLinkJpaVendorAdapter();
- adapter.setShowSql(true);
- adapter.setDatabase(Database.MYSQL); adapter.setDatabasePlatform("org.eclipse.persistence.platform.database.MySQLPlatform");
- adapter.setGenerateDdl(true);
- return adapter;
- }
- @Bean(name = "entityManagerFactory")
- public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
- System.out.println("entityManagerFactory init");
- LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
- entityManager.setJpaVendorAdapter(jpaVendorAdapter());
- // entity package
- entityManager.setPackagesToScan("com.evan.jta.model.ds1");
- entityManager.setJtaDataSource(dataSource());
- Properties properties = new Properties();
- properties.put("eclipselink.weaving", "false");
- entityManager.setJpaProperties(properties);
- entityManager.setPersistenceUnitName("entityManagerFactory_user");
- return entityManager;
- }
- @Configuration
- @EnableTransactionManagement(proxyTargetClass = true)
- @EnableJpaRepositories(basePackages = "com.evan.jta.repository.ds2", entityManagerFactoryRef = "entityManagerFactory2", transactionManagerRef = "transactionManager")
- public class JpaConfigDs2{
- @Bean(name = "dataSource2", initMethod = "init", destroyMethod = "close")
- @ConfigurationProperties(prefix = "spring.jta.atomikos.datasource.jta-product")
- public DataSource dataSource() {
- System.out.println("jta-product dataSource init");
- return new AtomikosDataSourceBean();
- }
- @Bean(name = "jpaVendorAdapter2")
- public JpaVendorAdapter jpaVendorAdapter() {
- System.out.println("jpaVendorAdapter init");
- EclipseLinkJpaVendorAdapter adapter = new EclipseLinkJpaVendorAdapter();
- adapter.setShowSql(true);
- adapter.setDatabase(Database.MYSQL); adapter.setDatabasePlatform("org.eclipse.persistence.platform.database.MySQLPlatform");
- adapter.setGenerateDdl(true);
- return adapter;
- }
- @Bean(name = "entityManagerFactory2")
- public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
- System.out.println("entityManagerFactory init");
- LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
- entityManager.setJpaVendorAdapter(jpaVendorAdapter());
- // entity package
- entityManager.setPackagesToScan("com.evan.jta.model.ds2");
- entityManager.setJtaDataSource(dataSource());
- Properties properties = new Properties();
- properties.put("eclipselink.weaving", "false");
- entityManager.setJpaProperties(properties); entityManager.setPersistenceUnitName("entityManagerFactory2_product");
- return entityManager;
- }
- log:
- path: D:logworkdev
- appName: dewls
- level: info
- server:
- port: 8888
- connection-timeout: 120000
- spring:
- jta:
- enabled: true
- atomikos:
- datasource:
- jta-user:
- xa-properties.url: jdbc:mysql://xxxx:3306/dewls01?useUnicode=yes&characterEncoding=utf8&useSSL=true
- xa-properties.user: root
- xa-properties.password: 123
- xa-data-source-class-name: com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
- unique-resource-name: jta-customer
- max-pool-size: 25
- min-pool-size: 3
- max-lifetime: 20000
- borrow-connection-timeout: 10000
- jta-product:
- xa-properties.url: jdbc:mysql://xxxxx/dewls02?useUnicode=yes&characterEncoding=utf8&useSSL=true
- xa-properties.user: root
- xa-properties.password: root
- xa-data-source-class-name: com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
- unique-resource-name: order
- max-pool-size: 25
- min-pool-size: 3
- max-lifetime: 20000
- borrow-connection-timeout: 10000
- jpa:
- show-sql: true
- database: MySQLenter code here
- @Service
- public class JtaService {
- @Autowired
- private UserRepository userRepository;
- @Autowired
- private ProductRepository productRepository;
- @Transactional
- public void jtaTesting() {
- User user = new User();
- userRepository.save(user);
- Product product = new Product();
- productRepository.save(product);
- // int i = 1 / 0;
- }
- }
- [ 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