JTA 지원

JTA(Java™ Transaction API) 지원은 JTA 1.1 스펙에 정의된 UserTransaction 인터페이스 외에도 API(Application Programming Interface)를 제공합니다.

이러한 인터페이스에는 JTA 1.1 스펙에 정의된 TransactionSynchronizationRegistry 인터페이스와 다음 API 확장이 포함됩니다.
  • SynchronizationCallback 인터페이스
  • ExtendedJTATransaction 인터페이스
  • UOWSynchronizationRegistry 인터페이스
  • UOWManager 인터페이스
API는 다음 기능을 제공합니다.
  • 스레드와 연관된 글로벌 및 로컬 트랜잭션 ID에 대한 액세스

    글로벌 ID는 CosTransactions::PropagationContext: 오브젝트의 트랜잭션 ID에 기초를 두고 있으며 로컬 ID는 로컬 JVM(Java Virtual Machine)에서 고유하게 트랜잭션을 식별합니다.

  • 엔터프라이즈 애플리케이션 컴포넌트가 트랜잭션 완료 시 관련성을 등록하는 데 사용할 수 있는 트랜잭션 동기화 콜백

    고급 애플리케이션은 트랜잭션 완료 전에 업데이트를 비우고 트랜잭션 완료 후에 상태를 정리하도록 이 콜백을 사용할 수 있습니다. Java EE(및 관련) 스펙은 일반적으로 이 기능을 엔터프라이즈 애플리케이션 컨테이너의 도메인으로 지정합니다.

    지속 관리자, 자원 어댑터, 엔터프라이즈 Bean 및 웹 애플리케이션 컴포넌트와 같은 컴포넌트는 JTA 트랜잭션에 등록할 수 있습니다.

다음 정보는 JTA 지원이 제공하는 인터페이스의 개요입니다. 자세한 정보는 생성된 API 문서를 참조하십시오.

SynchronizationCallback 인터페이스

이 인터페이스를 구현하는 오브젝트는 ExtendedJTATransaction 인터페이스를 통해 한 번 등록되며, 트랜잭션 완료에 대한 알림을 수신합니다.

이 인터페이스 구현 오브젝트를 엔터프라이즈 애플리케이션 서버의 Java 플랫폼에서 실행할 수 있지만 이 오브젝트가 호출될 때 활성화되는 특정 엔터프라이즈 애플리케이션 컴포넌트는 없습니다. 따라서 오브젝트는 모든 엔터프라이즈 애플리케이션 자원에 대해 제한된 직접 액세스 권한을 가집니다. 특히, 오브젝트에는 java: 네임스페이스 또는 임의의 컨테이너 조정 자원에 대한 액세스 권한이 없습니다. 이러한 오브젝트는 자신이 위임한 엔터프라이즈 애플리케이션 컴포넌트(예: Stateless 세션 Bean)에 대한 참조를 캐싱할 수 있습니다. 그런 다음, 오브젝트에는 엔터프라이즈 애플리케이션 자원에 대한 모든 일반 액세스 권한이 있어야 합니다. 예를 들어, JDBC(Java Database Connectivity) 연결을 확보하고 beforeCompletion 메소드 중 데이터베이스에 대한 업데이트를 비우는 데 이 오브젝트를 사용할 수 있습니다.

ExtendedJTATransaction 인터페이스

이 인터페이스는 Java EE JTA 지원에 대한 WebSphere® 프로그래밍 모델 확장자입니다. 이 인터페이스를 구현하는 오브젝트는 java:comp/websphere/ExtendedJTATransaction에서 이 인터페이스를 지원하는 WebSphere Application Server의 엔터프라이즈 애플리케이션 컨테이너로 바인드됩니다. EJB(Enterprise JavaBeans) 컨테이너에서 호출될 때 이 오브젝트에 대한 액세스는 컴포넌트 관리 트랜잭션으로 제한되지 않습니다.

