совместное использование объекта сообщения между веб-приложениями - PullRequest
0 голосов
/ 30 июня 2009

Мне нужно разделить объекты почтовых сообщений Java между двумя веб-приложениями (A и B).

WebApplication A получает сообщение и записывает его в outputStream

for(int i=0;i<messagesArr.length;i++){
  uid = pop3FolderObj.getUID(messagesArr[i]);
//storing messages with uid names inorder to maintain uniqueness
  File f = new File("F:/PersistedMessagesFolder" + uid);  
  FileOutputStream fos = new FileOutputStream(f);
  messagesArr[i].writeTo(fos);
  fos.flush();
  fos.close();
}

Является ли FileOutputStream лучшим выходным потоком для сохраняющихся объектов сообщений? Можно ли использовать ObjectOutputStream для сохранения объекта сообщения?

WebApplication B читает объект сообщения через InputStream

FileInputStream fis = new FileInputStream("F:/MessagesPersistedFolder"+uid);
MimeMessage mm = new MimeMessage(sessionObj,fis);

Что, если объект почтового сообщения, который уже написан через WebApplication A, не является MimeMessage? Как я могу читать сообщения не MIME, используя поток ввода?

Конструктор MimeMessage назначает sessionObj в качестве первого параметра? Как я могу получить этот sessionObj в WebApplicationB? Нужно ли снова устанавливать соединение с тем же emailid, emailpassword, popserver и port (уже использованным в WebApplication A) с порядком почтового сервера для получения этого объекта сеанса? Даже если он получен, останется ли этот объект сеанса таким же, как у объекта сеанса, который был предварительно получен в WebApplicationA?

Поскольку я использую uids для именования объектов Message (для сохранения уникальности имен файлов), как я могу разделить эти uid между WebApplication A и WebApplication B? Для WebApplication B необходим идентификатор UID для доступа к конкретному файлу, который присутствует в «F: / MessagesPersistedFolder»

Пожалуйста, помогите мне в решении вышеуказанных проблем.

1 Ответ

1 голос
/ 30 июня 2009

Какие реальные функции вы пытаетесь реализовать здесь? Похоже, вы пытаетесь поместить квадратный колышек (классы сообщений Javamail) в круглое отверстие (требование об обмене данными сообщений между двумя приложениями).

Мой совет будет либо:

1) использовать очередь сообщений и отправлять содержимое сообщений электронной почты из одного приложения в другое с помощью javax.jms.TextMessage.

2) или сохраните содержимое сообщения в поле clob в общей базе данных, к которой имеют доступ оба приложения.

В конце концов, используйте Javamail API для отправки электронной почты, а не как средство обмена данными.

Также при использовании сериализации , что вы будете делать с java.io.ObjectOutputStream, вы получите файлы, которые будут работать только с определенной версией Javamail API, и хотя я сомневаюсь, что Javamail сильно изменится в наши дни Я бы не хотел исключать такую ​​возможность.

...