在ejbs中回滚事务

时间:2014-03-14 03:50:25

标签: java jboss ejb-3.0

我有一个接受多部分请求的rest类,将文件保存在特定位置并调用ejb服务以在我们的数据库中保存所以hash。

流程如下

休息 - >服务 - >道

在我的服务类中,我正在注入dao。由于某种原因,dao未初始化并注入服务类,我得到一个空指针异常。

在这种情况下应删除该文件,因为ejbs具有事务管理功能。但该文件未被删除。 我是否还需要在容器中的某处启用事务管理?

我的休息班不是ejb。是因为我的rest类不是ejb,这就是为什么文件没有被删除?

BTW我正在使用jboss eap 6.1

有人可以帮忙吗?

为简单起见,我编写了一个新代码,其原始代码几乎与我的代码相同

@Stateless
@Local
@TransactionManagement
public class ImportUpgradeServiceImpl implements ImportUpgradeService {

    @Inject
    private UpgradePackageDao upgradePackageDao;

    @Override
    public boolean savePackage() {

        File file = new File("d:\\ejbtest.log");

        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

        upgradePackageDao.savePackageHash(null);

        return false;
    }

}

以下是我的DAO

public class UpgradePackageDaoImpl implements UpgradePackageDao {

    @Override
    public void savePackageHash(String hash) {

        throw new RuntimeException("cannot save");
    }

}

我使用@TransactionManagement运行ejb而没有@TransactionManagement。这两种情况我仍然可以看到" ejbtest.log"在我的D:驱动器中创建的文件

0 个答案:

没有答案