애플리케이션 서버에서의 WS-AT(Web Services Atomic Transaction) 지원

애플리케이션 서버에서의 WS-AT(Web Services Atomic Transaction) 지원은 웹 서비스 환경에 대한 트랜잭션 서비스 품질(QoS)을 제공합니다. 분산 웹 서비스 애플리케이션 및 이 애플리케이션을 사용하는 자원은 분산 글로벌 트랜잭션에 참여할 수 있습니다.

웹 서비스 프로토콜은 웹 서비스 애플리케이션을 정의하는 표준 방식을 제공하여 애플리케이션이 사용된 제품, 플랫폼 또는 프로그래밍 언어를 독립적으로 조작할 수 있도록 합니다. WS-BA(WS-AT Services Business Activity)는 애플리케이션 서버에서 다음 스펙의 구현을 지원합니다. 이러한 스펙은 웹 서비스 애플리케이션을 사용하여 이기종 웹 서비스 환경에 분배된 글로벌 트랜잭션에 참여하는 여러 웹 서비스를 정의합니다.

WS-AT 지원은 새 프로그래밍 인터페이스를 트랜잭션 지원에 도입하지 않는 상호 운용성 프로토콜을 지원합니다. 표준 엔터프라이즈 애플리케이션이 JTA(Java™ Transaction API) UserTransaction 인터페이스를 사용하여 글로벌 트랜잭션 경계를 제공합니다. 글로벌 트랜잭션에서 실행 중인 애플리케이션 컴포넌트가 웹 서비스 요청을 작성한 경우, WS-AT CoordinationContext가 내재적으로 대상 웹 서비스에 전파되나, 해당 애플리케이션 배치 디스크립터가 트랜잭션 배치 속성 구성에 관한 주제에서 설명된대로 설정된 경우에만 해당됩니다.

애플리케이션 서버가 WS-AT CoordinationContext를 포함하는 웹 서비스 요청에 대한 대상 엔드포인트를 호스팅하는 시스템인 경우, 애플리케이션 서버는 자동으로 하위 JTA 트랜잭션을 대상 웹 서비스 애플리케이션이 실행되는 트랜잭션 컨텍스트가 되는 대상 런타임 환경에 설정합니다.

다음 그림은 WS-AT CoordinationContext를 포함하는 웹 서비스 요청에 대한 2개의 애플리케이션 서버 간에 공유된 트랜잭션 컨텍스트를 표시합니다.

그림 1. 2개의 애플리케이션 서버 간에 공유된 트랜잭션 컨텍스트
원자적
트랜잭션은 웹 서비스 클라이언트 및 애플리케이션 서버 1 및 웹 서비스
애플리케이션의 XA 자원과 애플리케이션 서버 2의 XA 자원을 포함합니다.
[z/OS]상태 전이: WS-AT 지원을 사용하기 위해 새 웹 컨테이너 전송 체인을 작성하지 않아도 됩니다. 애플리케이션 서버는 이미 WS-AT를 사용하도록 구성되어 있으며 추가 구성은 필요하지 않습니다.

WS-AtomicTransaction 프로토콜에 대한 정책을 구성할 수 있습니다. 클라이언트가 WS-BA 컨텍스트를 전파할지, 서버가 WS-AT 컨텍스트를 수신할지 여부를 구성합니다. WS-AtomicTransaction 컨텍스트가 아웃바운드 서비스 요청을 작성할 때 클라이언트가 이를 항상 전송하게 하려면, 정책 세트를 클라이언트와 연관해야 하며, 여기서 정책 세트는 WS-Transaction 정책 유형을 포함해야 하고 이 정책 유형에 Mandatory의 WS-AtomicTransaction 설정값이 있어야 합니다. 또는, WS-AtomicTransaction ATAssertion 정책 유형 속성을 포함하는 원격 엔드포인트를 클라이언트가 항상 호출하는 경우, 클라이언트를 구성하여 제공자의 WS-Policy 구성을 적용할 수 있습니다. 그러면 클라이언트가 제공자의 필수 정책을 자동으로 채택합니다.

