7장. JMS 연결 팩토리 사용

이 장에서는 OSGi에서 JMS 연결 팩토리를 사용하는 방법을 설명합니다. 기본적으로 다음을 사용하여 수행합니다.

org.osgi.framework.BundleContext.registerService(javax.jms.ConnectionFactory.class,
                                                 connectionFactoryObject,
                                                 properties);
org.osgi.framework.BundleContext.registerService(javax.jms.XAConnectionFactory.class,
                                                 xaConnectionFactoryObject,
                                                 properties);

이러한 서비스를 등록하는 방법은 다음 두 가지가 있습니다.

  • jms:create Karaf console 명령을 사용하여 연결 팩토리 게시. 구성 방법입니다.
  • 블루프린트, OSGi 선언 서비스(SCR) 또는 BundleContext.registerService() API 호출과 같은 방법을 사용하여 연결 팩토리 게시. 이 메서드에는 코드 및/또는 메타데이터가 포함된 전용 OSGi 번들이 필요합니다. 배포 방법입니다.

자세한 내용은 다음 항목에 있습니다.

7.1. OSGi JMS 서비스 정보

JDBC 데이터 소스를 처리하는 OSGi 방법은 다음 두 인터페이스와 관련이 있습니다.

  • standard org.osgi.service.jdbc.DataSourceFactory
  • proprietary org.ops4j.pax.jdbc.pool.common.PooledDataSourceFactory

JMS의 경우 다음 유추를 고려하십시오.

  • 표준 OSGi JDBC org. osgi.service.jdbc.DataSourcefactory와 동일한 목적을 가진 전용 org.ops4j.pax.jms.service.ConnectionFactoryfactory
  • 독점 org.ops4j.pax.jms.service.PooledConnectionFactory factory 전용 pax-jdbc org.ops4j.pax.jdbc.pool.common.PooledDataSourceFactory와 동일한 용도

전용 브로커별 org.ops4j.pax.jms.service.ConnectionFactoryFactory 구현의 경우 다음과 같은 번들이 있습니다.

  • mvn:org.ops4j.pax.jms/pax-jms-artemis/1.0.0
  • mvn:org.ops4j.pax.jms/pax-jms-ibmmq/1.0.0
  • mvn:org.ops4j.pax.jms/pax-jms-activemq/1.0.0

이러한 번들은 javax. jms.ConnectionFactory Factory 및 javax.jms.XAConnectionFactory 와 같은 JMS 팩토리 를 반환할 수 있는 브로커별 org.ops4j.pax.jms.service.ConnectionFactoryfactory 서비스를 등록합니다. 예를 들면 다음과 같습니다.

karaf@root()> feature:install pax-jms-artemis

karaf@root()> bundle:services -p org.ops4j.pax.jms.pax-jms-config

OPS4J Pax JMS Config (248) provides:
------------------------------------
objectClass = [org.osgi.service.cm.ManagedServiceFactory]
service.bundleid = 248
service.id = 328
service.pid = org.ops4j.connectionfactory
service.scope = singleton

karaf@root()> bundle:services -p org.ops4j.pax.jms.pax-jms-artemis

OPS4J Pax JMS Artemis Support (247) provides:
---------------------------------------------
objectClass = [org.ops4j.pax.jms.service.ConnectionFactoryFactory]
service.bundleid = 247
service.id = 327
service.scope = singleton
type = artemis