4장. 설정
이 장에서는 AMQ JMS 구현을 JMS 애플리케이션에 바인딩하고 구성 옵션을 설정하는 프로세스를 설명합니다.
JMS는 JNDI(Java Naming Directory Interface)를 사용하여 API 구현 및 기타 리소스를 등록하고 조회합니다. 이를 통해 특정 구현에 연결하지 않고 JMS API에 코드를 작성할 수 있습니다.
구성 옵션은 연결 URI에서 쿼리 매개 변수로 노출됩니다.
4.1. JNDI 초기 컨텍스트 구성
JMS 애플리케이션은
에서 얻은 JNDI InitialContext 오브젝트를 사용하여 연결 팩토리와 같은 JMS 개체를 조회합니다. AMQ JMS는 InitialContext
Factoryorg.apache.qpid.jms.jndi.Jms
구현을 제공합니다.
InitialContextFactory
클래스에서 InitialContextFactory
InitialContextFactory
구현은 InitialContext
오브젝트가 인스턴스화될 때 검색됩니다.
javax.naming.Context context = new javax.naming.InitialContext();
구현을 찾으려면 사용자 환경에서 JNDI를 구성해야 합니다. 이 작업을 수행하는 방법은 jndi.properties
파일 사용, 시스템 속성 사용 또는 초기 컨텍스트 API 사용의 세 가지입니다.
jndi.properties 파일 사용
jndi.properties
라는 파일을 생성하여 Java classpath에 배치합니다. java.naming.factory.initial
키를 사용하여 속성을 추가합니다.
예: jndi.properties 파일을 사용하여 JNDI 초기 컨텍스트 팩토리 설정
java.naming.factory.initial = org.apache.qpid.jms.jndi.JmsInitialContextFactory
Maven 기반 프로젝트에서 jndi.properties
파일은 < project-dir> /src/main/resources
디렉터리에 배치됩니다.
시스템 속성 사용
java.naming.factory.initial
시스템 속성을 설정합니다.
예: 시스템 속성을 사용하여 JNDI 초기 컨텍스트 팩토리 설정
$ java -Djava.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory ...
초기 컨텍스트 API 사용
JNDI 초기 컨텍스트 API 를 사용하여 속성 프로그래밍을 설정합니다.
예: JNDI 속성 프로그래밍 방식으로 설정
Hashtable<Object, Object> env = new Hashtable<>(); env.put("java.naming.factory.initial", "org.apache.qpid.jms.jndi.JmsInitialContextFactory"); InitialContext context = new InitialContext(env);
동일한 API를 사용하여 연결 팩토리, 큐 및 주제의 JNDI 속성을 설정할 수 있습니다.