웹 서비스 제공자가 수신하는 요청에 WS-AtomicTransaction 컨텍스트를 포함하게 하려면, 정책 세트를 제공자와 연관해야 하며, 여기서 정책 세트는 WS-Transaction 정책 유형을 포함해야 하고 이 정책 유형에 Mandatory의 WS-AtomicTransaction 설정값이 있어야 합니다.

클라이언트나 제공자가 WS-AtomicTransaction 컨텍스트를 사용하지 못하게 하려면, 정책 세트를 클라이언트나 제공자와 연관해야 하며, 여기서 정책 세트는 WS-Transaction 정책 유형을 포함해야 하고 이 정책 유형에 Mandatory의 WS-AtomicTransaction 설정값이 있어야 합니다. 웹 서비스 요청이 클라이언트와 제공자 간의 긴밀한 결합을 작성하지 않게 하려는 경우(예: 엔터프라이즈 간에 요청이 있는 경우), 환경에 이 구성을 사용할 수도 있습니다.

클라이언트 또는 제공자에 연관된 정책 세트가 없거나 WS-Transaction 정책 유형이 정책 세트에 포함되지 않은 경우, 기본 WS-Transaction 동작이 사용됩니다.

WS-AT 지원 제한사항

애플리케이션 서버의 이 버전은 WS-AT 컨텍스트가 복구 불가능한 클라이언트 프로세스에서 시작될 수 없습니다.

[z/OS]서버 클러스터로 전송된 동일한 WS-AT 트랜잭션에 대한 작업 요청은 매번 동일한 클러스터 멤버로 할당되도록 보장되지 않습니다. 이러한 경우, 트랜잭션의 작업은 다중 클러스터 멤버에서 처리될 수도 있습니다. 다중 클러스터 멤버의 트랜잭션 작업이 동일한 트랜잭션 자원에서 처리되는 경우, 교착 상태가 발생할 수 있습니다.

애플리케이션 디자인

WS-AT는 2단계 커미트 트랜잭션 프로토콜이며 단기간 트랜잭션에만 적합합니다.

원자적 트랜잭션은 자원의 트랜잭션 잠금을 유지하여 트랜잭션 업데이트를 격리시키는 자원 관리자를 조정합니다. 그러므로, 일반적으로 WS-AT 트랜잭션은 엔터프라이즈 도메인에서 분배되지 않는 것이 좋습니다. 엔터프라이즈 간 트랜잭션은 일반적으로 2단계 커미트보다는 느슨한 시맨틱을 필요로 하며, 이러한 시나리오의 경우, 보상 비즈니스 트랜잭션(예: BPEL(Business Process Execution Language) 프로세스)을 사용하거나 WS-BA(Web Services Business Activity)를 사용하기에 더욱 적합할 수 있습니다.

하나의 엔터프라이즈에 배치된 웹 서비스에서 트랜잭션 컨텍스트를 분배하기에 WS-AT가 가장 적합합니다. 요청-응답 메시지 교환 패턴만 트랜잭션 컨텍스트를 실행할 수 있습니다. 트랜잭션의 제안자(애플리케이션 또는 컨테이너)는 해당 트랜잭션에서 실행되는 모든 비즈니스 태스크가 트랜잭션의 완료 요청 전에 완료되도록 확신해야 하기 때문입니다. 일방향 요청이 호출한 웹 서비스는 요청 클라이언트의 트랜잭션에서 실행되지 않습니다.

