I am working on a JSF web application. The service layer is developed using stateless session beans. These stateless beans are injected to managed beans using CDI.

I know that to manage transactions in stateless beans, I can use either container managed transactions or bean managed transactions. Also all the public methods in a stateless bean are by default in container managed transactions.

So my questions are:

Which is the preferred approach for transaction management in stateless bean - container managed or bean managed?

Is it advisable to have both bean managed and container managed transaction beans in service layer?

Is it possible to use both container managed and bean managed transactions in a single bean? If possible is it advisable?

Please let me know your suggestions...