Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 918749
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T18:25:42+00:00 2026-05-15T18:25:42+00:00

Seam advises using an Extended persistent context in a Stateful Session Bean, in order

  • 0

Seam advises using an Extended persistent context in a Stateful Session Bean, in order to have Seam-managed persistence.

I am not clear on whether the above advice casts any implications on the way we want to have Seam-managed transactions. This is because our architecture is different. We have the following persistence context in a Stateless EJB:

@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class CrudServiceBean implements CrudService {

    @PersistenceContext(type = PersistenceContextType.TRANSACTION)
    private EntityManager em;
...
}

Our DAOs invoke the above CrudServiceBean are Stateless EJBs (some of them are also Seam components) with @TransactionAttribute(TransactionAttributeType.REQUIRED). So, our transactions are handled by the container (WebLogic) and not Seam.

However, we now need to satisfy the following scenario: We need to have a front-end Seam component (non-EJB) invoke multiple DAO (EJB) methods and wrap all of them in a single transaction. If I understand correctly, we need to have Seam-managed transactions.

Can we have Seam-managed transactions as in the scenario I described, without having a Seam-managed persistence context? Or are the two irrelevant?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T18:25:43+00:00Added an answer on May 15, 2026 at 6:25 pm

    As said

    We need to have a front-end Seam component (non-EJB) invoke multiple DAO (EJB) methods and wrap all of them in a single transaction

    But

    Our transactions are handled by the container – Also called Container Managed Transaction (The container Takes care of calling begin and commit method used by each underlying resource-manager Transaction)

    The first issue is that you have a scenario where a non-EJB invokes multiple DAOs, each one an EJB. You could think of

    @Name("nonEjbComponent")
    public class NonEjbComponent {
    
        private @In DaoEjbComponent daoEjbComponent;
        private @In OtherDaoEjbComponent otherDaoEjbComponent;
        private @In AnotherDaoEjbComponent anotherDaoEjbComponent;
    
        private @In UserTransaction userTransation;
    
        public void wrapperAllOfThem() {
    
             userTransation.begin();
    
                 daoEjbComponent.save(someEntity);
                 otherDaoEjbComponent.update(otherEntity);
                 anotherDaoEjbComponent.delete(anotherEntity);
    
             userTransation.commit();
    
        }
    
    }
    

    But the Java EE specification 3.0 states

    The enterprise bean with Either bean-managed or container-managed transaction demarcation must be a session bean or a message-driven bean.

    So you can not use the scenario above. And because all of your DAOs are using container-managed transactions, the Java EE specification does not allow you to use container-managed and bean-managed Transaction at the same time

    So the solution is

    Wrap all of the DAOs in an EJB Stateless session bean whose transaction is container-managed. It will behave like a delegate component

    @Stateless
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    @Name("wrapperStateless")
    public class WrapperStatelessImpl implements WrapperStateless {
    
        private @In DaoEjbComponent daoEjbComponent;
        private @In OtherDaoEjbComponent otherDaoEjbComponent;
        private @In AnotherDaoEjbComponent anotherDaoEjbComponent;
    
        public void wrapperAllOfThem() {
    
            daoEjbComponent.save(someEntity);
            otherDaoEjbComponent.update(otherEntity);
            anotherDaoEjbComponent.delete(anotherEntity);
    
        }
    
    }
    

    And inside your non-EJB component, use

    @Name("nonEjbComponent")
    public class NonEjbComponent {
    
        private @In WrapperStateless wrapperStateless;
    
        public void wrapperAllOfThem() {
            wrapperStateless.wrapperAllOfThem();
        }
    
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 460k
  • Answers 460k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer To call a method of a generic type object you… May 15, 2026 at 11:54 pm
  • Editorial Team
    Editorial Team added an answer You need to escape your % signs by doubling them:… May 15, 2026 at 11:54 pm
  • Editorial Team
    Editorial Team added an answer All of the options you mention are valid. Which you… May 15, 2026 at 11:54 pm

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.