Modelo de programación con una actividad de proceso intensiva
Las aplicaciones con una cantidad de proceso intensivo son aplicaciones que realizan trabajo con una actividad de proceso intensiva que no se adapta con comodidad al paradigma tradicional de solicitud y respuesta de Java™ Platform, Enterprise Edition (Java EE).
Aplicaciones de actividad de proceso intensiva
- La necesidad de un sometimiento y un inicio asíncronos del trabajo
- La necesidad de que el trabajo se ejecute durante prolongados periodos de tiempo
- La necesidad de que las unidades individuales de trabajo sean visibles y gestionables para los operadores y administradores
- El uso de trabajos para someter y gestionar trabajo de forma asíncrona
- Una pequeña extensión del modelo de programación de beans asíncronos para dar soporte al trabajo que se ejecuta durante un periodo prolongado
En las secciones siguientes se proporciona información adicional sobre las extensiones al modelo de programación de beans asíncronos.
Bean de controlador
<session id="proporcionar un nombre adecuado aquí">
<ejb-name>CIController</ejb-name>
<home>com.ibm.ws.ci.CIControllerHome</home>
<remote>com.ibm.ws.ci.CIController</remote>
<ejb-class>com.ibm.ws.ci.CIControllerBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
<resource-ref id="WorkManager_ResourceRef">
<description>
WorkManager que se utiliza para ejecutar trabajos.
<res-ref-name>wm/CIWorkManager</res-ref-name>
<res-type>commonj.work.WorkManager</res-type>
<res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope>
Empaquetado de una aplicación con una actividad de proceso intensiva
La lógica de una aplicación con una actividad de proceso intensiva con un número de objetos CIWork más las clases para dar soporte a estos objetos CIWork se empaqueta en un módulo de enterprise bean en un archivo de aplicación Java EE EAR (Enterprise Archive). El descriptor de despliegue del módulo de enterprise bean debe contener la definición del bean de sesión sin estado que se ha descrito anteriormente. Si la aplicación utiliza otros enterprise beans o recursos, las definiciones de esos beans y recursos también pueden estar en el descriptor de despliegue. Puede utilizar herramientas de desarrollo Java EE como IBM® Rational Application Developer para desarrollar y empaquetar aplicaciones con una actividad de proceso intensiva del mismo modo que se utilizan para construir las aplicaciones Java EE que contengan módulos de enterprise bean y beans asíncronos. También puede utilizar la tarea pgcpackager para empaquetar aplicaciones de gran cantidad de cálculos.
Ciclo de vida de una aplicación con una actividad de proceso intensiva
- Crea una instancia del objeto CIWork de la aplicación especificado por el elemento de nombre de clase del xJCL del paso de trabajo utilizando el constructor sin argumentos de la clase CIWork.
- Invoca al método setProperties() del objeto CIWork para pasar las propiedades definidas en el xJCK para el paso de trabajo.
- Busca el gestor de trabajo definido en el descriptor de despliegue del módulo de enterprise bean y lo utiliza para llamar de forma asíncrona el método run() del objeto CIWork.
Si el trabajo se cancela el objeto antes de que se devuelva el método run(), CIControllerBean invoca al método release() del objeto CIWork en una hebra independiente. Es competencia del desarrollador de la aplicación de larga ejecución hacer que la lógica del método release() devuelva el método run() con prontitud. El trabajo permanece en un estado cancel pendiente hasta que se devuelva el método run().
Si no se cancela el trabajo y se devuelve el método run() sin devolver ninguna excepción, el trabajo se ha completado correctamente. Si el método run() devuelve una excepción, el estado del trabajo es execution failed. Una vez devuelto el método run() satisfactoriamente o con una excepción, no se realizarán más llamadas al objeto CIWork. Se eliminarán todas las referencias al método run().
Paso de trabajo con una actividad de proceso intensiva
A diferencia de otros trabajos por lotes, los trabajos con una actividad de proceso intensiva constan de un paso de trabajo. Este paso de trabajo se representa mediante una instancia de una clase que implementa la interfaz com.ibm.websphere.ci.CIWork. La interfaz CIWork amplía la interfaz de trabajo commonj.Work del modelo de programación de beans asíncronos de servidor de aplicaciones y la solicitud de especificación Java (JSR) 237. Estas extensiones constan de dos métodos que proporcionan un modo de pasar las propiedades específicas del paso de trabajo indicadas en el trabajo para el objeto CIWork.
Consulte la documentación de la API para obtener más detalles.
Para obtener información sobre los beans asíncronos, consulte Utilización de beans asíncronos.