제9장 Message Driven Bean(MDB)

내용 목차

9.1. 개요
9.2. MDB 설정
9.2.1. 기본 환경설정
9.2.2. JMS 설정
9.2.3. JNDI SPI 환경설정

본 장에서는 EJB 엔진에서 Message Driven Bean(MDB)를 사용할 때 유의해야 할 사항들을 설명한다.

EJB 엔진은 Message Driven Bean(이하 MDB) Instance들을 동시에 여러 개 실행시킬 수 있으며, 또한 message stream을 처리할 수도 있다. EJB 엔진은 MDB 클래스에 도착하는 메시지들의 순서를 보장하지 않으므로 받은 순서대로 메시지를 전달하지 못하고 임의로 메시지를 전달한다.

MDB도 처리 순서를 보장하지 않는다. 예를 들어 예약을 하는 메시지가 도착하기 전에 예약을 취소하는 메시지가 먼저 올 수 있기 때문에 설계할 때 처리 순서에 대해 고려해야 한다.

이런 동시 처리는 Bean Pool이 MDB에서 Instance를 가져와서 Request에 할당함으로써 처리된다. 이는 Stateless Session Bean의 Thread Ticket Pool(TTP)의 동작법과 거의 동일하다. 따라서 MDB에서는 <thread-max> 값이 아닌 <pool-max> 값을 사용해야 한다. 이에 대해서는 “제7장 Session Bean”을 참조한다.

EJB 엔진이 MDB를 실행하기 위해서는 약간의 설정이 필요하다. MDB는 고유의 설정 외에 JEUS의 다른 EJB와 공통되는 설정도 가지고 있다.

본 절에서는 다음 항목을 간략하게 설명한다.

참고

MDB 설정은 MDB를 잘 알고 있는 이들에게는 별도로 설명할 필요가 없다.

MDB가 처리하는 메시지에 따라 성격이 달라진다. JMS 메시지를 처리하는 경우에는 JMS Connection Factory의 export name이 필요하고 Connector 메시지를 처리하는 경우에는 리소스 어댑터가 필요하다.

다음은 MDB 클래스의 Annotation으로 설정한 것과 그에 대응되는 XML 문서의 일부이다.



다음은 설정 태그에 대한 설명이다.