Search code examples
transactionsjakarta-eeejb-3.0jtajts

Transactions (Atomicity property) in EJB 3 apply only to Database Operations - Am I right?


I know that transactions could be used to bring about atomicity.

Like if methodOne() methodTwo() methodThree() are clubbed into one transaction, if any of the method fails, the entire operation is rolled back. A rollback would result in a database-level rollback and as a result the database would be brought to a state, as it was before the transaction.

But what if the methods made changes to state-variables or static-variables or wrote to some files in the filesystem ? My understanding is that a "rollback" doesn't apply for such non-database modifications and that those changes are not undone. Is my understanding right ?


Solution

  • Transactions (Atomicity property) in EJB 3 apply only to Database Operations - Am I right?

    No you're not. Transactions apply to transactional resources, the Java EE specification recognizing three types of transactional resources: JDBC databases, JMS destinations, and "other transactional services accessed through JCA".

    But what if the methods made changes to state-variables or static-variables or wrote to some files in the filesystem?

    Those are not transactional resources (unless you're writing to the file system through a JCA connector for the later).