I haven't read the book, but the three basic transaction models are

- EJB/CMT: You have EJB components (session beans, MDBs) and you call these EJB 
components from whatever other code. By default, a system transaction will 
begin when an EJB method is called and it will be committed when that method 
returns. The transaction propagates into other calls, e.g. if your EJB calls 
another EJB. You can use annotations or XML metadata to change this default 
transaction assembly. Seam can emulate this behavior with the Seam-specific and 
proprietary @Transactional annotation on POJOs, then Seam acts as the container 
that manages transaction boundaries.

- JTA: You can call the JTA UserTransaction API in your application code 
somewhere and control the begin and end of a transaction programmatically.

- Seam-managed JTA: Seam will call the JTA API for you automatically during the 
JSF lifecycle, meaning it will wrap two transactions around a JSF request. One 
transaction starts when the request hits the server and is committed when 
INVOKE APPLICATION is complete. The second transaction spans only the RENDER 
RESPONSE phase. This is an optimized and recommended pattern in a Seam/JSF 
application. All EJBs and indeed any POJOs you call during that request are 
participating in that transaction. To enable it, configure JSF with the 
TransactionalSeamPhaseListener.

I recommend the last option, since it works with whatever components you 
execute and it is good from a scalability perspective. Also, you don't need to 
write any code or use any annotations with it.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4039495#4039495

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4039495
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to