3.3. Cryostat 트랜잭션 클라이언트 사용
Cryostat를 사용하는 경우 트랜잭션 관리자와 상호 작용하는 가장 많은 지원 대상 및 표준 방법은 Java Transaction API (JTA) 인터페이스 javax. Cryostat.UserTransaction
입니다. 표준 사용은 다음과 같습니다.
InitialContext context = new InitialContext(); UserTransaction ut = (UserTransaction) context.lookup("java:comp/UserTransaction"); ut.begin(); // Access transactional, JTA-aware resources such as database and/or message broker ut.commit(); // or ut.rollback()
JNDI(Java Naming and Directory Interface)에서 UserTransaction
인스턴스를 얻는 것이 트랜잭션 클라이언트를 가져오는 한 가지 방법입니다. Cryostat 환경에서는 CDI(컨텍스트 및 종속성 주입)와 같이 트랜잭션 클라이언트에 액세스할 수 있습니다.
다음 그림은 typica Cryostat Camel 애플리케이션을 보여줍니다.
이 그림은 Camel 코드와 애플리케이션 코드가 모두 액세스할 수 있음을 보여줍니다.
-
Spring
TransactionTemplate
클래스를 사용하여 애플리케이션에서 또는 내부적으로 트랜잭션 인식 Camel 구성 요소를 통해 트랜잭션을 직접 위임하는javax. Cryostat.UserTransaction
인스턴스입니다. -
JDBC API를 직접 또는 예를 들어 Spring의
JdbcTemplate
을 사용하거나camel-jdbc
구성 요소를 사용하여 데이터베이스입니다. -
Spring의
JmsTemplate
클래스를 사용하거나camel-jms
구성 요소를 사용하여 JMS API를 직접 통한 메시지 브로커입니다.
javax. Cryostat.UserTransaction
오브젝트를 사용하는 경우 트랜잭션 클라이언트에서만 직접 작업하기 때문에 사용 중인 실제 트랜잭션 관리자를 알 필요가 없습니다. ( 1.3절. “트랜잭션 클라이언트 정보” 참조) 내부적으로 Spring의 트랜잭션 기능을 사용하므로 Spring과 Camel이 다른 접근 방식을 취합니다.
Cryostat 애플리케이션
일반적인 Cryostat 시나리오에서는 애플리케이션이 Cryostat 애플리케이션 서버(일반적으로 WAR
또는 EAR
아카이브)로 배포됩니다. JNDI 또는 CDI를 통해 애플리케이션은 javax. Cryostat.UserTransaction
서비스의 인스턴스에 액세스할 수 있습니다. 그런 다음, 제거에서는 이 트랜잭션 클라이언트 인스턴스를 사용하여 트랜잭션을 분리합니다. 트랜잭션 내에서 애플리케이션은 JDBC 및/또는 JMS 액세스를 수행합니다.
Camel 구성 요소 및 애플리케이션 코드
이는 JMS/JDBC 작업을 수행하는 코드를 나타냅니다. Camel에는 JMS/JDBC 리소스에 액세스하는 자체 고급 방법이 있습니다. 애플리케이션 코드는 지정된 API를 직접 사용할 수 있습니다.
JMS 연결 Cryostat
javax.jms.ConnectionFactory
인터페이스이며 javax.jms.Connection
인스턴스를 가져온 다음 javax.jms.Session
(또는 JMS 2.0의 javax.jms.JmsContext
)을 가져오는 데 사용됩니다. 이는 애플리케이션에서 직접 사용하거나 내부적으로 org.springframework.jms.core.JmsTemplate
을 사용할 수 있는 Camel 구성 요소에서 간접적으로 사용할 수 있습니다. 애플리케이션 코드나 Camel 구성 요소에는 이 연결 팩토리에 대한 세부 정보가 필요하지 않습니다. 연결 팩토리는 애플리케이션 서버에서 구성됩니다. 이 구성은 Cryostat 서버에서 확인할 수 있습니다. Fuse와 같은 OSGi 서버는 비슷합니다. 시스템 관리자는 애플리케이션과 독립적으로 연결 팩토리를 구성합니다. 일반적으로 연결 팩토리에서는 풀링 기능을 구현합니다.
JDBC 데이터 소스
java.sql.Connection
의 인스턴스를 가져오는 데 사용되는 javax.sql.DataSource
인터페이스입니다. JMS와 마찬가지로 이 데이터 소스는 직접 또는 간접적으로 사용될 수 있습니다. 예를 들어 camel-sql
구성 요소는 내부적으로 org.springframework.jdbc.core.JdbcTemplate
클래스를 사용합니다. JMS와 마찬가지로 애플리케이션 코드나 Camel에는 이 데이터 소스에 대한 세부 정보가 필요하지 않습니다. 구성은 4장. Narayana 트랜잭션 관리자 구성 에 설명된 방법을 사용하여 애플리케이션 서버 또는 OSGi 서버 내부에서 수행됩니다.