140 likes | 301 Views
Chapter 08 Enterprise Service. 작성자 : 박동진 소속팀 / 상위부서 : 메일서비스 개발팀 작성년월일 : 2009.09.06. 목차. 메일 발송 스케줄링 JMS 메시징 연동 JMX 연동. Spring 을 이용한 메일 발송. 1. Spring 을 이용한 메일 발송. ● Spring 은 메일 발송 기능을 위한 MailSender interface 를 제공하고 있다.
E N D
Chapter 08 Enterprise Service 작성자: 박동진 소속팀 / 상위부서: 메일서비스 개발팀 작성년월일: 2009.09.06
목차 • 메일 발송 • 스케줄링 • JMS 메시징 연동 • JMX 연동
1. Spring을 이용한 메일 발송 • ● Spring은 메일 발송 기능을 위한 MailSender interface를 제공하고 있다. • MailSender인터페이스는 SimpleMailMessage를 전달받아 메일을 발송하는 기능을 정의하고 있다. • SimpleMailMessage는 메일 제목과 단순 텍스트 내용으로 구성된 메일을 발송할 때 사용된다. • JavaMailSender인터페이스는 Java Mail API의 MimeMessage를 이용해서 메일을 발송함. • Spring 2.5에서는 JavaMailSenderImpl만을 제공하고 있다. • ● JavaMailSenderImpl • SMTP 프로토콜을 사용한다. • SMTP 서버를 이용해서 메일을 발송하므로 SMTP 서버 주소와 포트 번호가 필요하다. • ex> • <bean id=“mailSender” class=“org.springframework.mail.javamail.JavaMailSenderImpl” • p:host=“mail.host.com” p:port=“25” • p:defaultEncoding=“euc=kr” /> • <bean id=“soneNotifier” class=“…” p:mailSender-ref=“mailSender” />
1. Spring을 이용한 메일 발송 • ●SimpleMailMessage를 이용한 메일 메시지 생성 • 단순히 텍스트로만 구성된 메일 메시지를 생성할 때에는 SimpleMailMessage를 이용한다. • 메일 내용이 HTML로 구성되어 있거나 파일읓머부해야 하는 경우에는 사용할 수 없다. • SimpleMailMessage usage> • public class RegistrationNotifierWithSimple extends AbstractRegistrationNotifier { • private MailSendermailSender; • public void setMailSender(MailSendermailSender) { • this.mailSender = mailSender; • } • protected void sendEmailTo(Member member) { • SimpleMailMessage message = new SimpleMAilMessage(); • message.setSubject(“회원 가입 안내 [Simple]”); • message.setText(“회원 가입을 환영합니다.”); • message.setFrom(“lunajina@naver.com”); • message.setTo(member.getEmail()); • try { • mailSender.send(message); • } catch(MailException ex) { • log.warn(“fail to send mail” + message, ex); • }
1. Spring을 이용한 메일 발송 • ● Java Mail API의 MimeMessage를 이용한 메일 메시지 생성 • JavaMailSender : MimeMessage객체를 생성해주는 createMimeMessage() 메소드 제공 • 위 메소드가리턴한MimeMessage객체를 이용해서 메시지를 구성해 메일을 발송한다. • 메일 내용이 HTML로 구성되어 있거나 파일읓머부해야 하는 경우에는 사용할 수 없다. • JavaMailSender usage> • public class RegistrationNotifierWithMime … { • private JavaMailSendermailSender; • public void setMailSender(JavaMailSendermailSender) { • this.mailSender = mailSender; • } • @Override • protected void sendEmailTo(Member member) { • MimeMessage message = mailSender.createMimeMessage(); • try { • message.setSubject(“회원 가입 안내 [Mime]”, “euc-kr”); • String htmlContent = “<strong> 안녕하세요 </strong> 반갑습니다.”; • message.setText(htmlContent, “euc-kr”, “html”); • message.setFrom(new InternetAddress(“lunajina@naver.com”)); • message.addRecipient(RecipientType.To, new InternetAddress(member.getEmail())); • }
1. Spring을 이용한 메일 발송 • ● Quartz를 이용한 스케줄링 처리 • 지정한 스케줄에 맞춰 주기적으로 작업을 수행해야 할 때 많이 사용하는 오픈소스 프로젝트이다. • Spring은 Quartz를 지원하고 있으며 지원 클래스를 사용하면 간단히 설정할 수 있다. • Quartz 지원 클래스를 이용해 스케줄링을 처리하는 4단계 • 1. 작업을 수행할 클래스 생성 • 2. 주기적으로 실행될 JobDetailBean스프링 설정 • 3. TriggerBean을 이용한 스케줄링 설정 • 4. ScheduleFactoryBean클래스로 작업 시작
1. Spring을 이용한 메일 발송 • ●Cron Expression • Usage> • <bean id=“notifyJobTrigger” class=“org.springframework.scheduling.quartz.CronTriggerBean” • p:jobDetail-ref=“notifyJobDetail” p:crenExpression=“0 30 7 * * ? *” /> • cronExpression프로퍼티는 공백으로 구분된 7개의 값을 입력받으며, 각 값은 앞에서부터 차례대로 • 초, 분, 시, 일, 월, 주의 일, 년도를 의미한다. 이 중 년도 값은 생략 가능하다. 각 값은 ‘*’를 사용하여 • 모든 값을 의미할 수도 있고 ‘30’과 같이 특정 값을 지정할 수 있고 ’10,20,30,40,50’과 같이 특정 값 • 목록을 설정할 수도 있다. 또는 7-14와 같이 값의 범위를 지정할 수도 있다. 위의 설정은 매년 매월 • 매일 오전 7시 30분에 notifyJobDetail을 실행한다고 설정하였다.
2. JMS를 이용한 messaging • 1. What is JMS? • 게시판 시스템에 새로운 게시글이 등록되었을 때 색인을 위해 검섹엔진 시스템에 게시글 정보를 • 전송해야 하는 경우를 생각해 보자. 이 경우, 게시판 시스템과 검색엔진 시스템은 약속된 규칙에 • 따라 게시글 정보를 담고 있는 메시지를 주고 받아야 하는데, 이렇게 서로 다른 시스템 간에 메시지 • 를 주고 받아야 할 때 사용되는 기술 중에 하나가 JMS(Java Message Service)이다. • 2. JMS 연동을 위한 ConnectionFactory및 메시지 목적지 설정 • JMS 연동을 하려면 javax.jms.ConnectionFactory를 설정해 주어야 한다. • ConnectionFactory를 설정했다면, 그 다음으로 할 작업은 message destination을 설정해 준다. • JmsTemplate클래스를 사용하려면 먼저 설정 파일에 JmsTemplate를 빈으로 등록해 준다. • Jmstemplate클래스의 send() 메소드를 사용하면 JMS Message를 전송할 수 있다.
2. JMS를 이용한 messaging • 1. What is JMX? • JMX(Java Management Extensions) API는 자바의 표준 API로서 자바 객체를 관리하고 모니터링 • 하는데 사용된다. Spring은 빈 객체가 JMX API를 구현했느냐 안 했느냐의 여부에 상관없이 빈 객체 • 를 JMX Mbean으로 등록해주는 기능을 제공하고 있다. 따라서 Spring을 사용하면 간단한 설정만 • 으로 기존의 POJO 객체를 JMX를 통해 관리하고 모니터링 할 수 있다.
4. Tech Sensing(DOM) • 1. What is DOM(Document Object Model)? • 관련링크 : http://blog.naver.com/rjm2004?Redirect=Log&logNo=10022098562 • http://blog.naver.com/multist?Redirect=Log&logNo=7761716