我有一个带有 webservlet 注释的 java ee 7 servlet。我已将 servlet 的方法之一标记为 @Transactional。还为 servlet 提供了一个具有持久性上下文的实体管理器。
该方法仅使用注入的实体管理器并保留作为参数传入的实体。
此方法在处理 http 请求时从 servlet 调用。glassfish4 抛出一个异常,指出没有可用的事务。
我使用该方法定义了一个简单的托管 CDI bean,并在其上添加了 @Transactional 注释并注入了实体管理器。
我将该对象注入到 servlet 并从 servlet 调用该方法,一切正常。em 被注入到 CDI bean,事务启动并且 em.persist 工作正常。
这是否意味着 servlet 对象的方法上不能有 @Transactional 注释?