WS-AT 트랜잭션의 서비스 결함의 효과는 EJB 스펙에서 설명된 바와 같이 트랜잭션의 EJB(JavaBeans) 애플리케이션 예외의 효과와 유사합니다. 요청자 WS-AT 트랜잭션에서 실행되는 서비스가 결함을 리턴하는 경우, 애플리케이션 서버는 트랜잭션을 롤백 전용이라고 자동으로 표시하지 않습니다. 요청자의 예외 핸들러는 트랜잭션이 진행할 수 있는지 여부를 선택하며 트랜잭션을 롤백 전용으로 표시할지 여부를 선택합니다. 요청자가 애플리케이션 서버에서 실행되는 경우, 표준 JTA 또는 EJB API가 트랜잭션을 롤백 전용으로 표시하는 데에 사용될 수 있습니다. 결함을 생성할 수도 있는 서비스 컴포넌트는 결함을 리턴하기 전에 그 자체로 트랜잭션을 롤백 전용으로 표시합니다. 서비스 컴포넌트의 구현이 시스템 예외를 겪는 경우, 일반적으로 해당 컨테이너가 예외로 처리됩니다. 서비스 구현으로 인하여 생성된 시스템 예외를 처리하는 경우, 애플리케이션 서버 컨테이너는 수신된 트랜잭션 컨텍스트를 자동으로 롤백 전용으로 표시합니다.

애플리케이션 개발

WS-AT의 장점을 취하기 위한 웹 서비스 애플리케이션에 대해 특정 개발 태스크가 필요하지 않습니다.

JAX-RPC 애플리케이션의 경우, 트랜잭션 배치 속성 구성에 관한 주제에서 설명된 대로 적절히 설정해야 하는 애플리케이션 배치 디스크립터가 있습니다. JAX-RPC 런타임은 WS-AT 1.0을 지원합니다.

JAX-WS 애플리케이션의 경우, 정책 세트를 작성하고, WS-Transaction 정책 유형을 정책 세트에 추가하고, 선택적으로 정책 유형을 구성하고, 정책 세트를 WS-BA 통신에 포함될 애플리케이션이나 클라이언트에 첨부하여 WS-AT 지원을 사용합니다. JAX-WS 런타임은 WS-AT 1.0, WS-AT 1.1, WS-AT 1.2, WS-BA용 WS-Policy 어설션을 지원합니다.

JAX-WS 런타임이 인바운드 요청을 수신한 경우, WS-Transaction 1.0, WS-Transaction 1.1, WS-Transaction 1.2 스펙 레벨이 지원됩니다. 아웃바운드 JAX-WS 요청이 전송되면 하나의 스펙 레벨만 사용될 수 있습니다. WS-Transaction WS-Policy 어설션이 사용 가능한 경우, 웹 서비스의 WSDL(Web Services Description Language) 또는 클라이언트의 WS-Transaction 정책 유형 중 하나에서, 클라이언트 및 대상 웹 서비스에 적용되는 스펙 레벨이 사용됩니다. 예를 들어, 대상 웹 서비스의 호스팅 환경이 WS-Transaction 1.0만 지원하는 경우, WS-AT 1.0이 사용됩니다. 두 스펙 레벨이 모두 적용되는 경우, 또는 사용 가능한 WS-Transaction WS-Policy 어설션이 없는 경우, 트랜잭션 서비스 설정에 설정된 기본 WS-Transaction 스펙 레벨이 사용됩니다.

효과적인 정책 세트가 없거나 WS-Transaction 정책 유형이 효과적인 정책 세트에 포함되지 않은 경우, 기본 동작은 다음과 같습니다.
  • 클라이언트의 경우, 클라이언트가 제공자의 정책을 고려하지 않는 경우, 클라이언트는 WS-BA(Web Services Business Activity) 컨텍스트를 전송하지 않습니다. 이 동작은 Never의 WS-Transaction 정책 구성 설정과 상응합니다.
  • 클라이언트의 경우, 클라이언트가 제공자의 정책을 고려하는 경우, 제공자의 정책이 WS-AT 또는 WS-BA 어설션을 포함하면 클라이언트는 WS-AT 또는 WS-BA 컨텍스트를 전송합니다. 이 동작은 Support의 WS-Transaction 정책 설정과 상응합니다.
  • 서버의 경우, 서버가 WS-AT 또는 WS-BA 컨텍스트를 수신하지 않습니다. 이 동작은 Never의 WS-Transaction 정책 구성 설정과 상응합니다.

