반응형
1.1 ProFrame Transaction
1.2 Declarative Transaction
1.3 Global Session
2. Declarative Transaction
2.1 정의
4. User Transaction
4.1 개요
4.2.2 User Transaction을 적용한다.
- TFC ( Transaction Flow Controller ) 가 Transaction 관리 및 거래 흐름을 제어
- ProFrame이 Transaction처리를 담당함으로써 일관성을 보장하며, 개발자는 Local Transaction, Global Transaction 에 관여 하지 않는다.
1.2 Declarative Transaction
- 기본적으로 EJB Declarative Transaction model 을 따르며, 서비스 별로 개별 Transaction 속성을 가진다.
- Required / RequiredNew / NotSupported 을 제공
- Service - Service 연동 거래일 경우 other service 시점에서 transaction 유형을 설정한다.
1.3 Global Session
- EMB Designer 에서 operation 별로 Global Session 을 선언하여 DB Transaction 수행 시 선택적으로 사용할 수 있다.
2. Declarative Transaction
2.1 정의
1) Required
- Required 속성으로 정의된 서비스들은 모두 transaction 내에서 수행되게 된다.
- 해당 서비스가 호출되었을 때, 이미 transaction이 수행되고 있을 경우에는 그 transaction 내에서 서비스가 수행되고, 없을 경우에는 새로운 transaction 을 만들어 서비스를 수행한다.
- update, delete 작업에 유용하다.
- RequiredNew 속성으로 정의된 서비스들은 언제나 새로운 transaction 내에서 수행된다.
- 해당 서비스가 호출되었을 때, 호출한 클라이언트가 transaction을 시작하지 않은 상태이면 새로운 transaction을 수행한다.
- 클라이언트가 transaction을 시작해서, 해당 서비스가 호출되는 시점이 transaction 중 이라면, 이미 수행 중인 transaction을 잠시 중단하고 호출된 서비스를 처리하기 위해 새로운 transaction을 처리하여, 서비스가 수행된 후에 이전에 중지된 transaction을 다시 수행한다.
- 이로 인해 overhead가 발생하므로 남용하지 않는 것을 추천한다.
- NotSupported 속성으로 정의된 서비스는 transaction 범위 밖에서 수행된다.
- 호출하는 클라이언트가 transaction을 가지고 있지 않고 서비스를 호출하였다면 마찬가지로 transaction 없이 서비스가 호출된다.
- 만약, 클라이인트가 transaction 범위 내에서 NotSupported 속성으로 정의된 서비스를 호출하면, 기존의 transaction은 중지한 후, 메서드 내용을 처리하고 다시 재개한다.
2.3 Declarative Transaction 정의 방법
2.4 Global Transaction
2.4.1 개요
2.5 Service Call 유형
3. Global Session
3.1 개요
3.3 Global Session 사용
- ProBuilder의 각 Application 별로 proframe-application.xml 이 존재한다.
- proframe-application.xml 의 Properites(특성) view 에서 Transaction(트랜잭션) 탭으로 이동하면, Required / RequiredNew / NotSupported 을 선택할 수 있다.
2.4 Global Transaction
2.4.1 개요
- Global Transaction 을 구성하는 분산된 여러 RM ( Resource Manager ) 의 작업은 논리적인 단일 작업으로 처리된다.
- 즉, 여러 개의 서버에서 일어난 RM 관련 작업을 단일 Transaction으로 처리한다.
- ProFrame의 Transaction 관리는 TFC / Call Manager 가 있어 다음과 같은 기능을 담당한다.
- TFC 담당 ( tx.begin, tx.end )
- Runtime 시 Service Registry 를 참조하여 해당 Service 위치에 따라 Local Call / Remote Call 결정
- target 서비스가 분산, 클러스터링 되어 있는 경우 라우팅, Load Balancing, Fail Over 처리
- 후행 처리를 위한 Task를 후행 매니저 quere 에 적재
- Node 1의 지급 service 와 Node 2의 입금 service를 하나의 Transaction으로 2 Phase Commit 를 보장하기 위해 XA datasource를 선택하고 지급 service와 입금 service 모두 "Required" Transaction 속성을 사용한다.
- rollback 되는 service가 있다면 한 Transaction 상의 services 는 모두 rollback 된다.
2.5 Service Call 유형
- SO ( Service Object ) to SO : 연동 모듈을 통한 호출
- SO to BO ( Business Object ) : Application Context 를 통한 객체 생성 후 Reference Call
- BO to BO : Application Context를 통한 객체 생성 후 Reference Call
- BO to DBIO Obj : DBIO API 를 이용하여 호출
- SO 1 -> SO 2 ( Required )
- 같은 transaction 에서 처리
- SO 1 -> SO 2 ( RequiredNew )
- SO1 의 Transaction 중지하고 SO 2의 Transaction 을 수행한 후, 이전에 중지하였던 Transaction을 다시 실행
- SO 1 -> SO 2 ( NotSupported)
- SO1 stop, transaction 밖에서 SO2 내용을 처리한 후, 기존의 Transaction을 재개한다.
3. Global Session
3.1 개요
- Global Session을 정의하면 기존 DBIO Session 명 정의하는 부분을 개발자 편의와 업무 특성에 맞도록 할 수 있다. 이를 통해 DBIO 의 사용도 편해진다. EMB Designer 의 Business Object 에서 operation 별로 Global Session을 정의한다. 이를 통해 Global Session을 선택적으로 사용할 수 있다.
- EMB Designer 에서 BO 의 Operation 을 선택하여 Properties(특성) View의 "Session (세션)" 탭을 선택한다.
- 추가버튼을 클릭하여 추가할 세션정보를 추가
- 윈하는 세션명, 별칭 및 데이터소스(dbio_config.xml에서 설정된 data-source의 conn-name과 동일) 를 입력
- 자동 빌드 된 소스를 보면
- .... cb.putServiceSession("non-xa", "proframe"); cb.putServiceSession("xa", "proframeXA"); ...
3.3 Global Session 사용
- 같은 session 을 사용하지만 DB Object 를 호출할 때마다 session을 선언해줘야 했던 불편함을 같은 session에서 순차적으로 쿼리가 실행되어야 하는 업무 특성을 반영하기 위한 기능으로 사용된다.
- 사용방법
- EMB Designer에서 Operation을 선택하고 DBIO 를 선택한다.
- 선택한 DBIO의 Properties(특성) 의 DBIO Call(DBIO 호출) 탭을 선택
- 선언한 Global Session을 사용할 경우, Global Session ComboBox에서 원하는 session을 지정.
4. User Transaction
4.1 개요
- NotSupported 속성을 사용하는 경우, TM ( Transaction Manager ) 이 transaction 에 관여하지 않음을 의미하므로 User Transaction에 의해 직접 관리해야 한다.
- Non-XA 를 사용하나 하나의 transaction 단위에서 transaction 수행 성공을 보장할 수 있도록 user transaction 사용하는 방법을 소개한다.
- Non-XA 의 DataSource를 Global Session으로 선언하고, DBIO 호출 시 선언한 Global Session을 지정한다.
4.2.2 User Transaction을 적용한다.
- DBIO 처리 전에 setAutoCommit 속성을 false 로 지정
- ProFrame 에서 Non-XA의 경우 default로 setAutoCommit 는 true 로 지정된다.
- 해당 모든 DBIO 수행 후에 사용자 지정 Connection 을 Commit 한다.
- 예외 발생시에 사용자 지정 Connection 을 Rollback 한다.
반응형
'Say! 머니곰 > IT' 카테고리의 다른 글
[Eclipse Project] Common Navigator Framework (0) | 2010.06.20 |
---|---|
전문설정 및 사용방법 (0) | 2010.06.16 |
vi 명령어 정리 (1) | 2010.06.15 |
[GEF] 초심자를 위한 자료 목록 (0) | 2010.06.15 |
RPM (0) | 2010.06.15 |