I've read section 10 "Events" of the CDI 2.0 early draft, and have a couple
of quick questions about asynchronous
observers.
I'd like to understand how these work with transactions. (I'm referring to normal
observer methods here, not the rather
specialised "transactional observer methods")
10.5 states "...An observer method may not directly initiate, commit or rollback JTA
transactions."
This wording is unchanged from CDI 1.1. What is the reason for this restriction? I think
it might be useful if an
observer method was able to use the JTA API to start and end a transaction, especially
when the observer method is being
called asynchronously.
10.5.3 "If the observer method is asynchronous, it is called in... a new transaction
context...".
What does "a new transaction context" mean? Does this mean that the container
will start a transaction before calling
the observer method? If so, it would be useful if the application could disable this. If
not, it would be useful if the
application could itself use the JTA API to start and end a transaction.
Nigel