Atomicidade de transações não relacionais [+AJUDA]
5 respostas
rollei
Lí pouquissima coisa sobre transações XA, então não sei muito sobre o assunto. Tenho um programa que vai deletar um arquivo de uma pasta FTP e copiar para outra pasta depois de efetuar um processamento.
Queria garantir a atomicidade dessa transação, com um rollback caso algum erro ocorra … algo parecido com as transaçãoes de entidade no hibernate. Alguem pode me indicar uma API e algum materil para eu estudar sobre a API?
Lí pouquissima coisa sobre transações XA, então não sei muito sobre o assunto. Tenho um programa que vai deletar um arquivo de uma pasta FTP e copiar para outra pasta depois de efetuar um processamento.
Queria garantir a atomicidade dessa transação, com um rollback caso algum erro ocorra … algo parecido com as transaçãoes de entidade no hibernate. Alguem pode me indicar uma API e algum materil para eu estudar sobre a API?
[]'s
Apenas lembrando o básico: o XA não vai resolver todos seus problemas de forma mágica. No seu caso, vc. vai ter que usar/implementar um adaptador XA para as operações no sistema de arquivos. Veja em http://java.sys-con.com/node/37798 alguma informação a respeito. O commons-transaction tb pode ser útil (http://commons.apache.org/transaction).
Mesmo com tudo isto implementado, ainda resta tratar os casos em que a transação ficar em estado indeterminado, o que é possível se houver problemas na segunda etapa do commit. Esta, na verdade, é a parte mais enrolada e depende da implementação do monitor de transações. Para uma idéia do que está envolvido, veja o caso do JBoss: http://www.jboss.org/community/docs/DOC-12436
Outra abordagem é desencanar de usar o XA para arquivos e implementar seu próprio mecanismo de rollback ou compensação…