Sie können Ihre Java EE-Anwendungen für die Verwendung
von Mailressourcen über die JavaMail-API aktivieren.
Vorbereitende Schritte
Mit der JavaMail-API kann ein Codesegment in jede Java EE-Anwendungskomponente, z. B. eine EJB oder ein Servlet, integriert werden.
Auf diese Weise kann die Anwendung eine Nachricht senden und eine Kopie der Nachricht im Ordner
"Gesendet" speichern.
Das folgende Codebeispiel könnten Sie in eine Java EE-Anwendung einbetten:
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});
Informationen zu diesem Vorgang
Java EE-Anwendungen können JavaMail-APIs verwenden. Dazu müssen Sie den Subkontext
java:comp/env/mail, der
im Anwendungsimplementierungsdeskriptor deklariert und
installationsspezifischen Ressourcen für Mailsitzungen zugeordnet ist, nach Referenzen auf
logisch benannte Mail-Verbindungsfactorys durchsuchen. Im Falle von Java EE-Ressourcen geschieht dies, damit in der Anwendung
Referenzen auf
externe Ressourcen nicht fest codiert werden müssen.
Vorgehensweise
- Suchen Sie mit Java Naming and Directory Interface (JNDI) eine Ressource. In der Java EE-Spezifikation ist die Instanz
einer Mailsitzung eine Ressource oder Factory, von der
Verbindungen für den Transport und das Speichern der Mail abgerufen werden können. Mailsitzungen sollten nicht
fest codiert werden (d. h. ein Properties-Objekt ausfüllen und dann zum Erstellen eines
javax.mail.Session-Objekts verwenden). Stattdessen müssen Sie dem
Java EE-Programmiermodell für das Konfigurieren von Ressourcen über die Systemeinrichtungen
folgen und diese dann mit JNDI-Lookup-Operationen suchen.
Die
Zeile javax.mail.Session mail_session = (javax.mail.Session) ctx.lookup("java:comp/env/mail/MailSession3"); im obigen
Beispiel veranschaulicht die nicht feste Codierung einer Mailsitzung und die Verwendung eines Ressourcennamens, der
mit JNDI ermittelt wird. Den Lookup-Namen mail/MailSession3 können Sie als
indirekte Referenz auf die reale Ressource ansehen.
- Definieren Sie bei der Assemblierung Ihrer Anwendung Ressourcenreferenzen. Eine Ressourcenreferenz für die Mailressource müssen Sie im Implementierungsdeskriptor der Komponente definieren,
weil JNDI-Lookup sich auf eine Mailsitzung bezieht. In der Regel können Sie eines der mit dem
Anwendungsserver bereitgestellten Assembliertools verwenden.
Wenn Sie diese Referenz erstellen, vergewissern Sie sich, dass der Name der Referenz mit dem im Code
verwendeten übereinstimmt. Im vorherigen Code wird beispielsweise
java:comp/env/mail/MailSession3 in der Lookup-Operation verwendet.
Deshalb muss der Name dieser Referenz "mail/Session3" und der Typ
der Ressource "javax.mail.Session" sein. Nach der Konfiguration enthält der
Implementierungsdeskriptor den folgenden Eintrag für die Referenz auf die Mailressource.
<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>
</resource-reference>
- Mail-Provider und -sitzungen konfigurieren. Der Beispielcode verweist auf eine Mailressource, und
der Implementierungsdeskriptor deklariert die Referenz. Die Ressource selbst ist jedoch noch nicht vorhanden. Sie müssen jetzt die Mailressource konfigurieren, auf die Ihre
Anwendungskomponente verweist. Beachten Sie, dass in der von Ihnen konfigurierten Mailsitzung sowohl der Abschnitt für Transport als auch der
Abschnitt für Mailzugriff definiert sein muss. Der Transportabschnitt ist erforderlich, weil der Code eine Nachricht sendet.
Der Abschnitt für Mailzugriff ist notwendig, weil eine Kopie in den lokalen Mailspeicher
geschrieben werden soll. Wenn Sie die Mailsitzung konfigurieren, müssen Sie einen JNDI-Namen angeben.
Dieser Name ist für die Installation der Anwendung
und das Verknüpfen der Ressourcenreferenzen in Ihrer Anwendung mit echten Ressourcen, die Sie konfigurieren, wichtig.
- Installieren Sie Ihre Anwendung. Sie können Ihre Anwendung mit der Administrationskonsole oder dem Scripting-Tool installieren. Während der
Installation untersucht der Anwendungsserver alle Ressourcenreferenzen und fordert von Ihnen
für jede einen JNDI-Namen an.
Dies ist kein beliebiger JNDI-Name, sondern der JNDI-Name, der einer bestimmten
konfigurierten Ressourcen zugewiesen wurde, die Ziel der Referenz ist.
- Verwalten Sie die vorhandenen Mail-Provider und -sitzungen. Sie können Mail-Provider und -Sitzungen aktualisieren und entfernen.
Gehen Sie zum Aktualisieren von Mail-Providern und
-sitzungen wie folgt vor:
- Öffnen Sie die Administrationskonsole.
- Klicken Sie in der Konsolennavigationsstruktur auf .
- Wählen Sie die zu ändernde JavaMail-Ressource aus, indem Sie auf
Mail-Provider oder Mailsitzungen klicken.
- Wählen Sie die zu ändernde Ressource aus. Wenn Sie einen Mail-Provider oder eine
Mailsitzung entfernen möchten, wählen Sie das Kontrollkästchen neben der entsprechenden Ressource aus, und klicken Sie dann auf
Löschen.
- Klicken Sie auf Anwenden oder OK.
- Speichern Sie die Konfiguration.
- Optional: Testen Sie die Mailsitzung.
Nächste Schritte
Wenn es zu Ihrer Anwendung einen Client gibt, können Mail-Provider und Mailsitzungen mit dem
ACRCT (Application Client Resource Configuration Tool) aktualisieren.