2009-06-29 2 views
2

새로운 이메일을 얻기 위해 java mail api 1.4.1을 사용하고 있습니다. 두 개의 클래스가 전자 메일을 얻은 다음 구문 분석하는 데 사용됩니다. "GetMail"클래스는 메일 서버 (Gmail, yahoo 등)와 통신하고 메시지 객체를 가져옵니다. 그런 다음 메시지 객체는 또 다른 클래스 인 "MailFormatter"클래스에 전달되며,이 클래스는 메시지 객체를 구문 분석하고 전자 메일 헤더 (From, To, Subject 등)를 가져온 다음 Multipart 내용을 파싱하여 기본 본문과 첨부 파일을 가져옵니다. "메일 가져 오기"및 "메일 서식 지정"프로세스는 매우 리소스 집약적입니다. 이러한 클래스는 별도의 웹 응용 프로그램으로 구현됩니다.이 응용 프로그램은 수많은 전자 메일 ID에 대한 새 전자 메일을 모니터링합니다. 이러한 경우 ("GetMail"및 "MailFormatter ")가 별도의 웹 응용 프로그램으로 구현되면"GetMail "응용 프로그램에서"MailFormatter "응용 프로그램으로 메시지 객체를 전달할 수 있습니까? GetMail이 해당 위치에 메시지 개체를 유지할 수 있도록 특정 위치 (GetMail 및 MailFormatter 응용 프로그램에 공통적 인 위치)에 획득 된 메시지 개체를 유지할 수있는 방법이 있습니까? "MailFormatter"앱은 그 위치에서 "Message"객체를 읽고 파싱 프로세스를 수행 할 수 있습니다. 메시지 개체를 직렬화 할 수 없습니다. 그들은 직렬화 수없는 경우 어떻게 자바 메일 메시지 개체의 상태를 유지할 수 있습니까? 이 문제를 해결할 수 있도록 도와주세요.응용 프로그램 사이에서 자바 메일 메시지 객체 전달하기

답변

1

음 MimeMessage는 writeTo (OutputStream)를 사용하여 직렬화하고 MimeMessage (Session, InputStream) 생성자를 사용하여 직렬화 할 수 있습니다.

그래서 한 웹 응용 프로그램에서 다른 웹 응용 프로그램으로 메시지를 보낼 수 있습니다.

+0

답해 주셔서 감사합니다. 그래서 FileOutputStream을 사용하여 객체를 파일로 유지 한 다음 MimeMessage 생성자를 통해 읽을 수 있습니다. FileOutputStream이 메시지를 지속시키는 데 가장 좋은가요? 보존 된 메세지가 MimeMessage가 아닌 경우는 어떨까요. 입력 스트림을 통해 비 MIME 메시지를 읽으려면 어떻게해야합니까? 또한 MimeMessage 생성자는 메시지 입력 스트림을 읽는 세션 객체를 요구합니다. 다른 웹 응용 프로그램에서이 세션 객체를 만들려면 어떻게해야합니까? – jezhilvalan

+0

@jezhilvalan MimeMessage로 전송할 수없는 메시지를받는 실제 시나리오에 대해 잘 모르는 사람이 있습니까? – Persimmonium

+0

@Persimmonium : 자바 메일 JAR은'MimeMessage'의 의미만을 가지고 있습니다 만, 미래의 확장을 위해 아마도'Message' 인터페이스가 존재할 것입니다. – kevinarpe

0

나는 당신의 질문에 대답하지 않는다는 것을 깨닫는다. (!)하지만 당신이 올바른 문제를 해결하고 있는지 궁금해. 구문 분석이 시간 소모적이어서 다른 프로세스로 분할해야합니다. 하나의 스레드를 통해 메시지를 모으려고 시도하고 다른 스레드를 통해 비동기 적으로 파싱 했습니까? 나는 이것이 IPC의 어떤 형태를 수행하는 것보다 더 간단하다고 생각한다.

당신이이되지 Serializable 개체를에는 직렬화 XML로/대부분의 일을에는 직렬화되는, XStream에서 살펴보고 싶어 합니다.

관련 문제