geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aaron Mulder" <>
Subject Re: [Discussion] Removal of TransactionContextManager
Date Mon, 31 Jul 2006 23:51:36 GMT
+1, so long as the threads are still coming from a Geronimo thread
pool under the covers (even if its hidden by the concurrent executor
interface).  I'd really like to have more components using Geronimo
thread pools rather than fewer, since right now there's really no way
to view or manage all the threads in the server.


On 7/31/06, Dain Sundstrom <> wrote:
> <history length="too long">
> About a week ago there was a discussion on the OpenEJB mailing list
> regarding the TransactionContextManager.  In OpenEJB 3 we removed the
> use of the TCM from Geronimo and replaced it with just a
> javax.transaction.TransactionManager.  This brought all of the
> openejb containers into alignment.  The other big motivation was to
> ease the integration of OpenEJB and third part libraries,
> specifically Spring.  The problem with the TCM is that if you use it
> you can't use the TM directly since the TCM needs to know about all
> TM calls.  Additionally, to use the TCM you must demarcate all
> changes in "component context" by starting an unspecified transaction
> context.  This is all quite invasive and made OpenEJB hard to use in
> Spring or plain old Tomcat.
> That was all fine and good for OpenEJB 3, but as it turns out there
> is a desire to keep the OpenEJB 2 and 3 code aligned as much as
> possible, so a discussion started around how to backport the changes
> to 2.  We determined there were two options:
> 1) wrap the TCM with a class that implements TM but delegates to the
> TCM - this would be tricky to get working and there is always the
> problem of demarcating the unspecified transaction context
> 2) remove the TCM from Geronimo entirely - this could be a lot of work
> After a quick look at the first option, I decided to try option two.
> It turned out to be a lot easier than I thought since, the biggest
> user of TCM was OpenEJB and I had already pulled it out of OpenEJB.
> I also think I have become the master of using the IntelliJ refactor
> tools and was able to remove the code without too much hand tweaking.
> </history>
> I have checked the fruits of this effort into
> repos/asf/geronimo/branches/dain/notcm and there is a matching
> OpenEJB branch that is checked out with maven m:co.  I have not
> updated the m2 build yet, as it was finalized during this work.
> For those of you that are following the Jencks project, which wraps
> the Geronimo transaction and connector modules with Spring bean
> factories, I have created a branch there also, which contains a
> massive simplification due to the refactors in the removal of the
> Geronimo TCM.  Here are some fun examples from that project:
> resources/org/jencks/samples/outbound/jencks-tranql.xml?r=112
> resources/org/jencks/spring-request-reply-jta.xml?r=112
> So what does everyone think about removing the TCM in general?  After
> that I think we may want to discuss the specifics of my branch.  I
> may have gotten too refactory happy :)  Details on the specific
> changes I made follow:
> TransactionContextManager
> -------------------------
> Removed TransactionContextManager and replaced all uses with a plain
> old TransactionManager
> Removed all code from web containers, app client and timer that was
> simply demarcating an unspecified transaction context, which is no
> longer needed
> TransactionManager
> ------------------
> Merged XATerminator portion of TCM into GeronimoTransactionManager
> which is a subclass of TransactionManagerImpl
> Improved tx thread association code so we can throw an error if
> someone attempts to resume a tx associated with another thread
> Added TransactionManagerMonitor which is used by the connection
> tracker to know when a transaction context has changed
> UserTransaction
> ---------------
> TransactionManagerImpl now implements UserTransaction to ease
> integration with third party libraries such as Spring
> Removed OnlineUserTransaction since it was only really used by
> OpenEJB and it has it's own UserTransaction implementation
> Web containers now use GeronimoUserTransaction which is an always on
> wrapper around a transaction manager
> Third party support
> -------------------
> Moved use of ServerInfo from HOWLLog to HOWLLogGBean so it can be
> more easily use by third party libraries
> Moved connector related transaction data to connector module
> Replace use of Geronimo's thread pool with a concurrent executor
> -dain

View raw message