0

2 つの Web アプリケーション (A と B) の間で Java メール メッセージ オブジェクトを共有する必要があります。

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 を義務付けていますか? WebApplicationB でこの sessionObj を取得するにはどうすればよいですか? このセッション オブジェクトを取得するには、同じ電子メール ID、電子メール パスワード、ポップ サーバー、および電子メール サーバーとのポート (Web アプリケーション A で既に使用されている) を使用してストア接続を再度確立する必要がありますか? 取得しても、このセッションオブジェクトはWebApplicationAで先に取得したセッションオブジェクトのままでしょうか?

(ファイル名の一意性を維持するために) メッセージ オブジェクトに名前を付けるために uid を使用しているため、WebApplication A と WebApplication B の間でこれらの uid を共有するにはどうすればよいですか? WebApplication B には、「F:/MessagesPersistedFolder」にある特定のファイルにアクセスするために uid が必要です。

前述の問題を解決するために私を助けてください。

4

1 に答える 1

1

ここで実装しようとしている実際の機能は何ですか?四角いペグ(Javamailメッセージクラス)を丸い穴(2つのアプリケーション間でメッセージデータを共有するための要件)に収めようとしているようです。

私のアドバイスは次のいずれかです。

1)メッセージキューを使用し、を使用して1つのアプリケーションから別のアプリケーションに電子メールメッセージの内容を送信しますjavax.jms.TextMessage

2)または、両方のアプリケーションがアクセスする共有データベースのclobフィールドにメッセージの内容を保存します。

結局のところ、データを共有する手段としてではなく、電子メールを送信するためにJavamailAPIを使用してください。

また、シリアル化を使用java.io.ObjectOutputStreamすると、特定のバージョンのJavamail APIでのみ機能するファイルが生成されます。最近のJavamailの変更は疑わしいですが、その可能性を排除したくありません。

于 2009-06-30T08:49:05.937 に答える