Puede habilitar las aplicaciones Java™ EE (Java Platform, Enterprise Edition) para que utilicen recursos de correo con la API de JavaMail.
Antes de empezar
Con la API de JavaMail, se puede incorporar un segmento de código en cualquier componente de aplicación de
Java EE, como una aplicación o un servlet EJB (Enterprise JavaBeans), que permite
a la aplicación enviar mensajes y guardar una copia del correo a la carpeta Sent (Enviados).
A continuación figura un ejemplo de código que incorporaría en una aplicación 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("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});
Acerca de esta tarea
Las aplicaciones Java EE pueden utilizar las API de JavaMail consultando
referencias a fábricas de conexiones de correo nombradas lógicamente mediante
el subcontexto
java:comp/env/mail que se declara en el descriptor de
despliegue de aplicaciones y correlacionado con recursos de sesión de correo
específicos de la instalación. Como en el caso de otros recursos Java EE,
esto se puede efectuar para eliminar la necesidad de la aplicación de codificar referencias
a recursos externos.
Procedimiento
- Localice un recurso mediante JNDI (Java Naming and Directory Interface). La especificación de Java EE considera una instancia de sesión de correo como un recurso
o una fábrica de la que se puede obtener el transporte de correo y conexiones de almacén. No proteja mediante código las sesiones de correo (concretamente, rellene un
objeto Properties y, a continuación, utilícelo para crear un objeto
javax.mail.Session). En su lugar, debe seguir el
modelo de programación de Java EE que consiste en configurar recursos mediante los recursos del
sistema y luego localizarlos mediante búsquedas JNDI.
En el código de
ejemplo anterior, la línea javax.mail.Session mail_session =
(javax.mail.Session) ctx.lookup("java:comp/env/mail/MailSession3"); es un
ejemplo de una sesión de correo sin codificar que utiliza un nombre de recurso
localizado mediante JNDI. Puede considerar el nombre de búsqueda, mail/MailSession3, como una referencia indirecta al recurso real.
- Defina referencias de recursos cuando
ensamble la aplicación. Debe definir en el descriptor de despliegue del componente una referencia a recursos para el recurso de correo, dado que se hace referencia a la sesión de
correo en la búsqueda JNDI. Normalmente, puede utilizar una herramienta de ensamblaje que se entrega con el servidor de aplicaciones.
Cuando cree esta referencia, asegúrese de que el nombre de la referencia
coincida con el nombre utilizado en el código. Por ejemplo, el código anterior utiliza
java:comp/env/mail/MailSession3 en su búsqueda. Por lo tanto, el nombre de esta referencia debe ser mail/Session3 y el tipo del recurso debe ser javax.mail.Session. Después de la configuración, el descriptor de despliegue contiene la entrada siguiente
para la referencia al recurso de correo:
<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>
- Configure sesiones y proveedores de correo. En el código de ejemplo se hace referencia a un recurso de correo, el
descriptor de despliegue declara la referencia, pero el propio recurso aún no
existe. Ahora tendrá que configurar el recurso de correo al que hace referencia
el componente de aplicación.
Observe que la sesión de correo que configura
debe tener definidas las partes de transporte y de acceso de correo; la primera es
necesaria porque el código envía un mensaje, la última porque también guarda
una copia al almacén de correo local. Cuando configura la sesión de correo, tiene que
especificar un nombre JNDI. Es un nombre importante para instalar la aplicación
y enlazar las referencias de recursos en la aplicación con los recursos reales
que configure.
- Instale la aplicación. Puede instalar la aplicación con la consola administrativa o la herramienta
de scripts. Durante la instalación, el servidor de aplicaciones inspecciona
todas las referencias de recursos y exige que proporcione un nombre JNDI para
cada uno de ellos.
No es un nombre JNDI arbitrario, sino el nombre JNDI
asignado a un recurso configurado concreto que es el destino de la referencia.
- Gestione sesiones y proveedores de correo existentes. Puede actualizar y eliminar sesiones y proveedores de correo.
Para actualizar
proveedores y sesiones de correo:
- Abra la consola de administración.
- Pulse en el árbol de navegación de la consola.
- Seleccione el recurso de correo Java adecuado que se ha de modificar pulsando Proveedor de correo o Sesión de correo .
- Seleccione el recurso específico que se ha de modificar. Para suprimir un proveedor de correo o una sesión de correo, seleccione el recuadro de selección que hay junto al recurso adecuado y pulse Eliminar.
- Pulse Aplicar o Aceptar.
- Guarde la configuración.
- Opcional: Depure una sesión de correo.
Qué hacer a continuación
Si la aplicación dispone de un cliente puede actualizar sesiones y proveedores de correo con la herramienta ACRCT (Application Client Resource Configuration Tool).