WebSphere Extended Deployment, Version 6.0.x     Sistemas operativos: AIX, HP-UX, Linux, Solaris, Windows, z/OS

Modelo de programación con una actividad de proceso intensiva

Las aplicaciones con una actividad de proceso intensiva son aplicaciones que realizan trabajo con una actividad de proceso intensiva que no se adapta con comodidad al paradigma tradicional de petición/respuesta de J2EE (Java 2 Platform Enterprise Edition).

Existen varias características que pueden hacer que estas aplicaciones no sean adecuadas para los modelos de programación de J2EE tradicionales:
El modelo de programación con una actividad de proceso intensiva facilitado por WebSphere Extended Deployment proporciona un entorno que satisface estas necesidades. El modelo de programación con una actividad de proceso intensiva se base en dos conceptos básicos:
  1. El uso de trabajos para someter y gestionar trabajo de forma asíncrona.
  2. 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 de tiempo prolongado.

Todas las aplicaciones de larga ejecución comparten el concepto de trabajo, que se describe en otras partes de la documentación. Las secciones siguientes proporcionan información adicional sobre las extensiones del modelo de programación de beans asíncronos.

Pasos de trabajo con una actividad de proceso intensiva

Como todos los trabajos de larga ejecución, los trabajos con una actividad de proceso intensiva se dividen en varios pasos de trabajo. En el caso de los trabajos con una actividad de proceso intensiva, cada paso de trabajo se representa mediante una instancia de un clase que implementa a 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 WebSphere y JSR 237. Estas extensiones constan de dos métodos que proporcionan un modo de pasar las propiedades job-step específicas indicadas en el trabajo al objeto CIWork.

Consulte la documentación de la API para obtener información detallada.

Para obtener más información sobre los beans asíncronos, vaya a la sección Utilización de beans asíncronos del Centro de información de WebSphere Application Server.

Bean de controlador

El bean de controlador es un bean de sesión sin estados definido en el descriptor de despliegue de la aplicación con una actividad de proceso intensiva que permite que el entorno de ejecución controle los trabajos de la aplicación. WebSphere facilita la implementación de este bean de sesión sin estado. La única responsabilidad de la aplicación es incluir el bean de sesión sin estado, que se muestra en la siguiente definición, en el descriptor de despliegue de uno de los módulos de enterprise bean. Tenga en cuenta que debe definirse exactamente un bean de controlador para cada aplicación con una actividad de proceso intensiva. Como la implementación del bean de controlador se facilita durante el tiempo de ejecución de WebSphere, los responsables del despliegue de aplicaciones no deben solicitar el despliegue de los enterprise beans durante el despliegue de las aplicaciones con una actividad de proceso intensiva.
<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 utilizará 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 (un número de objetos CIWork más las clases necesarias para dar soporte a estos objetos CIWork) se empaqueta en un módulo de enterprise bean del archivo EAR (Enterprise Archive) de una aplicación J2EE. Tenga en cuenta que el descriptor de despliegue del módulo de enterprise bean debe contener la definición del bean de sesión sin estado mostrado anteriormente. Si la aplicación utiliza otros enterprise beans o recursos, las definiciones de esos beans y recursos también pueden aparecen en el descriptor de despliegue. Las herramientas de desarrollo J2EE como, por ejemplo, IBM Rational Application Developer pueden utilizarse para desarrollar y empaquetar aplicaciones con una actividad de proceso intensiva del mismo modo que se utilizan para construir las aplicaciones J2EE que contengan módulos de enterprise bean y beans asíncronos.

Ciclo de vida de una aplicación con una actividad de proceso intensiva

Una aplicación con una actividad de proceso intensiva se inicia mediante el servidor de aplicaciones del mismo modo que cualquier aplicación J2EE. Si la aplicación define cualquier bean de arranque, éste se ejecutará cuando se inicie el servidor de aplicaciones. Cuando llega un trabajo para la aplicación, el entorno de ejecución con una actividad de proceso intensiva (LREE.ear) invoca el bean de sesión sin estado CIControllerBean definido en el descriptor de despliegue del módulo de EJB de la aplicación. El nombre JNDI de este bean de sesión sin estado se especifica en el xJCL del trabajo. Para todos los pasos de trabajo, CIControllerBean:
  1. 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.
  2. Invoca el método setProperties() del objeto CIWork para pasar cualquier propiedad definida en el xJCL del paso de trabajo.
  3. 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 al método run() del objeto CIWork.

Si el 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 permanecerá en un estado cancel_pending hasta que se devuelva el método run().

Si el no se cancela el trabajo y el método run() se devuelve sin generar ninguna excepción, es muy probable que el trabajo se haya completado correctamente. Si el método run() genera una excepción, el método se marcará como de execution_failed. Una vez que se devuelva el método run() (como habitualmente o generando una excepción), no se realizarán más llamadas al objeto CIWork y se eliminarán todas las referencias a éste.




Related concepts
Desarrollo de las aplicaciones de larga ejecución

Tema de concepto    

Condiciones de uso | Comentarios Última actualización: Mar 14, 2006 11:03:53 AM EST
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r0/index.jsp?topic=?topic=/com.ibm.websphere.xd.doc/info/scheduler/cschintensve.html

© Copyright IBM 2005, 2006. Reservados todos los derechos.
Este centro de información se ha realizado con tecnología de Eclipse. (http://www.eclipse.org)