@Resource UserTransaction为Null

时间:2015-06-26 11:30:22

标签: java jta

我有Restful Webservice实现。通过注入@Resource使用UserTransaction对象维护事务的位置。我可以看到UserTransaction对象似乎是null。这背后的原因可能是什么?

import javax.transaction.UserTransaction;

@Path("User")
    public class UserImpl { 

        @Resource
        private UserTransaction tx;

        @Context
        HttpServletRequest httpServletRequest;

     public void doAction() {
          try {
            tx.begin();
            // do the work...
          } finally {
            tx.commit();
          }
       }
    }

2 个答案:

答案 0 :(得分:1)

背后的原因是UserTransaction只能注入支持事务的托管组件。支持Java EE中事务的常用组件是EJB bean。使用UserImpl为您的@Stateless课程添加注释。 UserTransaction表示您要手动管理您的交易,因此您必须告诉容器@TransactionManagement。像这样:

@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
@Path("User")
public class UserImpl

答案 1 :(得分:0)

您的UserImpl似乎不是managed注入仅适用于容器管理对象。此问题并非特定于注入UserTransaction,而是注入一般情况。结果HttpServletRequest也为空。