Ficou claro que ao usar TransactionAttributeType.MANDATORY quem chama o DAO precisa ser um EJB! No caso os beans não são e é lançada exception....
Mas pq ao usar o padrão, TransactionAttributeType.REQUIRED, funciona? Já que os beans continuam não sendo EJBs e não existiu a necessidade de criação de uma camada service.