Spring Boot에서 Jta Tansaction Manager를 설정해서 개발 하던 중에 어플리케이션을 실행 하면 tmlog가 생성이 된다.
UserTransactionServiceImp를 Bean으로 등록을 해서 로그가 생성이 되는데 로그를 생성하지 않거나 atomikos에 미리 정의 되어 있는 설정을 변경 하고 싶을 시 Properties를 새로 정의 해서 UserTransactionServiceImp를 init 하면 된다.
Tansaction properties파일에 셋팅을 하면 된다고도 하고 application.properties에 설정을 하면 된다고 하는데 UserTransactionServiceImp Bean으로 등록을 별도로 정의 하면 init 순서에 따라서 properties에 설정 한 값이 셋팅된 값이 적용이 안될 경우에는 구현한 Tansaction Manager에 직접 설정을 하면 된다.
@Configuration
@Slf4j public class JtaTransactionManagerConfig { @Autowired private Environment env; @Bean @DependsOn("userTransactionService") // userTransactionServiceImp가 먼저 초기화되도록 설정 public PlatformTransactionManager transactionManager() throws Exception { log.info("transactionManager() 실행"); // UserTransaction 설정 UserTransactionImp userTransaction = new UserTransactionImp(); userTransaction.setTransactionTimeout(300); // 300초로 트랜잭션 타임아웃 설정 // UserTransactionManager 설정 UserTransactionManager userTransactionManager = new UserTransactionManager(); userTransactionManager.setForceShutdown(false); // 애플리케이션 종료 시 강제 종료하지 않음 // JTA 트랜잭션 매니저 설정 JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(userTransaction, userTransactionManager); // 커밋 실패 시 롤백 설정 jtaTransactionManager.setRollbackOnCommitFailure(true); return jtaTransactionManager; } @Bean(initMethod = "init", destroyMethod = "shutdownForce") public UserTransactionServiceImp userTransactionService() { // UserTransactionServiceImp 설정 UserTransactionServiceImp userTransactionServiceImp = new UserTransactionServiceImp(); // 트렌젝션 로그파일 생성 안되게 설정 Properties properties = new Properties(); properties.setProperty("com.atomikos.icatch.enable_logging", "false"); properties.setProperty("com.atomikos.icatch.log_base_dir", env.getProperty("com.atomikos.icatch.log_base_dir")); userTransactionServiceImp.init(properties); return userTransactionServiceImp; } } |
Bean으로 등록하지 않은 경우에는 properties에 com.atomikos.icatch 관련 설정을 직접 하면 된다.
참고로 로그를 생성하고 싶지 않을 경우 com.atomikos.icatch.log_base_dir 로그 디렉토리 설정 값을
Window는 NUL로 설정 하고 Linux는 /dev/null로 설정을 해야 해서 spring maven profile 설정에 locla과 서버 배포 설정에
값을 설정해서 config 설정에 사용 했다.
#리눅스
com.atomikos.icatch.log_base_dir=/dev/null #Window com.atomikos.icatch.log_base_dir=NUL |
'Development Story > Java' 카테고리의 다른 글
Spring Boot Security 중복 로그인 방지 (1) | 2024.12.02 |
---|---|
Spring Boot Redis 설정 (1) | 2024.11.18 |
네이버 클라우드 Ncp Cloud Out Bound Mailer spring구현 (1) | 2024.09.24 |
spring boot batch + JtaTransactionManager (0) | 2024.09.02 |
ChainedTransactionManager과 JtaTransactionManager (0) | 2024.09.02 |