Gerenciamento de Encadeamento e o Spring Framework
Use as informações nas seções a seguir para evitar potenciais problemas com encadeamentos não gerenciados.
Encadeamentos Não Gerenciados
- O servidor de aplicativos não reconhece encadeamentos não gerenciados.
- Os encadeamentos não gerenciados não têm acesso às informações contextuais do Java™ EE
- Encadeamentos não gerenciados podem usar recursos sem ser monitorados pelo servidor de aplicativos.
- Encadeamentos não gerenciados podem afetar adversamente as funções do servidor de aplicativos como o encerramento organizado ou a recuperação de recursos falhos.
- Um administrador não pode controlar o número de encadeamentos não gerenciados ou seu uso de recursos.
- registerShutdownHook
Evite usar a classe AbstractApplicationContext do Spring Framework e suas subclasses. Essas classes incluem o método público registerShutdownHook,, que cria um thread e o registra na máquina virtual Java ( JVM ) para ser executado no desligamento, a fim de fechar o contexto do aplicativo. Como alternativa, um aplicativo pode usar os avisos de ciclo de vida recebidos do contêiner de servidor de aplicativos para chamar o método de fechamento explicitamente no contexto de aplicativos.
- WeakReferenceMonitor
O Spring Framework fornece classes de conveniência para desenvolvimento simplificado de componentes EJB. Porém, essas classes de conveniência produzem um encadeamento não gerenciado que o objeto WeakReferenceMonitor usa para limpeza.
Conjunto de Encadeamentos
WebSphere® Application Server suporta o uso da classe Spring Framework WorkManagerTaskExecutor para executar trabalhos de forma assíncrona.
A classe WorkManagerTaskExecutor usa conjuntos de encadeamentos que são gerenciados pelo servidor de aplicativos, e delega a uma instância WorkManager configurada. Para obter informações sobre a configuração de um gerenciador de trabalho, consulte os tópicos relacionados.
Não use outras classes TaskExecutor que são fornecidas com o Spring Framework, porque elas podem iniciar encadeamentos não gerenciados.
wm/default:<bean id="myTaskExecutor"
class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
<property name="workManagerName" value="wm/default" />
</bean>
Planejamento
É possível usar o pacote de planejamento CommonJ WorkManager no Spring Framework para trabalhar com encadeamentos que são gerenciados pelo servidor de aplicativos. Evite usar outros pacotes, como o planejador do Quartz ou o Cronômetro no Java SE Development Kit (JDK), porque eles podem iniciar encadeamentos não gerenciados.