15장. Apache ActiveMQ와 통합
15.1. 개요
Apache ActiveMQ를 JMS 공급자로 사용하는 경우 대상의 JNDI 이름을 대기열 또는 주제에 대한 JNDI 바인딩을 동적으로 생성하는 특수 형식으로 지정할 수 있습니다. 즉, 대기열 또는 주제의 JNDI 바인딩을 미리 JMS 공급자를 구성할 필요가 없습니다.
15.2. 초기 컨텍스트 팩토리
Apache ActiveMQ와 JNDI를 통합하는 핵심은 ActiveMQInitialContextFactory
클래스입니다. 이 클래스는 JNDI InitialContext
인스턴스를 생성하는 데 사용되며, 이를 사용하여 JMS 브로커의 JMS 대상에 액세스할 수 있습니다.
예 15.1. “Apache ActiveMQ에 연결하기 위한 Cryostat/JMS WSDL” Apache ActiveMQ와 통합된 JNDI InitialContext
를 생성하기 위해 Cryostat/JMS WSDL 확장을 표시합니다.
예 15.1. Apache ActiveMQ에 연결하기 위한 Cryostat/JMS WSDL
<soapjms:jndiInitialContextFactory> org.apache.activemq.jndi.ActiveMQInitialContextFactory </soapjms:jndiInitialContextFactory> <soapjms:jndiURL>tcp://localhost:61616</soapjms:jndiURL>
예 15.1. “Apache ActiveMQ에 연결하기 위한 Cryostat/JMS WSDL” 에서 Apache ActiveMQ 클라이언트는 tcp://localhost:61616
에 있는 브로커 포트에 연결합니다.
15.3. 연결 팩토리 검색
JNDI InitialContext
인스턴스를 생성할 뿐만 아니라 javax.jms.ConnectionFactory
인스턴스에 바인딩된 JNDI 이름을 지정해야 합니다. Apache ActiveMQ의 경우 JNDI 이름 ConnectionFactory
를 ActiveMQConnectionFactory
인스턴스에 매핑하는 InitialContext
인스턴스에 사전 정의된 바인딩이 있습니다. 예 15.2. “Apache ActiveMQ 연결 팩토리를 지정하기 위한 Cryostat/JMS WSDL” Apache ActiveMQ 연결 팩토리를 지정하기 위한 Cryostat/JMS 확장 요소를 shaows합니다.
예 15.2. Apache ActiveMQ 연결 팩토리를 지정하기 위한 Cryostat/JMS WSDL
<soapjms:jndiConnectionFactoryName> ConnectionFactory </soapjms:jndiConnectionFactoryName>
15.4. 동적 대상의 구문
큐 또는 항목에 동적으로 액세스하려면 다음 형식 중 하나에서 대상의 JNDI 이름을 JNDI 복합 이름으로 지정합니다.
dynamicQueues/QueueName dynamicTopics/TopicName
QueueName 및 TopicName 은 Apache ActiveMQ 브로커가 사용하는 이름입니다. 이는 추상 JNDI 이름이 아닙니다.
예 15.3. “동적으로 생성된 큐를 사용한 WSDL 포트 사양” 동적으로 생성된 큐를 사용하는 WSDL 포트를 표시합니다.
예 15.3. 동적으로 생성된 큐를 사용한 WSDL 포트 사양
<service name="JMSService"> <port binding="tns:GreeterBinding" name="JMSPort"> <jms:address jndiConnectionFactoryName="ConnectionFactory" jndiDestinationName="dynamicQueues/greeter.request.queue" > <jms:JMSNamingProperty name="java.naming.factory.initial" value="org.activemq.jndi.ActiveMQInitialContextFactory" /> <jms:JMSNamingProperty name="java.naming.provider.url" value="tcp://localhost:61616" /> </jms:address> </port> </service>
애플리케이션이 JMS 연결을 열려고 하면 Apache ActiveMQ에서 JNDI 이름 Cryostater .request.queue가 있는 큐
가 있는지 확인합니다. 존재하지 않는 경우 새 큐를 생성하여 JNDI 이름 happy er.request.queue에 바인딩합니다.