애플리케이션 개발자는 WS-AT 참가자를 명시적으로 등록하지 않아도 됩니다. 애플리케이션 서버 런타임은 WS-AT 참가자를 JTA 트랜잭션의 XAResources를 연합된 WS-AT 트랜잭션에 등록한 것과 동일한 방법으로 등록할 책임이 있습니다. 트랜잭션이 완료되면 모든 XAResources 및 WS-AT 참가자가 애플리케이션 서버 서비스에 의해 원자적으로 조정됩니다.

웹 서비스 애플리케이션 요청이 작성될 때 JTA 트랜잭션이 스레드에서 활성 상태인 경우, 트랜잭션이 웹 서비스 요청에서 전파되며 대상 환경에서 설정됩니다. 이 프로세스는 EJB 스펙에서 설명된 바와 같이 IIOP에서의 트랜잭션 컨텍스트 분배와 유사합니다. 대상 환경에서 수행된 트랜잭션 작업은 동일한 글로벌 트랜잭션의 일부가 됩니다.

WS-Transaction 정책 어설션

제공자에 대하여 WS-Transaction 프로토콜의 정책을 구성한 경우, 이 구성은 정책 유형이 연관된 경우 웹 서비스에 생성된 WSDL에 포함된 어설션에 영향을 줍니다. WS-AtomicTransaction을 사용하는 클라이언트 또는 제공자의 보상 요구사항을 설명하기 위해 사용되는 WS-Policy 어설션은 ATAssertion입니다. WS-Transaction 정책 유형에 Mandatory 또는 Support의 WS-AtomicTransaction 설정이 있는 경우, 정책 어설션은 WSDL에 포함됩니다.

애플리케이션 서버도 구문 분석하는 WSDL의 이러한 어설션을 구문 분석, 이해, 적용할 수 있습니다.

다음 예는 WS-AtomicTransaction ATAssertion이 엔드포인트가 요청 메시지에 포함된 WS-AT 컨텍스트와 함께 호출되어야 함을 표시하고, 컨텍스트가 WS-Transaction 1.0 또는 1.1 형식이 될 수 있음을 표시하는 경우 WSDL을 표시합니다. 2개의 네임스페이스와 2개의 어설션이 있습니다. 하나는 각 WS-Transaction 스펙 레벨용이며, WS-Policy ExactlyOne 연산자를 사용하여 클라이언트가 사용할 스펙 레벨을 선택해야 함을 표시합니다.

<wsdl:definitions targetNamespace="bank.example.com"
     xmlns:tns="bank.example.com"
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
     xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
     xmlns:wsat11="http://docs.oasis-open.org/ws-tx/wsat/2006/06"
     xmlns:wsat10="http://schemas.xmlsoap.org/ws/2004/10/wsat"
     xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/
     oasis-200401-wss-wssecurity-utility-1.0.xsd">
     <wsp:Policy wsu:Id="ATPolicy">
         <wsp:ExactlyOne>
             <wsat11:ATAssertion />
             <wsat10:ATAssertion />
             <!-- omitted assertions -->
         </wsp:ExactlyOne />
     </wsp:Policy>
     <!-- omitted elements -->
     <wsdl:binding name="BankBinding" type="tns:BankPortType">
          <!-- omitted elements -->
          <wsdl:operation name="TransferFunds">
               <wsp:PolicyReference URI="#ATPolicy" wsdl:required="true"/>
               <!-- omitted elements -->
          </wsdl:operation>
     </wsdl:binding>
</wsdl:definitions>

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



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