But, wait, why is this private method in the Bean. I think a better approach for EJBs, is to not include logic and code inside the Bean, but to use a Plain Old Java Object that is called from the bean. Have both implement the same interface and just pass the call to the POJO through the Session Bean. Then set your Transaction in the Session Bean and the calls to the POJO will be wrapped in that Transaction. You can also always use JTA to make transactions in any piece of code, no matter where it resides.