0 Replies Latest reply on Jan 16, 2007 2:04 PM by literadix

    Transactions over multiple session beans

    literadix

      Hi all !

      I have allrwdy postet this question to the Oreilly's book forum, but can not figure out how construct the following:

      I have multiple Entities (Entity1, Entity2, ..., EntityN) and have put on top of each entity a session bean (Entity1Dao, Entity2Dao, ..., EntityNDao). What I want to do is to hadle an update of entity1, entity2, entityn within one single transaction.

      Any exception during entity management should mark the just running transaction for rollback, so when an exception occured within Entity2Dao no data from Entity1 should persist. After the command flow has end, I would like to commit all changes (transaction commit).

      Is there any public example or some nice lad who can give me any source code how to manage this? If possible, I would like avoid to use stateful beans . The base code for my entity DAOs is like this:

      public abstract class GenericDaoImpl<T extends GenericDatabaseObject, PK extends Serializable> implements GenericDao<T, PK> {
      
       /** EntityManager */
       @PersistenceContext(type=PersistenceContextType.TRANSACTION)
       EntityManager manager;
      
       @TransactionAttribute(TransactionAttributeType.REQUIRED )
       public void save(T instance) {
       System.out.println(manager);
       manager.persist(instance);
       }
      
       @TransactionAttribute(TransactionAttributeType.REQUIRED )
       public void delete(T persistentObject) {
       manager.remove(persistentObject);
       }
      
      
      
      
      
      and the sub class for two specific session beans is as in following example:
      


      @Stateless(name = "AddressDao")
      @Remote(AddressDao.class)
      @Local(AddressDao.class)
      public class AddressDaoImpl extends GenericDaoImpl<Address, Long> implements AddressDao {
       // ...
      }
      
      @Stateless(name = "BookDao")
      @Remote(BookDao.class)
      @Local(BookDao.class)
      public class BookDaoImpl extends GenericDaoImpl<Book, Long> implements BookDao {
       // ...
      }
      





      I am using the latest JBOSS 4.0.5 and EJB3R9 and PersistenceContextType.TRANSACTION for the EntityManager.

      Thank you very much,

      Maciej A. Bednarz