[jbossts-issues] [JBoss JIRA] (JBTM-981) Annotation support for transaction bridging

Paul Robinson (Updated) (JIRA) jira-events at lists.jboss.org
Mon Dec 12 04:50:09 EST 2011


     [ https://issues.jboss.org/browse/JBTM-981?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul Robinson updated JBTM-981:
-------------------------------

    Description: 
h2.Vision
The grand plan for this feature is to support near transparent bridging, end-to-end irrespective of what transport and component technology is used. The only caveat being that the transport and component technologies support a compatible transaction model. The basic case would be to always bridge when possible and for this scenario the absolute bare-minimum number of annotations should be used. More specific bridging requirements should be specified through annotations. 

h2.Example
This example shows what is considered the default scenario. It requires very few annotations. 

# Some client code (A JSF managed bean, for example) has a client to Service1 injected.
# The managed bean begins a transaction somehow.
# Service1 uses WSPolicy to state that it requires a WSAT transaction to be in place.
# Somehow (maybe during injection or when CXF handles the PolicyAssertion) the injected client stub for Service1 has the TXBridge and XTS interceptors configured.
# The managed bean invokes a method on Service1.
# The JTA transaction is bridged to a WS-AT transaction and the Web service request is made. 
# Service1 specified by an annotation that it requires a transaction (this was how the WS-Policy assertion was placed in the WSDL) and thus the XTS and TXBridge interceptors are inserted.
# The incoming WS-AT context is detected and bridged onto a JTA transaction.
# Service1 updates a DB and the associated XAResource is enlisted with the JTA transaction.
# Service1 then invokes the client of Service2.
# Service2 does not specify that it requires a WS-AT transaction, via a WS-Policy assertion. Therefore the client to Service2 must be annotated to specify that it requires WS-AT transaction out-flow.
# When invoking a method on the Service2 client it is detected that a WS-AT transaction is already in-place and this is used, rather than bridging again from JTA back to WS-AT.

Similar behaviour should occur for REST and JTS transactions also. 

h2.Advanced features
This section describes some of the more advanced features that could be supported. As these features deviate from the default scenario, they are all specified via annotations.

h1. Specific "bridged from" protocol
In the default scenario the transaction protocol bridged from is inferred by the transaction context present when the service is invoked. As a result any supported transaction will enact bridging. Some services may need to limit the types of transactions they bridge from. For example, only enable bridging if a WS-BA transaction is in place prior to service invocation. 

h1. Specific "bridged to" protocol
The default is to always bridge to JTA for incoming bridging. However, this could be inefficient if a Web service always invokes another Web service, both requiring WS-AT. There may be other situations where bridging to JTA is not appropriate.

h1. Disable bridging
The service may wish to prevent bridging altogether. For example if no transactional work needs to be done within a different type of transaction.

  was:
h2.Vision
The grand plan for this feature is to support near transparent bridging, end-to-end irrespective of what transport and component technology is used. The only caveat being that the transport and component technologies support a compatible transaction model. The basic case would be to always bridge when possible and for this scenario the absolute bare-minimum number of annotations should be used. More specific bridging requirements should be specified through annotations. 

h2.Example
This example shows what is considered the default scenario. It requires very few annotations. 

# A JSF managed bean has a client to Service1 injected.
# The managed bean begins a transaction.
# Service1 uses WSPolicy to state that it requires a WSAT transaction to be in place.
# Somehow (maybe during injection or when CXF handles the PolicyAssertion) the injected client stub for Service1 has the TXBridge and XTS interceptors configured.
# The managed bean invokes a method on Service1.
# The JTA transaction is bridged to a WS-AT transaction and the Web service request is made. 
# Service1 specified by an annotation that it requires a transaction (this was how the WS-Policy assertion was placed in the WSDL) and thus the XTS and TXBridge interceptors are inserted.
# The incoming WS-AT context is detected and bridged onto a JTA transaction.
# Service1 updates a DB and the associated XAResource is enlisted with the JTA transaction.
# Service1 then invokes the client of Service2.
# Service2 does not specify that it requires a WS-AT transaction, via a WS-Policy assertion. Therefore the client to Service2 must be annotated to specify that it requires WS-AT transaction out-flow.
# When invoking a method on the Service2 client it is detected that a WS-AT transaction is already in-place and this is used, rather than bridging again from JTA back to WS-AT.

Similar behaviour should occur for REST and JTS transactions also. 

h2.Advanced features
This section describes some of the more advanced features that could be supported. As these features deviate from the default scenario, they are all specified by annotations.

h1. Specific "bridged from" protocol
In the default scenario the transaction protocol bridged from is inferred by the transaction context present when the service is invoked. As a result any supported transaction will enact bridging. Some services may need to limit the types of transactions they bridge from. For example, only enable bridging if a WS-BA transaction is in place prior to service invocation. 

h1. Specific "bridged to" protocol
The default is to always bridge to JTA for incoming bridging. However, this could be inefficient if a Web service always invokes another Web service, both requiring WS-AT. There may be other situations where bridging to JTA is not appropriate.

h1. Disable bridging
The service may wish to prevent bridging altogether. For example if no transactional work needs to be done within a different type of transaction.


    
> Annotation support for transaction bridging
> -------------------------------------------
>
>                 Key: JBTM-981
>                 URL: https://issues.jboss.org/browse/JBTM-981
>             Project: JBoss Transaction Manager
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: TXFramework
>            Reporter: Paul Robinson
>            Assignee: Paul Robinson
>              Labels: TXFramework
>             Fix For: 5.0.0.M2
>
>
> h2.Vision
> The grand plan for this feature is to support near transparent bridging, end-to-end irrespective of what transport and component technology is used. The only caveat being that the transport and component technologies support a compatible transaction model. The basic case would be to always bridge when possible and for this scenario the absolute bare-minimum number of annotations should be used. More specific bridging requirements should be specified through annotations. 
> h2.Example
> This example shows what is considered the default scenario. It requires very few annotations. 
> # Some client code (A JSF managed bean, for example) has a client to Service1 injected.
> # The managed bean begins a transaction somehow.
> # Service1 uses WSPolicy to state that it requires a WSAT transaction to be in place.
> # Somehow (maybe during injection or when CXF handles the PolicyAssertion) the injected client stub for Service1 has the TXBridge and XTS interceptors configured.
> # The managed bean invokes a method on Service1.
> # The JTA transaction is bridged to a WS-AT transaction and the Web service request is made. 
> # Service1 specified by an annotation that it requires a transaction (this was how the WS-Policy assertion was placed in the WSDL) and thus the XTS and TXBridge interceptors are inserted.
> # The incoming WS-AT context is detected and bridged onto a JTA transaction.
> # Service1 updates a DB and the associated XAResource is enlisted with the JTA transaction.
> # Service1 then invokes the client of Service2.
> # Service2 does not specify that it requires a WS-AT transaction, via a WS-Policy assertion. Therefore the client to Service2 must be annotated to specify that it requires WS-AT transaction out-flow.
> # When invoking a method on the Service2 client it is detected that a WS-AT transaction is already in-place and this is used, rather than bridging again from JTA back to WS-AT.
> Similar behaviour should occur for REST and JTS transactions also. 
> h2.Advanced features
> This section describes some of the more advanced features that could be supported. As these features deviate from the default scenario, they are all specified via annotations.
> h1. Specific "bridged from" protocol
> In the default scenario the transaction protocol bridged from is inferred by the transaction context present when the service is invoked. As a result any supported transaction will enact bridging. Some services may need to limit the types of transactions they bridge from. For example, only enable bridging if a WS-BA transaction is in place prior to service invocation. 
> h1. Specific "bridged to" protocol
> The default is to always bridge to JTA for incoming bridging. However, this could be inefficient if a Web service always invokes another Web service, both requiring WS-AT. There may be other situations where bridging to JTA is not appropriate.
> h1. Disable bridging
> The service may wish to prevent bridging altogether. For example if no transactional work needs to be done within a different type of transaction.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jbossts-issues mailing list