인다우트 트랜잭션 해석

이 태스크를 사용하여 인다우트 트랜잭션 및 연관된 메시지를 해석할 수 있습니다.

이 태스크 정보

트랜잭션은 메시징 엔진을 파괴시키는 노드 제거와 같은 예외적 상황으로 인해 무한히 인다우트 상태에 빠질 수 있습니다. 트랜잭션이 인다우트가 될 때 영향을 받는 메시징 엔진의 정상 처리가 계속할 수 있도록 해당 트랜잭션을 커미트 또는 롤백해야 합니다.

관리 콘솔을 사용하여 문제점을 유발하는 메시지를 표시할 수 있습니다(메시지 위치의 메시지 나열 참조). 인다우트 트랜잭션에 관련된 메시지가 있는 경우, 트랜잭션의 ID가 메시지와 연관된 패널에 표시됩니다. 그러면 다음 두 가지 방법으로 트랜잭션을 해석할 수 있습니다.
  1. 서버 트랜잭션 관리 패널 사용
  2. 메시징 엔진 MBean에 있는 메소드 사용

먼저 애플리케이션 서버 트랜잭션 관리 MBean 인터페이스를 사용하여 인다우트(indoubt) 트랜잭션을 해석해야 합니다. 이 인터페이스는 wsadmin 스크립트를 사용하여 활성 및 준비된 트랜잭션 관리에 설명되어 있습니다. 메시징 조치를 포함하여 기본 메시징 제공자의 트랜잭션을 조정해 왔을 수 있는 모든 애플리케이션 서버에 대해 스크립트를 사용하십시오. 트랜잭션 ID가 트랜잭션 관리자 스크립트에 의해 알려진 경우, 해당 스크립트를 사용하여 트랜잭션을 해석하십시오. 이는 글로벌 트랜잭션 내의 모든 자원(메시징 포함)을 일관성 있게 해석합니다.

트랜잭션 ID가 모든 애플리케이션 서버에서 실행되는 트랜잭션 관리자 스크립트에 알려져 있지 않거나 트랜잭션 관리자를 호스트하는 애플리케이션 서버를 복구할 수 없는 경우, SIBMessagingEngine MBean의 메소드를 사용하여 글로벌 트랜잭션과 별도로 트랜잭션의 메시징 파트를 해석할 수 있습니다. 트랜잭션 커미트 또는 롤백은 수동으로 선택해야 합니다.

메시징 엔진 MBean에 있는 다음 메소드를 사용하여 트랜잭션(xid)의 목록을 가져오고 트랜잭션을 커미트 및 롤백할 수 있습니다.
  • getPreparedTransactions()
  • commitPreparedTransaction(String xid)
  • rollbackPreparedTransaction(String xid)
메소드를 호출하기 위해 wsadmin 명령을 사용할 수 있습니다. 예를 들어, 다음 양식의 명령을 사용하여 메시징 엔진 MBean에서 인다우트 트랜잭션 ID의 목록을 얻을 수 있습니다.
wsadmin>AdminControl.invoke(AdminControl.queryNames("type=SIBMessagingEngine,*").
splitlines()[0] , "getPreparedTransactions")
[IBM i]참고: [IBM i]wsadmin 스크립트 클라이언트는 Qshell에서 실행됩니다. . [IBM i]자세한 정보는 wsadmin 스크립트를 사용하여 WebSphere 스크립트를 실행하도록 Qshell 구성의 내용을 참조하십시오..
다른 방법으로, 다음과 같은 스크립트를 사용하여 MBean의 메소드를 호출할 수 있습니다.
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를 나열합니다. 그런 다음, 색인을 선택하고 해당 색인에 대응하는 트랜잭션을 커미트 또는 롤백할 수 있습니다.

프로시저

  1. 관리 콘솔을 사용하여 인다우트 트랜잭션이 있는 메시지의 트랜잭션 ID를 찾으십시오.
  2. 옵션: 트랜잭션 ID가 트랜잭션 관리 패널에 표시되는 경우 필요에 따라 트랜잭션을 커미트 또는 롤백하십시오.
  3. 옵션: 트랜잭션 ID가 트랜잭션 관리 패널에 표시되지 않는 경우, 메시징 엔진 MBean에 있는 메소드를 사용하십시오. 예를 들어, 스크립트를 사용하여 인다우트 트랜잭션에 대한 트랜잭션 ID 목록을 표시하십시오. 각 트랜잭션에 대해 다음을 수행하십시오.
    1. 트랜잭션의 트랜잭션 ID 색인을 입력하십시오.
    2. 옵션: 트랜잭션을 커미트하려면 c를 입력하십시오.
    3. 옵션: 트랜잭션를 롤백하려면 r을 입력하십시오.
  4. 트랜잭션이 더 이상 인다우트가 아님을 확인하려면, 서버를 다시 시작한 후 트랜잭션 관리 패널 또는 메시징 엔진 MBean의 메소드를 사용하여 확인하십시오.

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjm0165_
파일 이름:tjm0165_.html