|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectkr.co.hit.live.transaction.Transaction
public class Transaction
분산 트랜젝션을 구현한 Transaction의 구현 클래스이다.
Transaction은 내부에 하나의 Session 객체와
XASession 객체의 ArrayList를 가지고 있다.
SimpleDataSource와 PooledDataSource
| Constructor Summary | |
|---|---|
Transaction(TransactionManager otm)
생성자이다. |
|
| Method Summary | |
|---|---|
void |
commit()
Global transaction을 commit 한다. |
boolean |
delistResource(XAResource res,
int flag)
주어진 리소스를 이 트랜젝션 객체에서 분리한다. |
boolean |
delistResource(XASession xasession,
int flag)
주어진 리소스를 이 트랜젝션 객체에서 분리한다. |
boolean |
enlistResource(XAResource res)
주어진 리소스를 이 트랜젝션 객체에 연계시킨다. |
boolean |
enlistResource(XASession xasession)
주어진 XASession 객체를 이 트랜젝션 객체에서 연결시킨다. |
Session |
getSession()
트랜젝션의 Session 객체를 리턴한다. |
int |
getStatus()
현재 Transaction의 상태를 리턴한다. |
XASession |
getXASession(String dsn)
주어진 DataSource 명을 가진 XASession이 Branch Transaction용 XASession 리스트에 있는지 찾아서 리턴한다. |
XASession |
getXASession(XASession target)
주어진 XASession이 현재 Branch Transaction용 XASession 목록에 있는지 찾아서 리턴한다. |
Xid |
getXid()
현재 설정된 Global Transaction ID 를 리턴한다. |
void |
registerSynchronization(Synchronization sync)
주어진 동기화 객체를 이 트랜젝션 객체에 등록한다. |
void |
rollback()
Global transaction을 rollback 한다. |
void |
setRollbackOnly()
현재 트랜젝션 상태를 rollback-only 상태로 설정한다. |
void |
setSession(Session s)
Local transaction용 Session 객체를 트랜젝션에 연결하고
local transaction을 start 한다. |
void |
setTransactionTimeout(int sec)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public Transaction(TransactionManager otm)
생성자이다.
트랜젝션 관리자인 TransactionManager 객체를 받아서 설정하고,
트랜젝션 관리자를 통하여 Global transaction ID를 생성하여 저장한다.
트랜젝션을 active 상태로 설정한다.
otm - 생성되는 Transaction을 관리하는 트랜젝션 관리자 객체| Method Detail |
|---|
public void setTransactionTimeout(int sec)
public Xid getXid()
현재 설정된 Global Transaction ID 를 리턴한다.
public Session getSession()
트랜젝션의 Session 객체를 리턴한다.
Session 객체
public void setSession(Session s)
throws NotSupportedException
Local transaction용 Session 객체를 트랜젝션에 연결하고
local transaction을 start 한다.
이미 설정되어 있다면 NotSupportedException이 발생한다.
s - 트랜젝션에 연결할 Session 객체
NotSupportedException - 이미 다른 Session 객체가 연결되어 있는 경우public XASession getXASession(String dsn)
주어진 DataSource 명을 가진 XASession이 Branch Transaction용 XASession 리스트에 있는지 찾아서 리턴한다. 없다면 null을 리턴한다.
dsn - 찾을 datasource 명
public XASession getXASession(XASession target)
주어진 XASession이 현재 Branch Transaction용 XASession 목록에 있는지 찾아서 리턴한다. 없다면 null을 리턴한다.
target - 찾을 XASession 객체
public void commit()
throws RollbackException,
HeuristicMixedException,
HeuristicRollbackException,
IllegalStateException,
SystemException
Global transaction을 commit 한다. 트랜젝션에 연결된 local transaction의 Session과 global transaction branch의 XASession들의 commit 이 실행되고 이들과의 연결관계는 모두 clear 된다.
commit in interface TransactionRollbackException - 트랜젝션이 commit되지 않고 rollback 되었다.
IllegalStateException - 트랜젝션이 ACTIVE 상태가 아니다.
HeuristicMixedException
HeuristicRollbackException
SystemException
public void rollback()
throws SystemException,
IllegalStateException
Global transaction을 rollback 한다. 트랜젝션에 연결된 local transaction의 Session과 global transaction branch의 XASession들의 rollback 이 실행되고 이들과의 연결관계는 모두 clear 된다.
rollback in interface TransactionIllegalStateException - rollback 할 수 있는 상태가 아니다.
SystemExceptionpublic int getStatus()
현재 Transaction의 상태를 리턴한다.
getStatus in interface Transactionjavax.transaction.Status 를 참고
public boolean delistResource(XAResource res,
int flag)
throws IllegalStateException,
SystemException
주어진 리소스를 이 트랜젝션 객체에서 분리한다.
트랜젝션 분리 중 오류가 발생하면 트랜젝션 상태를 STATUS_MARKED_ROLLBACK 상태로 변경한다.
입력된 XAResource 객체가 XASession 객체가 아니라면 Exception이 발생한다.
delistResource in interface TransactionIllegalStateException - 현재 트랜젝션이 STATUS_ACTIVE 또는 STATUS_MARKED_ROLLBACK 상태가 아닌 경우
SystemException - res가 XASession 객체가 아닌 경우
public boolean delistResource(XASession xasession,
int flag)
throws IllegalStateException,
SystemException
주어진 리소스를 이 트랜젝션 객체에서 분리한다.
내부의 XASession 목록에서 입력된 XASession을 찾아서 그 객체를 현재 트랜젝션에서 분리한다.
이때 해당 XASession 객체가 목록에서 삭제되는 것은 아니다.
트랜젝션 분리 중 오류가 발생하면 트랜젝션 상태를 STATUS_MARKED_ROLLBACK 상태로 변경한다.
xasession - XASession 객체flag - TMSUCCESS 또는 TMFAIL.(TMSUSPEND는 지원하지 않음)
IllegalStateException - 현재 트랜젝션이 STATUS_ACTIVE 또는 STATUS_MARKED_ROLLBACK 상태가 아닌 경우
SystemException
public boolean enlistResource(XAResource res)
throws RollbackException,
IllegalStateException,
SystemException
주어진 리소스를 이 트랜젝션 객체에 연계시킨다.
입력된 XAResource 객체가 XASession 객체가 아니라면 Exception이 발생한다.
enlistResource in interface TransactionRollbackException
IllegalStateException
SystemException
public boolean enlistResource(XASession xasession)
throws RollbackException,
IllegalStateException,
SystemException
주어진 XASession 객체를 이 트랜젝션 객체에서 연결시킨다.
내부의 XASession 목록에서 입력된 XASession을 찾아서 그 객체가 없을 경우 목록에 추가하고
현재 트랜젝션의 branch Transaction용 Xid를 생성하여 그 Xid로 XASession을 start 한다.
주어진 XASession 객체가 이미 목록에 존재하고 그 상태가 SUSPENED 상태라면 다시 RESUME 한다.
트랜젝션 연결 중 오류가 발생하면 SystemException이 발생한다.
xasession - XASession 객체
IllegalStateException - 현재 트랜젝션이 STATUS_ACTIVE 상태가 아닌 경우
SystemException - 트랜젝션 연결 중 오류가 발생, 최대 branch transaction 수를 초과 했을 경우
RollbackException
public void setRollbackOnly()
throws IllegalStateException
현재 트랜젝션 상태를 rollback-only 상태로 설정한다. 이 상태로 설정된 후에 commit()을 하면 RollbackException이 발생된다.
setRollbackOnly in interface TransactionIllegalStateException - 현재 상태가 active 상태가 아닌 경우
public void registerSynchronization(Synchronization sync)
throws RollbackException,
IllegalStateException
주어진 동기화 객체를 이 트랜젝션 객체에 등록한다.
트랜젝션 관리자는 commit을 진행하기 전에 등록된 동기화 객체의
beforCompletion()를 호출하고, 트랜젝션이 완료된 후에 등록된
동기화 객체의 afterCompletion()를 호출한다.
registerSynchronization in interface Transactionsync - javax.transaction.Synchronization 객체
RollbackException - 현재 트랜젝션 상태가 STATUS_MARKED_ROLLBACK 인 경우
IllegalStateException - 현재 트랜젝션 상태가 STATUS_ACTIVE 상태가 아닌 경우
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||