On Sep 25, 2009, at 5:20 PM, David Blevins wrote:
On Sep 24, 2009, at 2:27 PM, David Blevins wrote:
On Aug 24, 2009, at 12:53 AM, Jean-Louis MONTEIRO wrote:
REQUIRED -> REQUIRES_NEW
REQUIRED -> NOT_SUPPORTED
Hey Jean-Louis, do you think you'll need the REQUIRED ->
REQUIRES_NEW scenario? Technically neither of the above is legal
or portable, but I think we can support REQUIRED->NOT_SUPPORTED
just fine, but the other may be a tricky rule to bend code wise.
The code I'm working on now associates a Transaction with the
o.a.o.core.stateful.Instance object (basically a new field) and
uses that to determine if you are attempting to use the instance
outside the transaction. Going from a transaction state to a non
transaction state is doable. Going from a transaction state to
another transaction state (essentially an nested transaction) would
require a bit of fanciness.
Grr. Got something that works, but now am running into an issue
with one of the more obscure restrictions that you can't remove a
bean via its EJBObject or EJBHome interface if it is in a
transaction. It's breaking one of our tests and I know it will
break the TCK.
Alright, we're good on this one now.
We now track a transaction object in the Instance which is checked to
prevent access outside the transaction. It's actually a stack of
Transaction objects.. more on that next.
We also have some special logic that allows the client using the
instance in the transaction to bend the rules and invoke the bean as
it wishes (it can still invoke REQUIRES_NEW and NOT_SUPPORTED
methods). In this scenario the instance will still be considered in
transaction stay locked to other threads.
Going to push new snapshots. On the Geronimo side we'll want to kick
off a new tck run. If that looks good, we can finally cut this release.
-David