[
http://jira.jboss.com/jira/browse/JBSEAM-1144?page=comments#action_12358891 ]
Michael Youngstrom commented on JBSEAM-1144:
--------------------------------------------
I agree we don't want to provide another transaction interface that is why this patch
does not introduce a new proprietary interface. It simply provides an implementation of
UserTransaction. Seam already is dependent upon 2 Tx APIs JTA and EjbContext (container
managed tx). All this patch does is combine the 2 apis into a single implementation of
UserTransaction and exposes it as a Seam Component. I did add a utility flag
"isJoinable" but that is it. :)
I agree that JTA is a fine tx api. However, the biggest problem I have with the strict
use of JTA in Seam it's dependence on JNDI. There may be many great JTA runtimes
available but they become a beast (with the exception of microcontainer) to configure when
it comes to trying to correctly expose them with JNDI not to mention your datasources that
must be wrapped and exposed through JNDI as well.
As a side effect because seam components are overridable it allows for wrapping of other
transaction APIs or even easier wrapping of other JTA implementations without the
dependence on JNDI.
I think this patch provides the added benefits helping make seam applications
more lightweight,
more portable,
easier to configure,
less thirdparty layers between code and database, and
less dependencies for projects who want to deploy on a simple web container.
And does it all without providing any new Transaction interfaces.
Make org.jboss.seam.util.Transactions a seam component
------------------------------------------------------
Key: JBSEAM-1144
URL:
http://jira.jboss.com/jira/browse/JBSEAM-1144
Project: JBoss Seam
Issue Type: Feature Request
Components: Core
Affects Versions: 1.2.1.GA
Reporter: Michael Youngstrom
Fix For: 1.3.0.BETA1
Attachments: seam-tx-2.zip, seam-tx.patch
I know this is probably a loaded issue but please hear me out. :) It would be nice if
org.jboss.seam.util.Transactions was replaced with a Seam Component just like everything
else in Seam. This would allow for pluggable Transaction Management providers and pave
the way for support for Spring Managed Transactions, JPA Local Transactions, and true
Hibernate Local Transactions. This will allow Seam applications to run without a
dependency on microcontainer in tomcat and allow for tighter Framework integration with
spring and others.
I would personally be more than willing to do the work of making the an initial
JTATransaction component(s) as a replacement for org.jboss.seam.util.Transactions and
would also create a SpringTransaction component as a proof of concept for extending the
Transaction component.
One problem I can see off hand is we may have to interact with a transaction in some
places where a Seam ApplicationContext is not available. However, I wonder if confining
Seam transactions to a seam call might help simplify matters anyway? For example
transaction cleanup could take place in the @Destroy of the transaction component instead
of in the ExceptionFilter?
Also, this wouldn't be looked at as a JTA replacement but rather a service
abstraction. Just like any other java webapp if you're using enterprise services such
as EJBs or JCA JTA would be required. if you're running on tomcat or some other
simple web container a resource local transaction manager (Spring's abstraction,
JPA's, or Hibernate's) can be used.
I'm sure there are tons of other problems I'm not looking at but worst case
scenario this issue would be a great place to document them and to refer rejected feature
requests. (for example JBSEAM-1118)
What do you think?
Mike
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira