2009-06-29 3 views
2

Я использую java mail api 1.4.1 для получения новых писем. Для получения электронной почты используются два класса, а затем их разбор. Класс GetMail взаимодействует с почтовым сервером (Gmail, yahoo и т. Д.) И получает объект сообщения. Затем объект сообщения передается еще одному классу класса MailFormatter, который затем анализирует объект сообщения, получает заголовки электронной почты (From, To, Subject и т. Д.), А затем анализирует содержимое Multipart для получения основного тела и вложений. Поскольку процессы «Получение почты» и «Форматирование почты» очень ресурсоемкие, эти классы будут реализованы как отдельные веб-приложения. Это приложение будет отслеживать новые электронные письма для многочисленных идентификаторов электронной почты. Если они («GetMail» и «MailFormatter» ») реализованы как отдельные веб-приложения, как передать объект сообщения из приложения« GetMail »в приложение« MailFormatter »? Есть ли способ, с помощью которого я могу сохранить полученный объект сообщения в определенном месте (место, которое является общим для приложений «GetMail» и «MailFormatter»), так что «GetMail» может сохранять объект сообщения в этом месте и то приложение «MailFormatter» может читать объекты «Сообщение» из этого местоположения и выполнять процесс синтаксического анализа. Объекты сообщений не могут быть сериализованы. Если они не могут быть сериализованы, как я могу сохранить состояние объекта почтового сообщения java? пожалуйста, помогите мне решить эту проблему.Передача java почтового объекта сообщения между приложениями

ответ

1

Ну MimeMessage можно сериализовать с помощью writeTo (OutputStream) и десериализоваться с помощью конструктора MimeMessage (Session, InputStream).

Таким образом, сообщение может быть отправлено с одного webapp на другое.

+0

спасибо за ответ. Поэтому я могу использовать FileOutputStream и сохранять объект как файл, а затем читать его через конструктор MimeMessage. Является ли FileOutputStream лучшим для сохранения сообщения? Что делать, если сохраненное сообщение не является MimeMessage? Как я могу читать сообщения без сообщений через входной поток? Также конструктор MimeMessage требует объект сеанса для чтения потока ввода сообщения. Как создать этот объект сеанса в другом веб-приложении? – jezhilvalan

+0

@jezhilvalan Я не знаю ни одного сценария реального мира, где вы получаете сообщение, которое нельзя отправить в MimeMessage, кто-нибудь знает его? – Persimmonium

+0

@Persimmonium: Java Mail JAR имеет только «MimeMessage», но интерфейс «Message», вероятно, существует для будущих расширений. – kevinarpe

0

Я понимаю, что не отвечаю на ваш вопрос (!), Но мне интересно, решаете ли вы правильную проблему. Является ли синтаксический анализ столь трудоемким, что он требует разделения на другой процесс. Вы пытались собрать сообщения через один поток и разыгрывать их асинхронно через другой? Я подозреваю, что это будет проще, чем выполнение какой-либо формы IPC.

Если вы сделать хотите сериализация объектов, которые не являются Serializable, посмотрите на XStream, который будет сериализация большинство вещей в/из XML.

Смежные вопросы