tibero와 postgres를 한 트랜잭션으로 묶을 것이다.
1. dependency 추가 (자바 버전 1.7)
<!-- 분산트랜잭션STR -->
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-jdbc</artifactId>
<version>4.0.6</version>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
<!-- 분산트랜잭션END -->
2. bean 추가
<!-- atomikos -->
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<property name="forceShutdown">
<value>true</value>
</property>
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout">
<value>300</value>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ref="atomikosTransactionManager"/>
<property name="userTransaction" ref="atomikosUserTransaction"/>
</bean>
[오류] class="com.atomikos.icatch........" 부분에서 오류 메시지가 뜬다면 dependency가 제대로 추가되지 않은 것.
Maven update, project clean, server clean, jar 파일 직접 삽입(비추함 한 dependency에 jar 파일이 많음) 등으로 재빌드를 시도해 볼 것.
3. 오류 메시지
expected single matching bean but found 2: transactionManager, txManager
[오류] 기존에 사용하던 tibero transaction(하단)과 충돌
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource-tibero"/>
</bean>
[해결] @Transactional 어노테이션에 value={bean 이름} 옵션과 readOnly=true 옵션을 붙여줌
@Transactional(value = "transactionManager", readOnly = true)
public Integer insertTestData(Map<String, Object> param) throws Exception{
//쿼리
return 1;
}
'old' 카테고리의 다른 글
[JAVA URL Encoding] 자바 한글, JSON 인코딩 (0) | 2023.03.30 |
---|---|
[eclipse] 디버깅 단축키 (0) | 2023.03.29 |
2. geoserver 타일 레이어 (캐시된 레이어) (0) | 2022.11.09 |
0. Tomcat 위에 Geoserver 올리기 (0) | 2022.11.09 |
1. GeoServer 작업공간, 저장소, 레이어 생성 (0) | 2022.11.09 |