19 octubre 2016

API JavaMail Configurada con GlassFish en Java EE

En este artículo es el complemento del JavaMail para enviar correo Gmail que publique en (este Enlace), en este nuevo post explicare como configurar el JavaMail Session con Glassfish Version 4.1, que permitirá definir las propiedades en la consola del servidor y de esta manera las aplicaciones solo deben consumirla, en Java EE 7, se puede recuperar una sesión de JavaMail, configurada con el servidor de aplicación por medio de la anotación @Resource.

Esta anotación está disponible sobre el paquete Javax.annotation.
 
Mencionare algunas anotación utilizadas para la inyección de dependencia como son @EJB, @PersistenceContext, PersistenceUnit @Inject, @WebServiceRef, @Resource.

Como primero es ejecutar el servidor de aplicaciones, se pueden hacer en dos diferentes pasos, el primero sea por línea de comando por medio de la consola y el segundo por medio del IDE en este caso que estamos utilizando Netbeans 8.2.
Primer paso por medio de consola se ejecuta la siguiente línea de comando: asadmin start-domain domain1.

El segundo paso en el IDE nos dirijimos a la pestaña de services=>server=>GlassFish 4.1=>clik derecho=>start 

Verificamos si el Servidor está en Ejecución.

Suponiendo que el servidor GlassFish se está ejecutando en modo de prueba en el equipo local en el puerto 8080, se puede comprobar que se encuentra en ejecución en el explorador a http://localhost:4848 como se muestra en la (figura 1)  

Figura 1 Consola de GlassFish

En el siguiente paso vamos a crear nuestro JavaMail Sessions y configurarlo => resources=> JavaMail Sessions => New como se muestra en la (figura 2)

Figura 2 Configuración JavaMail Sessions

Después de presionar New diligenciamos los siguientes campos como lo muestra la tabla 1, 2 y como la (figura 3)

CAMPOS
DATOS
JNDI Name:
Email
Mail Host:
smtp.gmail.com
Default User:
Default Sender Address:
Status:
seleccionamos la opción Enable
Tabla 1
Los demás campos se dejan por defectos:
Store Protocol:
imap
Store Protocol Class:
com.sun.mail.imap.IMAPStore
Transport Protocol:
smtp
Transport Protocol Class:
com.sun.mail.smtp.SMTPTransport
Tabla 2

Figura 3 Nuevo JavaMail Sessions

A continuación agregamos cuatro (4) propiedades para la configuración del JavaMailSession como se describe en la tabla 3 y como se muestra en la (figura 4).

NOMBRE
VALOR
mail.smtp.auth:
True
mail.smtp.starttls.enable:
True
mail.smtp.starttls.port:
587
mail.smtp.starttls.password:
“Su password”
Tabla 3

Figura 4 Agregando Propiedades

Después de configurar el JavaMail Session continuaremos en crear la clase MailBeans como se muestra en la (figura 5 y 6)

Figura 5 Nueva clase

Figura 6 Nombre y ubicación de la clase

En la parte superior de la clase declaramos las siguientes anotaciones @ManagedBean y @RequestScoped, para lo que no están familiarizado con la inyección de dependencias (CDI), esta explicado detalladamente en el artículo anterior que lo puedes encontrar aquí.

Se inyecta la sesión completa JavaMail como recurso en vez de crearlo en otras palabras se configurar el JavaMail Session en la clase MailBeans usando la anotación @Resource.

Después declaramos tres (3) variables que se describirán en la siguiente Tabla 4, en el siguiente paso crearemos una nueva instancia de MailBeans como se muestra en la (Figura 7).

NOMBRE DE LA VARIABLE
DESCRIPCIÓN
From
Para quien será remitido el correo
Subject
El asunto o motivo del correo
Descr
La descripción del correo electrónico
Tabla 4 Descripción de las variables

Figura 7 Declaraciones de variables

Después de tener las variables declaradas privada, generamos los métodos de acceso “get y set” para cada una de las variables que conformaran los componentes de la web. Crearemos dos (2) métodos ValidateEmail() y submitemail() que se encargara de validar las direcciones de emails en los campos To, como se muestra en la (Figura 8) que son enviados por el usuario en aplicaciones web.

Figura 8 Validación de Email

El Segundo método submitEmail se va encargar de enviar los emails, como se muestra en la (figura 9).

Figura 9 Método Enviar email

Ahora crearemos la página JSF =>new file=>web=>JSF con extensión XHTML como se muestra en la (figura 10).

Figura 10 Creación de página web JSF

Agregamos la siguiente codificación como se muestra en la (figura 11)

Figura 11 Codificación de la página web JSF

Por ultimo ejecutamos la aplicación y se mostrara como en la (figura 12)

Figura 12 Pagina JSF

Descarga del Proyecto

4 comentarios:

  1. Buenas noches me sale correo no enviado y ya configure tal cual el blog, me podria ayudar por favor

    ResponderBorrar
    Respuestas
    1. Descarga el ejemplo https://github.com/Geovanny0401/emailglassfish.git
      el correo de gmail debes crearlo o utilizar el personal para realizar la respectiva prueba

      Borrar
  2. Configure todo tal cual el blog y capture este error que me sale " Couldn't connect to host, port: localhost, 25; timeout -1"

    ResponderBorrar
    Respuestas
    1. tengo el mismo problema, al parecer en el resource no se esta encontrando el JNDI configurado en el glashfish, por lo que el objeto session se esta mandando null, mi duda es si se debe configurar un bean con los datos del JDNi.
      Saludos!

      Borrar