Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


Java WebMail System Implementation(2)
 
아시는 분은 알겠지만 2001년에 모모 사이트에 돈(무려 900원)받고 올라간 내용인데 요청에 의하여 자바패턴사이트에 다시 공개합니다. ( 2003/04/25 ) 715
Written by ienvyou - 최지웅
1 of 4
 


Major JavaMail API Components



*Message Class

Message 클래스는 mail message의 내용과 attribute의 집합으로 정의된 abstract class이다.

Message Class

이 클래스의 attribute로는 content type을 포함하는 content를 정의하고 메일주소에 관련된 

정보를 명시하고 있다.

content는 실제데이터를 감싸고 있는 DataHandler object에 의해 표현되어지며, 

이 Message class는 Super class인 Part interface를 구현하고 있다. 

이 Part 인터페이스는 Message object를 전달하기 위한 형태와 속성들이 정의되어져 있는 클래스이며, 

Message클래스에는 From, To, Subject, Reply-To와 다른 속성들을 추가할수 있다
 
 Message의 내용은 byte의 집합 또는 byte집합을 참조하는 Message object안에서 추상화되는데 
 
 사실 JavaMail은 message 내용에 대한 어떤 형태나 정보도 가지고 있지 않기 때문에 Message object를 
 
 사용하여  중간계층(intermediate layer- 즉 JavaBeans Activation Framework(JAF))과 통신을 하게 된다.

또한 JavaMail API에서는 multipart Message 객체들을 지원하기 위해여 자신만의 attribute와 content를 

정의할수 있는 BodyPart클래스를 지원하고 있다.


메시지의 저장과 검색

일반적으로 메시지는 Folder객체 안에 저장되게 된다. Folder객체는 메시지 뿐만 아니라 트리구조와 
  
같은 subfolder들을 포함하고 있다.

Folder 클래스는 메시지를 fetch(가져오기), append(추가하기), copy(복사하기), delete(삭제하기)를 
  
할수 있는 메소드를 제공하며 컴포넌트로 event를 보낼수도 있으며,  
  
event listener를 등록시킬수도 있는 특성을 가지고 있다.

Store클래스는 folder안에 저장되어있는 메시지들을 검색하고 folder를 access할수 있는

access protocol을 명시하고 있다. 

이 클래스는 또한 데이터베이스 (메일저장소)와 연결하고, 메시지를 fetch하며, 
  
연결(connection)을 끊을 수 있는 메소드들을 제공하고 있다.

Mail Service Provider들은 이 Store클래스를 subclassing함으로서 메시지를 읽어낼수 있는 

프로토콜(IMAP4, POP3등등)들을 구현할수 있게 만들고 있다.


*메시지의 조합과 전달

클라이언트는 Message를 적절하게 subclassing한후 객체화에 의하여 새로운 메시지를 생성하도록 한다. 

그 클래스로 하여금 Message객체로 수신인주소, 제목, 내용 등의 속성값들을 세팅시키도록 한다음 

Transport.send()메소드를 호출함으로서 조합된 메시지의 내용을 수신인에게 전달하도록 한다.

Transport 클래스는 목적지 주소로 메시지를 전달하기 위한 

transport agent(전달을 위임한)로서 만들어진다.

이 클래스는 여러명의 수신인에게 메시지를 보내기 위한 메소드를 제공하고 있는데,

Transport클래스의 send메소드가 그 역할을 한다.


* Session 클래스

Session클래스는 network과 메일을 사용할수 있는 클라이언트사이의 인터페이스를 전역적이며 사용자 

각각에 맞게 특성(property)을 정의한 클래스이다.

이 Session객체는 JavaMail 컴포넌트에서는 없어서는 안되며, 어떤 특수한 속성값들을 세팅시키거나

얻어오기 위해여 이 Session객체를 사용한다.

Session클래스는 또한 세션객체(사용자)를 인증한다거나 desktop application을 공유할수 있게 할수도 있다. 

그리고 이 클래스는 final concrete클래스로서 subclass시킬수 없다는 특성을 가지고 있다.


*JavaMail Event Model

JavaMail event모델은 JavaBeans 스펙에 정의된 JDK1.1 event모델 스펙을 따르고 있다.

(왜냐면 앞서 언급했던봐야 같이 JDK1.1.X버전이후 사용가능하기 때문이다)

JavaBean 스펙에서는 naming event, event methods, event listener등록에 대한 

desing pattern을 정의하고 있다.

모든 JavaMail event는 MailEvent로부터 상속을 받고 있다. 클라이언트는 자신을 위하여 event를 위한

listener를 등록시킴으로서 event를 기다릴수 있다.

Event는 세션이 진행되면서 변하는 상태를 listener측으로 알리도록 하고 있다.

JavaMail에서는 Store, Folder 그리고 Transport클래스들이 그러한 event 소스들이다.

 
1 2 3 4
References
 
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD