3.5. OSGi는 트랜잭션 클라이언트와 트랜잭션 관리자 간의 인터페이스
Cryostat 트랜잭션 클라이언트 API 및 Spring Boot 트랜잭션 클라이언트 API에 대한 설명 후 Fuse와 같은 OSGi 서버 내의 관계를 확인하는 것이 도움이 됩니다. OSGi의 기능 중 하나는 글로벌 서비스 레지스트리이며 다음과 같이 사용할 수 있습니다.
- 필터 또는 인터페이스를 통해 서비스를 조회합니다.
- 지정된 인터페이스 및 속성으로 서비스를 등록합니다.
Cryostat 애플리케이션 서버에 배포된 애플리케이션이 JNDI(서비스 Cryostat 메서드)를 사용하여 javax. Cryostat.UserTransaction
에 대한 참조를 얻거나 OSGi에서 CDI(종속적 또는종속 항목 주입 방법)를 사용하여 삽입하는 것과 동일한 방식으로 다음과 같은 방법으로 동일한 참조(직접 또는 간접적으로)를 얻을 수 있습니다.
-
org.osgi.framework.BundleContext.getServiceReference()
메서드 호출(서비스). - 블루프린트 컨테이너에 삽입됩니다.
- SCR(Service Component Runtime) 주석(종속성 주입)을 사용합니다.
다음 그림은 OSGi 런타임에 배포된 Fuse 애플리케이션을 보여줍니다. 애플리케이션 코드 및/또는 Camel 구성 요소는 해당 API를 사용하여 트랜잭션 관리자, 데이터 소스 및 연결 팩토리에 대한 참조를 가져옵니다.

애플리케이션(번들)은 OSGi 레지스트리에 등록된 서비스와 상호 작용합니다. 액세스는 인터페이스를 통해 수행되며 이는 애플리케이션과 관련이 있어야 합니다.
Fuse에서 (직접 또는 작은 래퍼를 통해) 트랜잭션 클라이언트 인터페이스를 구현하는 기본 오브젝트는 org.jboss.narayana.osgi.jta.internal.OsgiTransactionManager
입니다. 다음 인터페이스를 사용하여 트랜잭션 관리자에 액세스할 수 있습니다.
-
javax.transaction.TransactionManager
-
javax.transaction.UserTransaction
-
org.springframework.transaction.PlatformTransactionManager
-
org.ops4j.pax.transx.tm.TransactionManager
이러한 인터페이스를 직접 사용하거나 Camel과 같은 프레임워크 또는 라이브러리를 선택하여 암시적으로 사용할 수 있습니다.
Fuse에서 org.jboss.narayana.osgi.jta.internal.OsgiTransactionManager
를 구성하는 방법에 대한 자세한 내용은 4장. Narayana 트랜잭션 관리자 구성 을 참조하십시오. 이 가이드의 뒷부분에서는 해당 장의 정보를 살펴보고 JDBC 데이터 소스 및 JMS 연결 팩토리와 같은 다른 서비스를 구성하고 사용하는 방법을 설명합니다.