gpt4 book ai didi

java - JBoss - 用户事务未启动

转载 作者:行者123 更新时间:2023-11-29 06:43:00 25 4
gpt4 key购买 nike

在下面的代码中,当我尝试调用 beginTransaction 方法时会引发空指针异常。我以为 JBoss 会初始化我的事务……显然不是:\

我错过了什么?

JBoss 5.1.0.GA
联合行动计划 1
JDK 6



import javax.annotation.Resource;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import javax.transaction.UserTransaction;

public abstract class AbstractDAO {
@PersistenceUnit(unitName = "miniDS")
protected static EntityManagerFactory emf;
@Resource
protected UserTransaction t;

public AbstractDAO() {

}

protected void beginTransaction() throws Throwable {
t.begin();
}

protected void commitTransaction() throws Throwable {
t.commit();
}

protected void rollbackTransaction() throws Throwable {
t.rollback();
}
}

最佳答案

您的 AbstractDAO 似乎没有被管理。注入(inject)仅适用于容器管理的对象。这不是特定于 UserTransaction 的注入(inject),而是一般的注入(inject)。结果 emf 也为空。 Java EE 规范列出了以下能够使用注入(inject)的类:

  • Servlet:servlet、servlet 过滤器、事件监听器
  • JSP:标签处理程序、标签库事件监听器
  • JSF:作用域托管 bean
  • JAX-WS:服务端点、处理程序
  • EJB:bean、拦截器
  • Managed Beans:托管bean
  • CDI:CDI 风格的托管 bean、装饰器
  • Java EE 平台:主类(静态)、登录回调处理程序

可能的解决方法是将资源注入(inject)移动到托管类或使用 JNDI 查找。

关于java - JBoss - 用户事务未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9188946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com