Gestión de hebras y Spring Framework
Utilice la información de las secciones siguientes para evitar problemas potenciales con las hebras no gestionadas.
Hebras no gestionadas
- El servidor de aplicaciones no reconoce las hebras no gestionadas.
- Las hebras no gestionadas no tienen acceso a la información contextual de Java™ EE.
- Las hebras no gestionadas pueden utilizar recursos sin que las supervise el servidor de aplicaciones.
- Las hebras no gestionadas pueden afectar de manera desfavorable a las funciones de servidor de aplicaciones, por ejemplo concluir de manera ordenada o recuperar recursos de anomalías.
- Un administrador no puede controlar el número de hebras no gestionadas ni el uso que realizan éstas de los recursos.
- registerShutdownHook
Evite utilizar la clase AbstractApplicationContext y las subclases de Spring Framework. Estas clases incluyen el método público registerShutdownHook, que crea una hebra y la registra en la JVM (Java virtual machine) para ejecutar al concluir para cerrar el contexto de aplicación. Como alternativa, una aplicación puede utilizar los avisos de ciclo de vida que recibe del contenedor de servidor de aplicaciones para llamar al método de cierre explícitamente en el contexto de aplicación.
- WeakReferenceMonitor
Spring Framework proporciona cómodas clases para el desarrollo simplificado de componentes EJB. Sin embargo, estas clases cómodas producen una hebra no gestionada que el objeto WeakReferenceMonitor utiliza para la limpieza.
Agrupación de hebras
WebSphere Application Server soporta la utilización de la clase WorkManagerTaskExecutor de Spring Framework para ejecutar el trabajo asíncronamente.
La clase WorkManagerTaskExecutor utiliza agrupaciones de hebras gestionadas por el servidor de aplicaciones y delega a una instancia de WorkManager configurada. Para obtener información sobre cómo configurar un gestor de trabajo, consulte los temas relacionados.
No utilice otras clases TaskExecutor que se proporcionan con Spring Framework, porque pueden iniciar hebras no gestionadas.
<bean id="myTaskExecutor"
class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
<property name="workManagerName" value="wm/default" />
</bean>
Planificación
Puede utilizar el paquete de planificación de CommonJ WorkManager en Spring Framework para trabajar con hebras gestionadas por el servidor de aplicaciones. Evite utilizar otros paquetes, por ejemplo el planificador Quartz o el temporizador del JDK (Java SE Development Kit), porque pueden iniciar hebras no gestionadas.