애플리케이션은 java:comp/websphere/ExtendedJTATransaction의 JNDI(Java Naming and Directory Interface) 검색을 사용하여 ExtendedJTATransaction 오브젝트를 가져옵니다. 애플리케이션은 다음 예제와 같이 사용합니다.
ExtendedJTATransaction exJTA = (ExtendedJTATransaction)ctx.lookup("
		java:comp/websphere/ExtendedJTATransaction");
SynchronizationCallback sync = new SynchronizationCallback();
exJTA.registerSynchronizationCallback(sync);
ExtendedJTATransaction 오브젝트는 하나 이상의 애플리케이션 제공 SynchronizationCallback 오브젝트 등록을 지원합니다. 콜백 등록 방법에 따라, 다음 중 하나의 위치에서 각 등록 콜백이 호출됩니다.
  • 트랜잭션이 로컬로 시작되든 가져오기되든 간에 애플리케이션 서버에서 실행되는 모든 트랜잭션 끝
  • 콜백이 등록된 트랜잭션의 끝
제거된 기능 제거된 기능: 이 릴리스에서 registerSynchronizationCallbackForCurrentTran 메소드는 더 이상 사용되지 않습니다. 대신 TransactionSynchronizationRegistry 인터페이스의 registerInterposedSynchronization 메소드를 사용하십시오.depfeat

TransactionSynchronizationRegistry 인터페이스

이 인터페이스는 JTA 1.1 스펙에 정의됩니다. 지속 관리자, 자원 어댑터, 엔터프라이즈 Bean 및 웹 애플리케이션 컴포넌트와 같은 시스템 레벨 애플리케이션 컴포넌트는 이 인터페이스를 사용하여 JTA 트랜잭션에 등록할 수 있습니다. 그러 후 예를 들어, 컴포넌트는 트랜잭션이 완료되었을 대 캐시를 비울 수 있습니다.

TransactionSynchronizationRegistry 인터페이스를 확보하려면 java:comp/TransactionSynchronizationRegistry의 JNDI 검색을 사용하십시오.

제거된 기능 제거된 기능: 동기화 인스턴스를 등록하려면 이 릴리스에서 더 이상 사용되지 않는 ExtendedJTATransaction 인터페이스의 registerSynchronizationCallbackForCurrentTran 메소드가 아닌 registerInterposedSynchronization 메소드를 사용하십시오.depfeat

UOWSynchronizationRegistry 인터페이스

이 인터페이스는 TransactionSynchronizationRegistry 인터페이스와 동일한 기능을 제공하나 WebSphere Application Server가 지원하는 모든 작업 단위(UOW) 유형에 적용됩니다.
  • JTA 트랜잭션
  • 로컬 트랜잭션 포함(LTC)
  • ActivitySession 컨텍스트
지속 관리자, 자원 어댑터, 엔터프라이즈 Bean 및 웹 애플리케이션 컴포넌트와 같은 시스템 레벨 애플리케이션 서버 컴포넌트는 이 인터페이스를 사용하여 JTA 트랜잭션에 등록할 수 있습니다. 컴포넌트는 다음 기능을 수행합니다.
  • 특수 순서 지정 시맨틱으로 동기화 오브젝트를 등록합니다.
  • 자원 오브젝트와 UOW를 연관시킵니다.
  • 현재 UOW의 컨텍스트를 가져옵니다.
  • 현재 UOW 상태를 가져옵니다.
  • 롤백의 현재 UOW를 표시합니다.

UOWSynchronizationRegistry 인터페이스를 확보하려면 java:comp/websphere/UOWSynchronizationRegistry의 JNDI 검색을 사용하십시오. 이 인터페이스는 서버 환경에서만 사용할 수 있습니다.

다음 예제는 현재 UOW로 개입된 동기화를 등록합니다.
// Retrieve an instance of the UOWSynchronizationRegistry interface from JNDI.
final InitialContext initialContext = new InitialContext();
final UOWSynchronizationRegistry uowSyncRegistry =
				(UOWSynchronizationRegistry)initialContext.lookup(“java:comp/websphere/UOWSynchronizationRegistry”);

// Instantiate a class that implements the javax.transaction.Synchronization interface
final Synchronization sync = new SynchronizationImpl();

// Register the Synchronization object with the current UOW.
uowSynchronizationRegistry.registerInterposedSynchronization(sync);

UOWManager 인터페이스

UOWManager 인터페이스는 JTA TransactionManager 인터페이스와 동일하며 애플리케이션 서버가 트랜잭션 경계를 관리할 수 있는 메소드를 정의합니다. 애플리케이션은 UOWManager 인터페이스를 사용하여 제품의 UOW 컨텍스트를 조작할 수 있습니다. UOWManager 인터페이스는 WebSphere Application Server가 지원하는 모든 유형의 UOW(즉, JTA 트랜잭션, 로컬 트랜잭션 포함(LTC) 및 ActivitySession 컨텍스트)에 적용됩니다. 애플리케이션 코드는 적절하게 구성된 엔터프라이즈 Bean을 사용하지 않고 특정 유형의 UOW에서 실행될 수 있습니다. 일반적으로 UOW 범위에서 수행되는 로직은 익명의 내부 클래스에서 캡슐화됩니다. 지속 관리자, 자원 어댑터, 엔터프라이즈 Bean 및 웹 애플리케이션 컴포넌트와 같은 시스템 레벨 애플리케이션 서버 컴포넌트는 이 인터페이스를 사용할 수 있습니다.

WebSphere Application Server는 API 또는 SPI(System Programming Interface)에서 TransactionManager 인터페이스를 제공하지 않습니다. UOWManager 인터페이스는 동등한 기능을 제공하나 WebSphere Application Server는 UOW 컨텍스트의 제어 및 무결성을 유지보수합니다.

컨테이너 관리 환경에서 UOWManager 인터페이스를 확보하려면 java:comp/websphere/UOWManager의 JNDI 검색을 사용하십시오. 컨테이너 관리 환경 외부에서 UOWManager 인터페이스를 확보하려면 UOWManagerFactory 클래스를 사용하십시오. 이 인터페이스는 서버 환경에서만 사용할 수 있습니다.

UOWManager 인터페이스를 사용하여 엔터프라이즈 Bean이 아닌 웹 컴포넌트를 사용하지만 UOW에서 제어를 유지하는 웹 애플리케이션을 마이그레이션할 수 있습니다. 예를 들어, 웹 애플리케이션은 현재 UserTransaction 인터페이스를 사용하여 글로벌 트랜잭션을 시작하고, 지원되지 않는 것으로 구성된 세션 엔터프라이즈 Bean에서의 메소드 호출이 일부 비트랜잭션 작업을 수행하도록 한 후 글로벌 트랜잭션을 완료합니다. 세션 EJB 메소드에서 캡슐화된 로직을 UOWAction 구현의 실행 메소드로 이동할 수 있습니다. 그러면 세션 엔터프라이즈 Bean을 호출하는 웹 컴포넌트의 코드를 UOWManager 인터페이스의 runUnderUOW 메소드에 대한 호출로 바꿔 이 로직이 로컬 트랜잭션에서 실행되도록 요청합니다. 이러한 방법으로 UOW를 통해 원래 애플리케이션과 동일한 레벨의 제어를 유지보수합니다.

다음 예제는 새 글로벌 트랜잭션 범위에서 일부 트랜잭션 작업을 수행합니다. 트랜잭션 작업은 UOWAction 인터페이스의 run 메소드를 구현하는 익명의 내부 클래스에서 수행됩니다. 실행 메소드가 작성하는 선택된 예외는 트랜잭션 결과에 영향을 주지 않습니다.
// Retrieve an instance of the UOWManager interface from JNDI.
final InitialContext initialContext = new InitialContext();
final UOWManager uowManager = (UOWManager)initialContext.lookup("java:comp/websphere/UOWManager");

try 
{
		// Invoke the runUnderUOW method, indicating that the logic should be run in a global 
		// transaction, and that any existing global transaction should not be joined, that is, 
		// the work must be performed in the scope of a new global transaction.
		uowManager.runUnderUOW(UOWSynchronizationRegistry.UOW_TYPE_GLOBAL_TRANSACTION, false, new UOWAction()
	{
 				public void run() throws Exception
 		{
						// Perform transactional work here.
 		}
	});
}

catch (UOWActionException uowae)
{
		// Transactional work resulted in a checked exception being thrown.
}

catch (UOWException uowe)
{
		// The completion of the UOW failed unexpectedly. Use the getCause method of the 
		// UOWException to retrieve the cause of the failure.
}

주제 유형을 표시하는 아이콘 개념 주제



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