Is there an open-source solution to XA-transaction

2019-02-04 01:37发布

问题:

Is it possible to make XA-transactional access to the file system in Java? I want to manipulate files within the boundaries of a transaction and my transaction must participate in a distributed transaction via JTA (so I guess the file system needs to be accesses as a XAResource). I don't need support for fine-grained read/write file access; treating each file as a record is good enough for my needs.

Does anybody know an open-source project that already does this? I don't feel like implementing this mess just to find out that it's already been done...

I heard some rumors that JBoss Transcations will add support for this (see for example this discussion) but couldn't find an official statement about this.

By the way, if you need transactional file access but don't require the transaction to participate in a 2-phase commit I recommend you have a look at Apache Commons Transaction

A nice article about the complexities involved can be found in here.

回答1:

Recently I solved exactly the same problem. Finally I used Bitronix with XADisk.

You can find more details in my blog post: JTA transaction manager – Atomikos or Bitronix?



回答2:

XADisk can get you what you are looking for. It's free and open source.



回答3:

At the time the JBoss Transactions intern started there was no XA capable file system driver for Java. I've not checked more recently, but nor have I seen any news about similar work. The work that Ioannis did during his internship is available if you want to use it, but not under active development at present. Unless you want to become an open source contributor :-)

At some point in the future when we have the time and/or customer demand we may roll this functionality into the product. Meanwhile it's at www.jboss.org/jbosstm/fileio/ and the original project discussion is at www.jboss.org/community/wiki/JBossTSProjects

Jonathan Halliday
JBossTS dev team



回答4:

At Atomikos we did this about 10 years ago but dropped the idea due to lack of demand.

We could resume our efforts if there is sufficient reason to do so.