J2EE アプリケーションを使用可能にして、
JavaMail API でメール・リソースを使用することができます。
始める前に
JavaMail API を使用して、任意の Java 2 Enterprise Edition (J2EE) のアプリケーション・コンポーネント (EJB、サーブレットなど) にコード・セグメントを組み込むことで、
アプリケーションがメッセージを送信し、メールのコピーを Sent フォルダーに保管できるようにします。
以下は、J2EE アプリケーションに組み込むコードのサンプルです。
javax.naming.InitialContext ctx = new javax.naming.InitialContext();
javax.mail.Session mail_session = (javax.mail.Session) ctx.lookup("java:comp/env/mail/MailSession3");
MimeMessage msg = new MimeMessage(mail_session);
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("bob@coldmail.net"));
msg.setFrom(new InternetAddress("alice@mail.eedge.com"));
msg.setSubject("Important message from eEdge.com");
msg.setText(msg_text);
Transport.send(msg);
Store store = mail_session.getStore();
store.connect();
Folder f = store.getFolder("Sent");
if (!f.exists()) f.create(Folder.HOLDS_MESSAGES);
f.appendMessages(new Message[] {msg});
このタスクについて
J2EE アプリケーションは、java:comp/env/mail サブコンテキストで論理的に命名されたメール接続ファクトリーへの参照を検索することによって、JavaMail API を使用することができます。
このサブコンテキストは、アプリケーションのデプロイメント記述子で宣言され、
インストール・システムに固有のメール・セッション・リソースにマップされています。
他の J2EE リソースの場合と同様、これを行うと、アプリケーションが外部リソースへの参照をハードコーディングする必要がなくなります。
プロシージャー
- Java Naming and Directory Interface (JNDI) でリソースを探します。 J2EE 仕様では、メール・セッション・インスタンスがリソース、すなわちメール・トランスポートとストア接続の入手先となるファクトリーと見なされます。
メール・セッションは、ハードコーディングしないでください
(すなわち、Properties オブジェクトを満たしてから、それを使用して
javax.mail.Session オブジェクトを作成しないでください)。代わりに、システム機能でリソースを構成してから JNDI ルックアップによってリソースを検索するという、J2EE プログラミング・モデルに従ってください。
直前のサンプル・コードで、javax.mail.Session
mail_session = (javax.mail.Session) ctx.lookup("java:comp/env/mail/MailSession3"); という行は、
メール・セッションをハードコーディングせず、JNDI によって検出されたリソース名を使用する例です。
ルックアップ名 mail/MailSession3 は、
実リソースに対するソフト・リンク と見なすことができます。
- アプリケーションのアセンブル時にリソース参照を定義します。
メール・リソースへのリソース参照は、
コンポーネントのデプロイメント記述子で定義する必要があります。
これは、JNDI ルックアップではメール・セッションが参照されるためです。
通常は、WebSphere Application Server に同梱される
アセンブリー・ツールを使用できます。
この参照を作成する場合は、参照名が必ずコードで使用されている名前と一致するようにしてください。
例えば、前のコードは、ルックアップで
java:comp/env/mail/MailSession3 を使用します。
そのため、この参照の名前は
mail/Session3、
リソースのタイプは
javax.mail.Session でなければなりません。構成後、
デプロイメント記述子には、メール・リソース参照のための以下のエントリーが含まれます。
<resource-reference>
<description>description</description>
<res-ref-name>mail/MailSession3</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
- メール・プロバイダーおよびメール・セッションを構成します。 サンプル・コードがメール・リソースを参照し、デプロイメント記述子が参照を宣言しても、参照そのものはまだ存在していません。
ここで、アプリケーション・コンポーネントが参照するメール・リソースを構成する必要があります。
構成されるメール・セッションは、そのトランスポート部分とメール・アクセス部分の両方が定義されていなければならないことに注意してください。トランスポート部分の定義が必要なのは、コードがメッセージを送信するためであり、メール・アクセス部分が必要なのは、ローカル・メール・ストアにもコピーが保管されるためです。
メール・セッションを構成するときは、
JNDI 名を指定する必要があります。これは、アプリケーションをインストールしたり、アプリケーション内の
リソース参照を構成された実リソースとリンクアップしたりするときに必要になる、重要な名前です。
- アプリケーションをインストールします。
管理コンソールまたはスクリプト・ツールを使用して、アプリケーションをインストールすることができます。
インストール時に、WebSphere Application Server はすべてのリソース参照を検査し、
ユーザーはそれぞれの参照に対して JNDI 名を指定する必要があります。
これは任意の JNDI 名ではなく、参照の宛先である特定の構成済みリソースに指定される JNDI 名です。
- 既存のメール・プロバイダーおよびセッションを管理します。 メール・プロバイダーおよびセッションは、更新したり除去したりできます。
メール・プロバイダーおよびセッションを更新するには、以下のようにします。
- 管理コンソールを開きます。
- コンソール・ナビゲーション・ツリーで、「リソース」>「メール」とクリックします。
- 「メール・プロバイダー」または「メール・セッション」をクリックして、該当する
Java Mail リソースを選択します。
- 変更する特定のリソースを選択します。 メール・プロバイダーまたはメール・セッションを除去するには、該当するリソースの横にあるチェック・ボックスを選択して、「削除」をクリックします。
- 「適用」または「OK」をクリックします。
- 構成を保管します。
- メール・セッション用のデバッガーを使用可能にします。