Java EE 6, CDI and Vaadin: no TX started?

I’ve followed this guide, using option 2:

Inside my Application class, I have an @Injected Instance, where DAO is a local business interface lots of my EJBs implement. I use this approach to basically autodiscover all session beans in my application, since an Instance is also an Iterable.

I’ve wired a Vaadin button up to invoke a particular DAO from this Instance. The DAO is non-null and is invoked. So far so good.

The DAO implementation is a stateless session bean that uses a @PersistenceContext. The @PersistenceContext-annotated EntityManager is non-null. Everything is still good.

I invoke a business method on the DAO implementation that interacts with the EntityManager. I get a javax.persistence.TransactionRequiredException when I do so, informing me that no transaction is active.

This is despite the fact that the EJB in question is a stateless session bean with no additional transaction attributes defined, so the default transactionality applies, viz. TransactionAttribute.REQUIRED.

Is there something special about the way that Vaadin interacts with the Java EE machinery in such a setup that causes a transaction not to be started?

I would like to continue using CDI and Vaadin together–instead of, for example, falling back on @EJB annotations–but something is very odd here.