1. set up a (geronimo) TransactionManagerProxy that wraps the other jta tm. It is designed to wrap an arbitrary jta tm.
2. use the geronimo UserTransactionImpl which knows how to manage the contents of TransactionContext
or
2.a replicate the TransactionContext interactions some other way
3. manage the InstanceContexts appropriately. See for instance JettyWebApplicationContext for the simplest example of what is needed. If you have some kind of container managed transactions, look at the openejb interceptors.
I haven't studied the JOTM code extensively but it appears to me that it includes most of the connection management code that is in TransactionContext and InstanceContext directly in the tm. If this is accurate, I think this is a questionable design in terms of component coupling.
Does this make sense?
thanks david jencks
On Tuesday, April 6, 2004, at 12:38 PM, Hamilton Verissimo de Oliveira (Engenharia - SPO) wrote:
Sorry for the annoying messages :-)
The ContainerTransactionContext holds an transaction manager and stores the
transaction created when begin() is invoked. If I'm using other TM
implementation (I'm using JOTM) ContainerTransactionContext wouldn't be
syncronized (except if I change all application code to use it, but that
won't be loosely-coupled, right?) ;-)
First possibility is using TransactionManagerProxy, then a begin() in my
other TM implementation could tell ContainerTransactionContext that
something happened.
Thats 'cause ContainerTransactionContext is a rendezvous point for the rest
of geronimo code, but the rest of my application uses directly the
UserTransaction/TransactionManager interfaces to begin/commit transactions.
Thoughts?
Cheers, hammett
