我有一个接受多部分请求的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:驱动器中创建的文件