Por que o método do bean de sessão lança EjbTransactionRolledbackException quando RuntimeException foi acionado

Estou tentando persistir a entidade com validação de restrição, quando invocar persistir - há restrições que são lançadas e o chamador obtémEjbTransactionRolledbackException... então eu tento chamar a validação explícita e jogarConstraintViolationException/RuntimeException e ainda assim o chamador recebeEjbTransactionRolledbackException... quando eu jogoMyException estendeException - o chamador recebeMyException

Mesmo quando eu chamo explícitosc.setRollBackOnly ainda aconteceu :(

Este não deve ser o comportamento.

o que está acontecendo?

Configuração:

Netbeans 6.9.1 Glassfish 3.0.1 JPA 2.0 (EclipseLink) EJB 3.1

Obrigado!!!

@Stateless
public class My {

@PersistenceContext
EntityManager em;

@Resource
Validator  validator;

public Order checkout(Order order) {
    Set<ConstraintViolation<Order>> set = validator.validate(order, Default.class);

    if (!set.isEmpty()) {
        sc.setRollbackOnly();
        //throw new ConstraintViolationException(new HashSet<ConstraintViolation<?>>(set));
        throw new RuntimeException();
    }

    this.em.persist(order);
}

questionAnswers(1)

yourAnswerToTheQuestion