[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Especificação vaga e resource leaks



    Oi, pessoal.
   
    Após rodar alguns testes, comecei a me tocar do seguinte: estou 
registrando resources com as minhas transações mas, em momento algum, 
estou chamando o método TransactionImpl#delistResource. Isso significa 
que meus resources ficam lá, registrados em transações mortas, 
possivelmente causando resource leaks (acho que isso não acontece, 
afinal de contas tem aquele método instanceDone que é chamado pelo 
TransactionImpl e remove as referências para transações daquela tabela 
gid->TransactionImpl do TxManager, efetivamente deixando o grafo inteiro 
de referências da transação morta para o garbage collector).
   
    A especificação é bastante vaga a respeito de quem é responsável por 
chamar o delistResource - eles se limitam a dizer que a responsabilidade 
é do servidor de aplicação. Examinando um pouco o código, percebi que a 
única classe no JBoss que chama esse método é a classe 
org.jboss.resource.connectionmanager.TxConnectionManager.

    Bem, no meu caso, acho que o equivalente ao TxConnectionManager 
seriam as próprias classes responsáveis por fazer o enlist (poderiam 
fazer o delist após o commit/rollback da transação). Parece correto 
isso? Como vocês estão tratando esse problema?

    Abraços,

       Giuliano