/**
 * ÀÌ ¼Ò½º´Â Spring ÇÁ·¹ÀÓ¿öÅ© ¿öÅ©ºÏ¿¡¼­ »ç¿ëÇÑ ¿¹Á¦ ¼Ò½ºÀÔ´Ï´Ù. 
 * ÀÌ ¼Ò½º´Â ¸ðµç °³¹ßÀÚµéÀÌ ÀÚÀ¯·Ó°Ô ¼öÁ¤ ¹× ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. 
 * ´Ü, ÀÌ ¼Ò½º¸¦ ±â¹ÝÀ¸·Î »õ·Î¿î ¾ÖÇÃ¸®ÄÉÀÌ¼ÇÀ» °³¹ßÇÒ °æ¿ì ÃâÃ³¸¦ ¸í½ÃÇØ ÁÖ½Ã¸é µË´Ï´Ù. 
 */
package net.javajigi.common.service;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.ObjectMessage;

import net.javajigi.common.mail.ExceptionMailSender;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.ejb.support.AbstractJmsMessageDrivenBean;

public class EmailSendMDB extends AbstractJmsMessageDrivenBean {
	protected final Log logger = LogFactory.getLog(getClass());
	
	private static final String BEAN_NAME = "mailSender";

	private ExceptionMailSender mailSender = null;

	protected void onEjbCreate() {
		mailSender = (ExceptionMailSender) getBeanFactory().getBean(BEAN_NAME);
	}

	public void onMessage(Message message) {
		ObjectMessage objectMessage = (ObjectMessage) message;
		try {
			RuntimeException re = (RuntimeException) objectMessage.getObject();
			
			mailSender.sendMessage(re);
			
			if( logger.isDebugEnabled() ) {
				logger.debug("Email Send Success!!");
			}
		} catch (JMSException e) {
			if( logger.isErrorEnabled() ) {
				logger.error(e.getMessage(), e);
			}
		}

	}
}
