Vous pouvez activer vos applications Java™ Platform, Enterprise Edition (Java EE)
en vue de l'utilisation des ressources de messagerie avec l'API JavaMail.
Avant de commencer
A l'aide de l'API JavaMail, un segment de cod peut être incorporé à n'importe
quel composant d'application Java EE, tel qu'un EJB (Enterprise JavaBeans) ou un
servlet, afin de permettre à l'application d'envoyer un message et d'enregistrer une
copie du message dans le dossier des messages envoyés.
Voici un exemple de code que vous pourriez
incorporer à une application Java EE :
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("Message important de 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});
Pourquoi et quand exécuter cette tâche
Les applications Java EE peuvent utiliser les API JavaMail en recherchant les
références aux fabriques de connexions JavaMail nommées de façon logique à travers le
sous-contexte
java:comp/env/mail qui est déclaré dans le descripteur de
déploiement d'applications et mappé vers les ressources de la session de messagerie
spécifiques à l'application. Comme pour les autres ressources Java EE, cette approche permet d'éliminer le besoin pour l'application de
figer dans le code les références aux ressources externes.
Procédure
- Recherchez une ressource via l'interface JNDI (Java Naming and Directory Interface). La spécification Java EE considère les instances de session de messagerie
comme des ressources ou des fabriques à partir desquelles il est possible d'obtenir
des connexions de stockage et de transfert du courrier. Ne figez pas dans le code les sessions de messagerie (remplir un objet
Properties, puis l'utiliser pour créer un objet javax.mail.Session). En revanche, vous devez suivre
le modèle de programmation Java EE consistant à configurer les ressources par le biais des fonctions du système,
puis de les rechercher à l'aide de recherches JNDI.
Dans l'exemple de code précédent, la ligne
javax.mail.Session mail_session = (javax.mail.Session)
ctx.lookup("java:comp/env/mail/MailSession3"; illustre l'approche consistant à ne
pas figer une session de messagerie dans le code et à utiliser un nom de ressource trouvé
via JNDI. Vous pouvez considérer le nom de recherche, mail/MailSession3, comme
étant une référence indirecte à la ressource réelle.
- Définissez des références de ressource pendant que vous assemblez votre application. Vous devez définir une référence de ressource pour la ressource de messagerie dans le descripteur de déploiement du composant étant donné qu'une session de messagerie est référencée dans la recherche JNDI. En règle générale,
vous pouvez utiliser un outil d'assemblage fourni avec le serveur d'applications.
Lorsque vous créez cette référence, veillez à ce que le nom de la référence corresponde au nom utilisé dans le code. Par exemple, le code précédent utilise
java:comp/env/mail/MailSession3 dans sa
recherche. Par conséquent le nom de cette référence doit être mail/Session3 et le type de
la ressource doit être javax.mail.Session. Après configuration, le descripteur
de déploiement contient l'entrée suivante pour la référence de ressource de messagerie :
<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>
- Configurez les
fournisseurs et les sessions de messagerie. L'exemple de code fait référence à une ressource de messagerie, le descripteur de déploiement déclare la référence, mais la ressource elle-même n'existe pas encore. Vous devez maintenant configurer la ressource de messagerie qui est référencée par votre composant d'application.
Notez que la session de messagerie que vous configurez doit avoir à la fois une portion transport et une portion accès aux messages définies ; la première est requise parce que le code envoie un message et la deuxième l'est aussi parce que le code enregistre également une copie dans le stockage des messages local. Lorsque vous configurez la session de messagerie, vous devez spécifier un nom JNDI. Ce
nom est nécessaire pour installer votre application et pour créer un lien entre les
références de ressource de votre application et les ressources réelles que vous
configurez.
- Installez votre application. Vous pouvez installer votre application en utilisant soit la console d'administration, soit l'outil de scriptage. Lors de l'installation,
le serveur d'applications inspecte toutes les références de ressource et exige
l'entrée d'un nom JNDI pour chacune d'elles.
Il ne s'agit pas d'un nom
JNDI arbitraire, mais du nom JNDI affecté à une ressource configurée spécifique qui est
la cible de la référence.
- Gérez les fournisseurs et les sessions de messagerie existants. Vous pouvez mettre à jour et supprimer des fournisseurs et des sessions de
messagerie.
Pour mettre à jour des fournisseurs et des sessions de messagerie :
- Ouvrez la console d'administration.
- Cliquez sur dans l'arborescence de navigation de la console.
- Sélectionnez la ressource Java Mail à modifier. Pour cela, cliquez sur
Fournisseurs JavaMail ou Sessions Javamail.
- Sélectionnez la ressource à modifier. Pour supprimer un fournisseur de
messagerie ou une session de messagerie, cochez la case associée à la ressource appropriée
et cliquez sur Supprimer.
- Cliquez sur Valider ou sur OK.
- Sauvegardez la configuration.
- Facultatif : Déboguez
une session de messagerie.
Que faire ensuite
Si votre application possède un client, vous pouvez mettre à jour les fournisseurs
et les sessions de messagerie à l'aide de l'outil ACRCT (Application Client Resource Configuration Tool).