2009-06-29 5 views
2

私は新しいメールを得るためにjava mail api 1.4.1を使用しています。電子メールを取得して解析するために、2つのクラスが使用されています。 "GetMail"クラスはメールサーバ(Gmail、yahooなど)と通信し、メッセージオブジェクトを取得します。その後、メッセージオブジェクトはさらに別のクラス "MailFormatter"クラスに渡され、メッセージオブジェクトを解析し、電子メールヘッダー(From、To、Subjectなど)を取得し、Multipartコンテンツを解析して本体と添付ファイルを取得します。これらのクラスは、個別のWebアプリケーションとして実装される予定です。このアプリケーションは、多数の電子メールIDの新しい電子メールを監視します。これらの( "GetMail"と "MailFormatter" ")は別々のWebアプリケーションとして実装されていますが、どのようにして" GetMail "アプリから" MailFormatter "アプリにメッセージオブジェクトを渡すことができますか?取得したメッセージオブジェクトを特定の場所(「GetMail」と「MailFormatter」の両方のアプリケーションに共通の場所)に保持する方法があるため、「GetMail」はメッセージオブジェクトをその場所に保持できます。 "MailFormatter"アプリはその場所から "Message"オブジェクトを読み込み、解析プロセスを実行することができます。メッセージオブジェクトはシリアル化できません。彼らはシリアル化することができない場合どのように私はJavaのメールメッセージオブジェクトの状態を維持することができますか?この問題を解決するために私を助けてください。アプリケーション間でjavaメールメッセージオブジェクトを渡す

答えて

1

まあ、MimeMessageはwriteTo(OutputStream)でシリアル化し、コンストラクターMimeMessage(Session、InputStream)で直列化することができます。

したがって、あるWebアプリケーションから別のWebアプリケーションにメッセージを送信できます。

+0

お返事ありがとうございます。だから私はFileOutputStreamを使用し、ファイルとしてオブジェクトを保持し、MimeMessageコンストラクタ経由でそれを読むことができます。 FileOutputStreamはメッセージを持続させるのに最適ですか?永続化されたメッセージがMimeMessageでない場合はどうなりますか?入力ストリーム経由で非MIMEメッセージを読むにはどうすればよいですか?また、MimeMessageコンストラクタは、メッセージ入力ストリームを読み込むためのセッションオブジェクトを要求しています。このセッションオブジェクトを他のWebアプリケーションで作成するにはどうしたらいいですか? – jezhilvalan

+0

@jezhilvalan私はMimeMessageにキャストできないメッセージを誰かが知っている現実のシナリオを知らないのですか? – Persimmonium

+0

@Persimmonium:Java Mail JARには 'MimeMessage'のインプリメンテーションしかありませんが、将来の拡張のためにおそらく' Message'インターフェースが存在します。 – kevinarpe

0

あなたの質問に答えるつもりはありません(!)が、あなたは正しい問題を解決しているのだろうかと思います。解析は時間がかかるので、別のプロセスに分割する必要があります。あるスレッドを介してメッセージを収集しようとしましたか、別のスレッドを介してそれらを非同期に解析しましたか?私はこれがIPCの何らかの形を実行するよりも簡単だろうと思う。

あなたはがSerializableないオブジェクトをシリアライズしたいん場合は、XMLへ/からほとんどのものをシリアライズなる、XStreamを見てみましょう。

関連する問題