| |
| Sun Java System Message Queue 3 2005Q1 기술 개요 | |
6장
Message Queue 및 J2EEJava 2 Platform, Enterprise Edition(J2EE 플랫폼)은 다중 계층 및 서버의 시스템 기능에 의존하는 클라이언트 엔터프라이즈 응용 프로그램을 호스트하는 표준 서버 플랫폼의 사양입니다. J2EE 플랫폼의 요구 사항 중 하나는 분산 구성 요소가 안정적인 비동기식 메시지 교환을 통해 다른 구성 요소와 서로 상호 작용할 수 있어야 한다는 것입니다. 이러한 상호 작용은 JMS 공급자를 사용하면 가능합니다. 실제로 Message Queue는 J2EE 플랫폼의 참조 JMS 구현입니다.
이 장에서는 J2EE 플랫폼 환경에서 JMS 지원을 구현한 결과를 살펴보겠습니다. 이 절은 다음 내용으로 구성되어 있습니다.
이 장에서는 J2EE 구성 요소 프로그래밍 및 배포를 모두 다루기 때문에 응용 프로그램 개발자와 관리자 모두가 관심을 가질 내용입니다.
JMS/J2EE 프로그래밍: Message-Driven BeanJMS 프로그래밍 모델에서 소개한 일반적인 JMS 클라이언트 프로그래밍 모델 외에도 J2EE 플랫폼 응용 프로그램 컨텍스트에서 사용하는, 보다 특수화된 JMS 버전이 있습니다. 이 특수화된 JMS 클라이언트를 Message-Driven Bean이라고 부르며, EJB 2.0 사양(http://java.sun.com/products/ejb/docs.html)에 지정된 EJB(Enterprise JavaBeans) 구성 요소 계열 중 하나입니다.
Message-Driven Bean이 필요한 이유는 다른 EJB 구성 요소(Session Bean과 Entity Bean)들이 동기식 호출만 가능하기 때문입니다. 이 EJB 구성 요소들은 표준 EJB 인터페이스를 통해서만 액세스할 수 있으므로 비동기식으로 메시지를 수신할 메커니즘이 없습니다.
그러나 비동기식 메시징은 많은 엔터프라이즈 응용 프로그램에서 필요합니다. 그러한 응용 프로그램 중 대부분에서는 서버측 구성 요소가 서버 자원을 독점하지 않으면서 상호 통신하고 응답할 수 있어야 합니다. 즉 메시지 생성자와 밀접하게 연결되지 않으면서 메시지 수신 및 사용이 가능한 EJB 구성 요소가 필요합니다. 이 기능은 서버측 구성 요소가 응용 프로그램 이벤트에 응답해야 하는 모든 응용 프로그램에서 필요합니다. 또한 엔터프라이즈 응용 프로그램에서도 로드 증가에 따라 이 기능이 확장되어야 합니다.
MDB(Message-Driven Bean)는 특정 EJB 컨테이너(지원하는 구성 요소에 대해 분산 서비스를 제공하는 소프트웨어 환경)가 지원하는 특정 EJB 구성 요소입니다.
Message-Driven Bean MDB는 JMS MessageListener 인터페이스를 구현하는 JMS 메시지 사용자입니다. onMessage 메소드(MDB 개발자가 작성)는 MDB 컨테이너가 메시지를 수신할 때 호출됩니다. 이 onMessage() 메소드는 표준 MessageListener 객체의 onMessage() 메소드처럼 메시지를 사용합니다. 다른 EJB 구성 요소에서처럼 MDB에 대해 메소드를 원격 호출하지 않으므로 MDB와 관련된 홈 또는 원격 인터페이스는 없습니다. MDB는 단일 대상으로부터의 메시지를 사용할 수 있습니다. 그림 6-1에서 확인할 수 있듯이 독립형 JMS 응용 프로그램, JMS 구성 요소, EJB 구성 요소 또는 웹 구성 요소에서 메시지를 생성할 수 있습니다.
그림 6-1 MDB와의 메시지
MDB 컨테이너 MDB 인스턴스를 생성하고 비동기식으로 메시지를 사용하도록 설정하는 역할을 하는 특수화된 EJB 컨테이너가 MDB를 지원합니다. 여기에는 메시지 서비스와의 연결 설정(인증 포함), 지정된 대상과의 세션 풀 생성, 세션 풀 및 관련 MDB 인스턴스 사이에서의 수신 메시지 배포 관리가 포함됩니다. 이 컨테이너는 MDB 인스턴스의 라이프사이클을 제어하므로 MDB 인스턴스 풀이 받는 메시지 로드를 수용할 수 있도록 관리합니다.
MDB와 관련 있는 배포 설명자는 컨테이너가 메시지 사용 설정 시 사용하는 관리 대상 객체, 즉 연결 팩토리와 대상의 JNDI 조회 이름을 지정합니다. 또한 배포 설명자는 배포 도구가 컨테이너 구성 시 필요한 다른 정보를 포함할 수 있습니다. 이 컨테이너 각각은 단일 MDB로만 이루어진 인스턴스를 지원합니다.
J2EE Application Server 지원J2EE 구조((http://java.sun.com/j2ee/download.html#platformspec)의 J2EE 플랫폼 사양 참조)에서 EJB 컨테이너는 J2EE Application Server가 호스팅합니다. Application Server는 트랜잭션 관리자, 지속성 관리자, 이름 서비스, JMS 공급자(메시징 및 MDB의 경우) 등과 같은 다양한 컨테이너가 필요로 하는 자원을 제공합니다.
Sun Java System Application Server에서 JMS 메시징 자원은 Sun Java™ System Message Queue가 제공합니다.
- Sun Java System Application Server 7.0의 경우 Message Queue 메시징 시스템이 Application Server에 원시 JMS 공급자로 통합되어 있습니다.
- Sun J2EE 1.4 Application Server의 경우 Message Queue가 Application Server에 내장 JMS 자원 어댑터로 플러그 인되어 있습니다.
- Application Server의 향후 릴리스에서는 Message Queue가 표준 자원 어댑터 배포 및 구성 방법을 사용하는 Application Server에 플러그 인됩니다.
JMS 자원 어댑터
자원 어댑터는 J2EE 1.4를 준수하는 Application Server에 추가 기능을 플러그 인하는 표준화된 방법입니다. 표준은 J2EE Connector Architecture(J2EECA) 1.5 사양에 의해 정의됩니다. 이 구조를 통해 J2EE 1.4를 준수하는 Application Server는 표준 방식으로 외부 시스템과 상호 작용할 수 있습니다. 외부 시스템은 다양한 EIS(Enterprise Information System)를 비롯하여 JMS 공급자와 같은 다양한 메시징 시스템을 포함할 수 있습니다. Message Queue는 Application Server가 Message Queue를 JMS 공급자로 사용할 수 있도록 하는 JMS 자원 어댑터를 포함합니다.
J2EECA 1.5를 통해 가능하게 된 표준화된 상호 작용으로는 다양한 종류의 Message-Driven Bean 컨테이너에 대한 지원을 비롯하여 연결 풀링, 스레드 풀링, 트랜잭션 및 보안 컨텍스트 전파를 들 수 있습니다. 또한 이 사양은 연결 팩토리 및 기타 관리 객체를 만드는 표준화된 방식도 포함하고 있습니다.
JMS 자원 어댑터를 Application Server에 플러그 인하면 Application Server에서 배포되어 실행 중인 J2EE 구성 요소가 JMS 메시지를 교환할 수 있습니다. 이러한 구성 요소에 필요한 JMS 연결 팩토리 및 대상 관리 객체는 J2EE Application Server 관리 도구를 사용하여 만들고 구성할 수 있습니다.
그러나 메시지 서버 및 물리적 대상 관리와 같은 다른 관리 작업은 J2EECA 사양에 포함되어 있지 않으므로 공급자 고유의 도구를 통해서만 수행할 수 있습니다.
Message Queue 자원 어댑터는 Sun J2EE 1.4 Application Server에 통합되어 있습니다. 그러나, 아직 다른 J2EE 1.4 Application Server에서는 인증되지 않았습니다.
Message Queue 자원 어댑터는 단일 파일(imqjmsra.rar)이며, 이 파일이 있는 디렉토리는 운영 체제에 따라 다릅니다(Message Queue 관리 설명서 참조). imqjmsra.rar 파일은 자원 어댑터 배포 설명자(ra.xml)를 비롯하여 어댑터를 사용하기 위해 Application Server에서 필요한 JAR 파일도 포함합니다.
모든 J2EE -1.4 호환 Application Server에서 해당 Application Server와 함께 제공되는 자원 어댑터 배포 및 구성 지침에 따라 Message Queue 자원 어댑터를 사용할 수 있습니다. 상용 J2EE 1.4 Application Server가 출시되고 Message Queue 자원 어댑터가 이러한 Application Server에서 인증되면 Message Queue 문서에서 관련 배포 및 구성 절차에 대한 구체적인 정보를 제공할 것입니다.