인다우트 트랜잭션 해석
이 태스크를 사용하여 인다우트 트랜잭션 및 연관된 메시지를 해석할 수 있습니다.
이 태스크 정보
트랜잭션은 메시징 엔진을 파괴시키는 노드 제거와 같은 예외적 상황으로 인해 무한히 인다우트 상태에 빠질 수 있습니다. 트랜잭션이 인다우트가 될 때 영향을 받는 메시징 엔진의 정상 처리가 계속할 수 있도록 해당 트랜잭션을 커미트 또는 롤백해야 합니다.
- 서버 트랜잭션 관리 패널 사용
- 메시징 엔진 MBean에 있는 메소드 사용
먼저 애플리케이션 서버 트랜잭션 관리 MBean 인터페이스를 사용하여 인다우트(indoubt) 트랜잭션을 해석해야 합니다. 이 인터페이스는 wsadmin 스크립트를 사용하여 활성 및 준비된 트랜잭션 관리에 설명되어 있습니다. 메시징 조치를 포함하여 기본 메시징 제공자의 트랜잭션을 조정해 왔을 수 있는 모든 애플리케이션 서버에 대해 스크립트를 사용하십시오. 트랜잭션 ID가 트랜잭션 관리자 스크립트에 의해 알려진 경우, 해당 스크립트를 사용하여 트랜잭션을 해석하십시오. 이는 글로벌 트랜잭션 내의 모든 자원(메시징 포함)을 일관성 있게 해석합니다.
트랜잭션 ID가 모든 애플리케이션 서버에서 실행되는 트랜잭션 관리자 스크립트에 알려져 있지 않거나 트랜잭션 관리자를 호스트하는 애플리케이션 서버를 복구할 수 없는 경우, SIBMessagingEngine MBean의 메소드를 사용하여 글로벌 트랜잭션과 별도로 트랜잭션의 메시징 파트를 해석할 수 있습니다. 트랜잭션 커미트 또는 롤백은 수동으로 선택해야 합니다.
- getPreparedTransactions()
- commitPreparedTransaction(String xid)
- rollbackPreparedTransaction(String xid)
wsadmin>AdminControl.invoke(AdminControl.queryNames("type=SIBMessagingEngine,*").
splitlines()[0] , "getPreparedTransactions")
![[IBM i]](../images/iseries.gif)
![[IBM i]](../images/iseries.gif)
![[IBM i]](../images/iseries.gif)
import sys
mebeans=AdminControl.queryNames("type=SIBMessagingEngine,*").splitlines()
for mebean in mebeans:
input=0
meName=""
print "--- Start ME: ---------------"
print mebean
print "-----------------------------"
while input>=0:
xidList=AdminControl.invoke(mebean , "getPreparedTransactions").splitlines()
print "--- Prepared Transactions ---"
index=0
for xid in xidList:
print " Index=%s XID=%s" % (index , xid)
index+=1
print "------- End of list ---------"
print "Select index of XID to commit/rollback"
print "(or enter -1 to skip to next ME):"
input=int(sys.stdin.readline().strip())
if input<0:
print "No index selected."
else:
xid=xidList[input]
print "Enter c to commit or r to rollback XID %s" % xid
input=sys.stdin.readline().strip()
if input=="c":
print "Committing xid=%s" % xid
AdminControl.invoke(mebean , "commitPreparedTransaction" , xid)
if input=="r":
print "Rolling back xid=%s" % xid
AdminControl.invoke(mebean , "rollbackPreparedTransaction" , xid)
print
print "--- End ME --------------------"
print
print "No more ME definitions found, exiting"
이 스크립트는 색인과 함께 트랜잭션의 트랜잭션 ID를 나열합니다. 그런 다음, 색인을 선택하고 해당 색인에 대응하는 트랜잭션을 커미트 또는 롤백할 수 있습니다.