Login Form

Algunas veces, durante nuestro desarrollo nos enfrentamos a varios retos, tal como es el caso de lanzar un proceso asíncrono desde nuestra aplicación Web.

Al analizarlo, optamos por la creación de un objecto que extienda la clase Thread, o bien un objeto que implemente la interfaz Runnable y lo acoplamos a nuestra aplicación. Desafortunadamente, se convierte en un proceso que no es administrado por el WebServer, lo que hace que no pueda acceder al contexto de la WebApp, ni a objetos tales como JNDI, persistencia, etc.

¿Que hacemos en estas situaciones? Bueno, cuando se me presentó este problema encontré una solución que nos ofrece el WAS (WebSphere Application Server 6.1 o superior). Este cuenta con una infraestructura para lograr este tipo de comportamiento asíncrono que queremos para nuestro proceso.

Para configurar su uso, es necesario realizar tres pasos:

 

1- Configurar el recurso (Work manager) en la configuración del WAS:

  

 Establecemos el número máximo de hilos, así como su prioridad.

  

 2- Configuramos el nuevo recurso en el web.xml de la aplicación:

Al abrirlo con un editor, vamos a visulizar que se cargo algo así:

 

3- Integrar el recurso en nuestra codificación.

A continuación les presento un ejemplo de la clase que tiene el proceso que queremos ejecutar de manera asíncrona: 

 Public class LongRunningJob {

@Asynchronous

public void generateCertificate() {

      // the long running work goes here...

}

}

Nota:

Se deben cumplir los siguientes puntos para

el método que ejecuta el proceso:

  • Su tipo de retorno debe ser VOID
  • No debe tener argumentos
  • El método debe llevar la notación @Asynchronous

 

 

 

 

 

 

 

 

 

 

 

 

Y ahora para ejecutarlo, lo hacemos a través del siguiente código:

LongRunningJob job = new LongRunningJob();
AsyncWork work = new AsyncWork(job, "generateCertificate");

InitialContext ic = new InitialContext();
WorkManager wm = (WorkManager)ic.lookup("java:comp/env/wm/WorkManager");
workManager.start(work);

 

En fin, espero que esta solución les pueda ser útil tanto como lo fue para mi. Podrán encontrar más información en el siguiente link:  IBM WAS WorkManager

Add comment


Security code
Refresh

contacts Contactanos

 

bugs Reportar bugs

about Acerca de www.tecnohobby.net

Go to top