|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectkr.co.hit.live.transaction.XASession
public class XASession
XASession은 하나의 global transaction branch를 관리하는 객체이다.
XASession 은 내부에 하나의 XAConnection과 여기서 얻어진 XAResource와
Connection 객체를 가지며 이것을 통하여 하나의 Branch Transaction을 관리한다.
XASession은 다른 XASession이 join하는 기능은 제공하지 않으므로 하나의 Branch Transaction과 XASession은 1:1의 관계를 갖는다.
즉, 새로운 Transaction branch가 생성되면 이를 관리하기 위한 XASession 객체를 새로 생성해야 한다.
| Field Summary | |
|---|---|
static int |
STATE_ACTIVE
트랜젝션이 진행 중이다. |
static int |
STATE_CLOSED
현재 초기화되지 않았거나, 사용이 완전히 종료된 상태이다. |
static int |
STATE_ENDED
트렌젝션이 정상적으로 종료된 상태를 나타낸다. |
static int |
STATE_FAILED
트렌젝션이 실패로 종료된 상태를 나타낸다. |
static int |
STATE_INACTIVE
트랜젝션에 연계되지 않은 상태를 나타낸다. |
static int |
STATE_PREPARED
트랜젝션이 prepare 된 상태이다.. |
static int |
STATE_RDONLY
트랜젝션이 read only로 prepare 된 상태이다. |
static int |
STATE_SUSPENDED
트랜젝션과의 연결을 일시적으로 중지한 상태이다. |
| Fields inherited from interface javax.transaction.xa.XAResource |
|---|
TMENDRSCAN, TMFAIL, TMJOIN, TMNOFLAGS, TMONEPHASE, TMRESUME, TMSTARTRSCAN, TMSUCCESS, TMSUSPEND, XA_OK, XA_RDONLY |
| Constructor Summary | |
|---|---|
XASession(String dsn,
XAConnection xaconn)
생성자이다. |
|
| Method Summary | |
|---|---|
void |
close()
XASession을 종료한다. |
void |
closeConnection(Connection con)
이 XAsession에서 얻어온 Connection객체를 close 한다. |
void |
commit(boolean onePhase)
내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 commit()를 호출한다. |
void |
commit(Xid xid,
boolean onePhase)
javax.transaction.xa.XAResource의 commit()의 구현이다. |
void |
end(int flags)
내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 end()를 호출한다. |
void |
end(Xid xid,
int flags)
javax.transaction.xa.XAResource의 end()의 구현이다. |
void |
endFail()
현재 진핸 중인 트랜젝션과 연결을 실패 상태로 종료한다. |
void |
endSuccess()
현재 진핸 중인 트랜젝션과 연결을 정상 종료한다. |
void |
forget(Xid xid)
javax.transaction.xa.XAResource의 forget()의 구현이다. |
Connection |
getConnection()
XASession과 연결된 Connection를 참조하는 Connection 객체를 리턴한다. |
String |
getDataSourceName()
XAConnection 객체를 생성한 DataSource의 이름을 리턴한다. |
int |
getState()
현재 상태를 리턴한다. |
int |
getTransactionTimeout()
javax.transaction.xa.XAResource의 getTransactionTimeout()의 구현이다. |
boolean |
hasEnded()
end()가 이미 호출되어진 상태인지를 리턴한다. |
boolean |
hasSuspended()
STATE_SUSPENDED 상태인지를 리턴한다. |
boolean |
isSameRM(XAResource xares)
javax.transaction.xa.XAResource의 isSameRM()의 구현이다. |
int |
prepare()
내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 prepare()를 호출한다. |
int |
prepare(Xid xid)
javax.transaction.xa.XAResource의 prepare()의 구현이다. |
Xid[] |
recover(int flag)
javax.transaction.xa.XAResource의 recover()의 구현이다. |
void |
rollback()
내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 rollback()를 호출한다. |
void |
rollback(Xid xid)
javax.transaction.xa.XAResource의 rollback()의 구현이다. |
boolean |
setTransactionTimeout(int seconds)
javax.transaction.xa.XAResource의 setTransactionTimeout()의 구현이다. |
void |
start(Xid xid)
주어진 트랜젝션 아이디로 새로운 Transaction branch를 시작한다. |
void |
start(Xid xid,
int flags)
javax.transaction.xa.XAResource의 start()의 구현이다. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int STATE_CLOSED
현재 초기화되지 않았거나, 사용이 완전히 종료된 상태이다.
public static final int STATE_INACTIVE
트랜젝션에 연계되지 않은 상태를 나타낸다. 최초 생성된 상태, XAResource의 rollback()을 호출한 경우, STATE_ENDED 상태에서 commit(xid, true)를 호출한 경우(1-PC commit), 또는 STATE_PREPARED 상태에서 commit(xid, false)를 호출한 경우(2-PC commit) 이다.
public static final int STATE_ACTIVE
트랜젝션이 진행 중이다. STATE_INACTIVE 상태에서 XAResource의 start(xid, TMNOFLAGS) 또는 start(xid, TMJOIN)을 호출 한 경우, 또는 STATE_SUSPENDED 상태에서 XAResource의 start(xid, TMRESUME)를 호출한 경우이다. 여기에서 xid는 연결된 트랜젝션 아이디 값이다.
public static final int STATE_SUSPENDED
트랜젝션과의 연결을 일시적으로 중지한 상태이다. STATE_ACTIVE 상태에서 XAResource의 end(xid, TMSUSPEND)를 호출한 경우이다. XASession에서는 트랜젝션의 suspend가 구현되지 않았으므로 실제로는 사용되지 않는 상태이다.
public static final int STATE_ENDED
트렌젝션이 정상적으로 종료된 상태를 나타낸다. 아직 commit이 된 것은 아니다. STATE_ACTIVE 또는 STATE_SUSPENDED 상태에서 XAResource의 end(xid, TMSUCCESS)를 호출한 경우이다.
public static final int STATE_FAILED
트렌젝션이 실패로 종료된 상태를 나타낸다. 아직 rollback이 된 것은 아니다. STATE_ACTIVE 또는 STATE_SUSPENDED 상태에서 XAResource의 end(xid, TMFAIL)를 호출한 경우이다.
public static final int STATE_PREPARED
트랜젝션이 prepare 된 상태이다.. STATE_ENDED 상태에서 XAResource의 prepare(xid)를 호출한 결과 XA_OK가 리턴된 경우이다.
public static final int STATE_RDONLY
트랜젝션이 read only로 prepare 된 상태이다. STATE_ENDED 상태에서 XAResource의 prepare(xid)를 호출한 결과 XA_RDONLY 가 리턴된 경우이다.
| Constructor Detail |
|---|
public XASession(String dsn,
XAConnection xaconn)
throws SQLException
생성자이다. XAConnection 객체와 이를 생성할 때 사용한 Datasource 명을 넘긴다. 상태는 STATE_INACTIVE가 된다.
dsn - xaconn 객체를 생성한 DataSource 명xaconn - Transaction에 참여할 XAConnection 객체
SQLException| Method Detail |
|---|
public String getDataSourceName()
XAConnection 객체를 생성한 DataSource의 이름을 리턴한다.
public int getState()
현재 상태를 리턴한다.
public boolean hasEnded()
end()가 이미 호출되어진 상태인지를 리턴한다.
public boolean hasSuspended()
STATE_SUSPENDED 상태인지를 리턴한다.
public Connection getConnection()
XASession과 연결된 Connection를 참조하는 Connection 객체를 리턴한다.
Connection 객체를 참조하는 Connection 객체
IllegalStateException - 현재 상태가 STATE_ACTIVE가 아닌 경우
public void closeConnection(Connection con)
throws SQLException
이 XAsession에서 얻어온 Connection객체를 close 한다.
파라메터로 입력된 Connection 객체가 내부 Connection 객체와 다른 경우에는 그냥 리턴된다.
XASession이 STATE_CLOSED 상태이고 더 이상 참조하는 Connection 없는 경우에는 내부 Connection 객체를 close 한다.
SQLException - 실제 connection을 close() 시 오류가 발생했을 경우
public void close()
throws SQLException
XASession을 종료한다. 상태는 STATE_INACTIVE에서 STATE_CLOSED 상태로 변경되고
내부 Connection 객체는 close 된다.
하지만, 아직 참조하는 Connection이 남아 있을 경우에는
실제 내부 Connection를 close 하지 않는다.
STATE_CLOSED 상태가 되면 새로 transaction을 시작하거나 조인(join) 할 수 없으며,
closeConnection() 호출을 통하여 아직 사용 중인 Connection 객체의 close 만 가능하다.
SQLException - Connection 객체 close()시 오류가 발생한 경우
IllegalStateException - 현재 상태가 STATE_INACTIVE가 아닐 경우
public void start(Xid xid)
throws XAException
주어진 트랜젝션 아이디로 새로운 Transaction branch를 시작한다. TMNOFLAGS 로 start()를 호출한다.
xid - transaction branch의 Xid
XAException - 트랜젝션 관련 에러 발생시
public void end(int flags)
throws XAException
내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 end()를 호출한다.
flags - TMSUCCESS, TMFAIL, or TMSUSPEND
XAException
public void endFail()
throws XAException
현재 진핸 중인 트랜젝션과 연결을 실패 상태로 종료한다. 내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 end()를 TMFAIL flag 값으로 호출한다.
XAException
public void endSuccess()
throws XAException
현재 진핸 중인 트랜젝션과 연결을 정상 종료한다. 내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 end()를 TMSUCCESS flag 값으로 호출한다.
XAException
public void rollback()
throws XAException
내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 rollback()를 호출한다.
XAException
public void commit(boolean onePhase)
throws XAException
내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 commit()를 호출한다.
onePhase - true 이면 1-phase commit을 실행, false 이면 2-phase commit 을 실행
XAException
public int prepare()
throws XAException
내부에 저장하고 있는 현재 진행 중인 트랜젝션 아이디(brXid)를 사용하여 prepare()를 호출한다.
IllegalStateException - prepare()를 실행할 수 없는 상태인 경우
XAException - prepare 중 트랜젝션 관련 오류가 발생한 경우
public void commit(Xid xid,
boolean onePhase)
throws XAException
javax.transaction.xa.XAResource의 commit()의 구현이다.
실제로는 내부 XAResource 객체의 commit()을 호출한다.
commit() 후에는 XASession을 close() 한다.
commit in interface XAResourceonePhase - true 이면 1-phase commit을 실행, false 이면 2-phase commit 을 실행
XAException
public void rollback(Xid xid)
throws XAException
javax.transaction.xa.XAResource의 rollback()의 구현이다.
실제로는 내부 XAResource 객체의 rollback()을 호출한다.
rollback() 후에는 XASession을 close() 한다.
rollback in interface XAResourceXAException
public void start(Xid xid,
int flags)
throws XAException
javax.transaction.xa.XAResource의 start()의 구현이다.
실제로는 내부 XAResource 객체의 start()을 호출한다.
start in interface XAResourcexid - transaction branch의 Xidflags - TMNOFLAGS, TMRESUME, TMJOIN
XAException - 트랜젝션 관련 에러 발생시
public void end(Xid xid,
int flags)
throws XAException
javax.transaction.xa.XAResource의 end()의 구현이다.
실제로는 내부 XAResource 객체의 end()을 호출함으로써
XAResource 객체를 통하여 연결되어 있는 transaction brach와의 관계를 끊는다.
end in interface XAResourcexid - 트랜젝션 아이디flags - TMSUCCESS, TMFAIL, or TMSUSPEND
IllegalStateException - end()를 실행할 수 없는 상태인 경우
XAException - 트랜젝션 관련 오류가 발생한 경우
public void forget(Xid xid)
throws XAException
javax.transaction.xa.XAResource의 forget()의 구현이다.
실제로는 내부 XAResource 객체의 forget()을 호출한다.
forget() 후에는 XASession을 close() 한다.
forget in interface XAResourcexid - 트랜젝션 아이디
IllegalStateException - forget()를 실행할 수 없는 상태인 경우
XAException - 트랜젝션 관련 오류가 발생한 경우
public int prepare(Xid xid)
throws XAException
javax.transaction.xa.XAResource의 prepare()의 구현이다.
실제로는 내부 XAResource 객체의 prepare()을 호출한다.
prepare() 호출 결과 XA_OK가 리턴되면 STATE_PREPARED 상태가 되고,
XA_RDONLY가 리턴되면 STATE_RDONLY 상태가 된다.
prepare in interface XAResourcexid - 트랜젝션 아이디
IllegalStateException - prepare()를 실행할 수 없는 상태인 경우
XAException - prepare 중 트랜젝션 관련 오류가 발생한 경우
public Xid[] recover(int flag)
throws XAException
javax.transaction.xa.XAResource의 recover()의 구현이다.
실제로는 내부 XAResource 객체의 recover()을 호출한다.
recover in interface XAResourceXAException
public boolean setTransactionTimeout(int seconds)
throws XAException
javax.transaction.xa.XAResource의 setTransactionTimeout()의 구현이다.
실제로는 내부 XAResource 객체의 setTransactionTimeout()을 호출한다.
setTransactionTimeout in interface XAResourceXAException
public int getTransactionTimeout()
throws XAException
javax.transaction.xa.XAResource의 getTransactionTimeout()의 구현이다.
실제로는 내부 XAResource 객체의 getTransactionTimeout()을 호출한다.
getTransactionTimeout in interface XAResourceXAException
public boolean isSameRM(XAResource xares)
throws XAException
javax.transaction.xa.XAResource의 isSameRM()의 구현이다.
실제로는 내부 XAResource 객체의 isSameRM()을 호출한다.
isSameRM in interface XAResourceXAException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||