Gestores de trabajo
Un gestor de trabajo proporciona hebras para las aplicaciones Java™ Platform, Enterprise Edition (Java EE).
- Ejecutores gestionados
- javax.enterprise.concurrent.ManagedExecutorService
- javax.enterprise.concurrent.ManagedScheduledExecutorService
- java.util.concurrent.ExecutorService
- java.util.concurrent.ScheduledExecutorService
- Fábricas de hebras
- javax.enterprise.concurrent.ManagedThreadFactory
- java.util.concurrent.ThreadFactory
- Servicio de contexto de hebras
- javax.enterprise.concurrent.ContextService
- Beans asíncronos
- com.ibm.websphere.asynchbeans.WorkManager
- Gestor de trabajo CommonJ
- commonj.work.WorkManager
Los gestores de trabajo proporcionan un modelo de programación para las aplicaciones Java EE. Si desea más información, consulte la sección sobre el modelo de programación.

Al escribir un componente web o de Enterprise JavaBeans (EJB) que utiliza beans asíncronos, el desarrollador debe incluir una referencia de entorno de recurso en cada componente que necesite acceso a un gestor de trabajo. Para obtener más información sobre las referencias de recursos, consulte el tema Referencias. El componente consulta un ejecutor de trabajos, fábrica de hebras, servicio de contexto o gestor de trabajo que utiliza un nombre lógico en el componente, espacio de nombres java:comp, del mismo modo que consulta un origen de datos, un enterprise bean o una fábrica de conexiones.
El desplegador enlaza gestores de trabajo físicos con referencias de entorno de recursos lógicos (ejecutores gestionados, fábricas de hebras, servicios de contexto o gestores de trabajo) cuando se despliega la aplicación.
Por ejemplo, si un desarrollador necesita tres agrupaciones de hebras para particionar el trabajo en los niveles bronce, plata y oro, el desarrollador graba el componente para que elija una agrupación lógica a partir de un atributo del perfil de la aplicación cliente. El desplegador tiene flexibilidad para decidir cómo desea correlacionar esta solicitud para tres agrupaciones de hebras. El desplegador puede decidir utilizar una sola agrupación de hebras en un sistema pequeño. En este caso, el desplegador enlaza las tres referencias de recursos con la misma instancia de gestor de trabajos (es decir el mismo nombre JNDI). Un sistema más potente permite tres agrupaciones de hebras, por lo que el desplegador enlaza cada referencia de recursos con un gestor de trabajo diferente. Los gestores de trabajo se pueden compartir entre varias aplicaciones Java EE instaladas en el mismo servidor.
Un desarrollador de aplicaciones puede utilizar tantas referencias de entornos de recursos lógicos como sea necesario. El desplegador elige si desea correlacionar uno o varios gestores de trabajo físicos con el ejecutor, la fábrica de hebras, el servicio de contexto el gestor de trabajo lógico gestionado que se ha definido en la aplicación.
Todos los componentes Java EE que necesiten compartir objetos de ámbito asíncrono deben utilizar el mismo gestor de trabajo. Estos objetos de ámbito tienen afinidad con un único gestor de trabajo. Una aplicación que utilice ámbitos asíncronos debe verificar que todos los componentes que utilizan objetos de ámbito utilicen el mismo gestor de trabajo.
Cuando se definen varios gestores de trabajo, las agrupaciones de hebras subyacentes se crean en una máquina virtual Java (JVM) sólo si una aplicación dentro de esa JVM busca el gestor de trabajo. Por ejemplo, si hay 10 agrupaciones de hebras (gestores de trabajo) definidas, no se crea ninguna hasta que una aplicación busca estas agrupaciones.
Gestor de trabajo CommonJ
El gestor de trabajo CommonJ contiene un subconjunto de los métodos de gestor de trabajo de beans asíncronos. Aunque el gestor de trabajo CommonJ funciona en un entorno Java EE, la interfaz no devuelve una instancia nueva para cada búsqueda de denominación JNDI, puesto que esta especificación no está incluida en la especificación Java EE.
La función opcional de especificación de trabajo CommonJ para trabajar de forma remota no recibe soporte. Aunque una unidad de trabajo implemente la interfaz java.io.Serializable, la unidad de trabajo no se ejecuta de forma remota.
Cómo buscar un ejecutor gestionado
InitialContext ic = new InitialContext();
ManagedExecutorService executor = (ManagedExecutorService) ic.lookup("java:comp/env/concurrent/myExecutor");
Contextos Java EE de herencia
- Contexto de internacionalización
- Cuando se selecciona esta opción y se habilita el servicio de internacionalización, y el contexto de internacionalización que existe en la hebra de planificación está disponible en la hebra de destino.
- Área de trabajo
- Cuando se selecciona esta opción, el contexto del área de trabajo de cada partición de área de trabajo que existe en la hebra de planificación está disponible en la hebra de destino.
- Perfil de aplicación (en desuso)
- El contexto de perfil de aplicación no se soporta y no está disponible para la mayoría de aplicaciones. Para las aplicaciones Java EE 1.3, cuando se selecciona esta opción, se habilita el servicio de perfilado de aplicaciones y se selecciona la propiedad de servicio de perfilado de aplicaciones modalidad de compatibilidad de 5.x. La tarea de perfil de aplicaciones asociada con la hebra de planificación está disponible en la hebra de destino para las aplicaciones Java EE 1.3. Para aplicaciones Java EE 1.4 o superiores, la tarea de perfil de aplicación es una propiedad de la unidad de trabajo asociada, en lugar de una hebra. Esta opción no afecta al comportamiento de la tarea en aplicaciones Java EE 1.4 o superiores. El trabajo planificado que se ejecuta en una aplicación Java EE 1.4 no recibe la tarea de perfilado de la hebra de planificación.
- Security
- La tarea se puede ejecutar como asíncrona o como el cliente autenticado en la hebra que la ha creado y enviado. Este comportamiento es de gran utilidad porque la tarea sólo puede hacer lo que haga el que la invoca. Esta acción es más útil que un mecanismo RUN_AS, por ejemplo, que impide este tipo de comportamiento. Cuando se selecciona la opción Seguridad, el sujeto JAAS que existe en la hebra de planificación está disponible en la hebra de destino. Si no se selecciona, la hebra se ejecuta de forma anónima.
- Metadatos del componente
- Los metadatos del componente son sólo relevantes cuando la tarea es un objeto Java simple. Si la tarea es un componente Java EE, por ejemplo, un enterprise bean, los metadatos del componente se activan.
Los contextos que se pueden heredar dependen del gestor de trabajo que utiliza la aplicación que envía la tarea. Con la consola administrativa, el administrador define la política de contexto adhesivo de un gestor de trabajo seleccionando los servidos en los que estará disponible el gestor de trabajo.
Modelo de programación
- Programas de utilidad de simultaneidad para Java EE. La especificación Java EE estandariza este modelo de programación, que incluye ejecutores gestionados y ejecutores planificados gestionados, que heredan de la API java.util.concurrent de Java SE familiar. También incluye el servicio de contexto, que no tiene ningún equivalente en la API java.util.concurrent.
- Beans asíncronos. Los beans asíncronos actuales Gestor de trabajo, Origen de sucesos, ámbitos asíncronos, supervisores de subsistema e interfaces de contexto de Java EE forman parte de un modelo de programación de beans asíncronos.
- Especificación CommonJ. El modelo de programación CommonJ utiliza WorkManager y TimerManager para gestionar hebras y temporizadores de forma asíncrona en el entorno de Java EE.
Para obtener más información sobre las API de ejecutores gestionados, fábricas de hebras, servicios de contexto y del gestor de trabajo, consulte el Javadoc.
Ejemplos de simultaneidad
Ejecutor gestionado | Beans asíncronos | CommonJ |
---|---|---|
|
|
|
Ejecutor gestionado | Beans asíncronos | CommonJ |
---|---|---|
|
|
|
Ejecutor gestionado | Beans asíncronos | CommonJ |
---|---|---|
|
|
|
Ejecutor planificado gestionado | Beans asíncronos | CommonJ |
---|---|---|
|
|
|
Ejecutor planificado gestionado | Beans asíncronos | CommonJ |
---|---|---|
|
|
|