2009-06-29 7 views
2

Ich benutze Java Mail API 1.4.1, um neue E-Mails zu erhalten. Zwei Klassen werden verwendet, um E-Mails zu erhalten und sie dann zu analysieren. Die Klasse "GetMail" kommuniziert mit dem Mail-Server (Gmail, Yahoo usw.) und erhält das Nachrichtenobjekt. Dann wird das Nachrichtenobjekt an eine weitere Klassen- "MailFormatter" -Klasse übergeben, die dann das Nachrichtenobjekt analysiert, die E-Mail-Kopfzeilen (Von, An, Betreff usw.) abruft und dann den Multipart-Inhalt analysiert, um den Hauptteil und Anhänge zu erhalten sowohl "Mail bekommen" und "Mail Formatierung" Prozess sind sehr ressourcenintensiv, diese Klassen werden als separate Web-Anwendungen implementiert werden.Diese Anwendung wird neue E-Mails für zahlreiche E-Mail-IDs zu überwachen.Wenn diese ("GetMail" und "MailFormatter ") sind als separate Webanwendungen implementiert, wie kann ich das Nachrichtenobjekt von der" GetMail "-App an die" MailFormatter "-App weitergeben? Gibt es einen Weg, durch den ich das erhaltene Nachrichtenobjekt an einem bestimmten Ort (einem Ort, der sowohl für "GetMail" - als auch für "MailFormatter" -Anwendungen üblich ist) persistieren kann, so dass "GetMail" das Nachrichtenobjekt an diesem Ort beibehalten kann, und Dann kann die "MailFormatter" -App "Message" -Objekte von diesem Ort lesen und den Parsing-Prozess ausführen. Nachrichtenobjekte können nicht serialisiert werden. Wenn sie nicht serialisiert werden können, wie kann ich den Status des Java-Mail-Nachrichtenobjekts beibehalten? Bitte helfen Sie mir, dieses Problem zu lösen.Übergabe von Java-Mail-Nachrichtenobjekt zwischen Anwendungen

Antwort

1

Well MimeMessage kann mit writeTo (OutputStream) serialisiert und mit dem Konstruktor MimeMessage (Session, InputStream) deserialisiert werden.

So kann eine Nachricht von einer Webanwendung an die andere gesendet werden.

+0

danke für die antwort. Also kann ich FileOutputStream verwenden und das Objekt als Datei persistieren und dann über den MimeMessage-Konstruktor lesen. Ist FileOutputStream die beste Nachricht um persistieren zu können? Was passiert, wenn die persistente Nachricht nicht MimeMessage ist? Wie kann ich Nicht-Mime-Nachrichten über den Eingabestream lesen? Auch der MimeMessage-Konstruktor fordert ein Sitzungsobjekt zum Lesen des Nachrichteneingabestreams. Wie kann ich dieses Sitzungsobjekt in der anderen Webanwendung erstellen? – jezhilvalan

+0

@jezhilvalan Ich kenne kein Szenario in der realen Welt, in dem du eine Nachricht bekommst, die nicht auf MimeMessage übertragen werden kann. – Persimmonium

+0

@Persimmonium: Die Java Mail JAR hat nur Imples von 'MimeMessage', aber die' Message' Schnittstelle existiert wahrscheinlich für zukünftige Erweiterungen. – kevinarpe

0

Ich weiß, dass ich deine Frage nicht beantworte (!), Aber ich frage mich, ob du das richtige Problem löst. Ist das Parsen so zeitaufwendig, dass es in einen anderen Prozess aufgeteilt werden muss? Haben Sie versucht, die Nachrichten über einen Thread zu sammeln und asynchron über einen anderen zu analysieren? Ich vermute, das wäre einfacher als irgendeine Art von IPC durchzuführen.

Wenn Sie tun wollen Objekte serialise, die nicht Serializable sind, werfen Sie einen Blick auf XStream, die meisten Dinge zu/von XML-Serialisierung wird.

Verwandte Themen