You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Raymond Feng <en...@gmail.com> on 2007/11/06 00:14:57 UTC

How to enlist transactional resources?

Hi,

To implement the transaction policy, one of the key aspects is to enlist 
(and delist) the transactional resources when they are accessed in the 
context of a transaction.

The draft SCA transaction policy spec claims that it's out of scope:
"The means by which a transactional resource manager (RM) is accessed. These 
include, but are not restricted to:
       * abstracting an RM as an sca:component
       * accessing an RM directly in a language-specific and RM-specific 
fashion
       * abstracting an RM as an sca:binding"

Basically, there are two approaches:

1) Make the runtime aware of the transactional resources and perform 
automatic enlisting/delisting.
2) Expose transaction APIs (such as JTA) to the component developers and 
have them do the enlisting/delisting.

I think 1) is the way to go because 2) exposes the technology-APIs to 
business component developers and it's very complex to handle. So now the 
question is how we achieve 1).

In a JEE runtime, the resources are usually administrated objects (such as 
DataSource, JMSConnectionFactory and other JCA resources) and the 
association of transactional resources with transactions are handled by the 
application server. The JCA spec also defines a contract on how the resource 
adapter works with the transaction manager.

Other frameworks such as Spring have AOP-style transactions. 
(http://static.springframework.org/spring/docs/2.0.x/reference/transaction.html).

I'm starting to look into the possibility of abstracting RMs as an 
implementation type.

Please throw out your ideas ...

Thanks,
Raymond 


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org