Overview
XADisk (pronounced 'x-a-disk') enables transactional access to existing file systems by providing APIs to perform file/directory operations. With simple steps, it can be deployed over any JVM and can then start serving all kinds of Java/JavaEE application running anywhere.
XADisk supports both normal and distributed (XA) transactions, is scalable through clustering, can recover from application crashes, resolve deadlocks and provides many other useful features. It can be used in a variety of Java environments:
- XADisk Jar - Deploys over any JVM, including standalone Java applications, Web Servers, JavaEE Servers.
- XADisk Rar - Fully JCA compliant and deploys over any JavaEE Server.
Features |
High Level View |
Success Stories |
Ask/Discuss |
JIRA |
Subversion |
Licensing
Features
- Atomicity
- for a given transaction, either all IO operations get committed or none
- XA Transactions - one XA transaction can involve any/all of
- Databases, JMS, any other XA enabled Resources
- one/more XADisk instances running across different filesystems/machines
- Fully Compliant JCA 1.5 Resource Adapter
- Comprehensive Transaction System
- crash recovery - maintains data integrity across application crashes and re-deployments
- transaction isolation - keeps multiple concurrent transactions isolated through a locking mechanism
- deadlock detection and recovery
- transaction timeout
- Clustering for Scalability
- XADisk instances distributed across machines and operating over a distributed file system
- Implemented using Java NIO
- I/O Operations
- Files - create, delete, move, copy, truncate, read, write, exists, getLength
- Directories - create, delete, move, list children, exists
- Supports Remote Invocations
- Client Applications
- JavaEE applications (servlets, session beans)
- Standalone Java applications
- Server side Java applications - e.g. web applications running on Tomcat
- Messaage Driven Beans
- MDBs can register to receive messages from XADisk when changes in specified files/directories take place
Ask/Discuss
Ask questions and discuss anything related to XADisk at
the Discussion Group.
Discovered a Bug? Share it -
- On JIRA (needs a java.net login).
- Through Email.
Suggest an enhancement -
- On JIRA (needs a java.net login).
- Through Email.
Contact
For all kinds of queries, you can also write to go.xadisk.
Contributing
There are numerous ways in which you can contribute:
- Suggestions
- Send your suggestion for improvements in anything related to XADisk (design, implementation, documentation, APIs, processes, website etc).
- Raise Bugs/Enhancements
- Share information about the bugs you discovered or enhancements you think can be great. Log them on JIRA or send a note.
- Share your Experience
- Send the success story and let others know how XADisk was helpful through the success-stories page.
- If you find it exciting, spread the word and make others aware. Write an article, blog, or respond in a relevant forum thread.
Acknowledgements
Below is a list (alphabetically ordered) of people who have helped XADisk in their own ways. Their contributon includes useful suggestions, new usecases, issue identification, product design, knowledgebase and more.
Abhilekh Kumar Agarwal | Andreas Wurm | Anej Bansal | Cameron Rochester | Christoph Beck | Daniel Scheibe | Divya Gupta | Dnyanesh Sonavane | Eugen Galperin | Filippo Dipisa | Geert van Leemputten | Gili Tzabari | Hermann Matthes | Janos Kocsi | Jaroslav Holubec | Johann Mayer | John Babbidge | Julius Blank | Kane Bonnette | Kannan Vairavan | Luciano Leggieri | Luiz Augusto | Manish Kumar | Martijn van Tilburg | Martin Baumgartner | Mathieu Rozieres | Mohit Singal | Nick Nadgauda | Olaf Eschenbruch | Pharoz (email-alias) | Phil Merry | Poorna Chandran | Po-Ting Huang | Rajeev Gupta | romaerzhuk (java.net alias) | Sergei Bardas | Shreyas Kumari | Simon Dierl | Srimant Misra | Stelios Gerogiannakis | Tomas Fecko