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.ConnectionFactory
factory -
독점
org.ops4j.pax.jms.service.PooledConnectionFactory
factory 전용 pax-jdbcorg.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.
.ConnectionFactoryfactory 서비스를 등록합니다. 예를 들면 다음과 같습니다.
jms.ConnectionFactory
Factory 및 javax.jms.XAConnectionFactory
와 같은 JMS 팩토리 를 반환할 수 있는 브로커별 org.ops4j.pax.jms.service
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