I am using JavaEE7 and container managed transactions in my Project. Although i have @Transactional annotation on method, i am getting "Transaction must be running" exception. Code seems as following:
@Transactional(Transactional.TxType.MANDATORY)
public void myMethod(Project project) {
final ObjectIdentity objectId = new ObjectIdentityImpl(project);
final Sid sid = new PrincipalSid(SecurityContextHolder.getContext().getAuthentication());
final Permission p = BasePermission.ADMINISTRATION;
MutableAcl acl = null;
try {
List<Sid> sids = new ArrayList<>();
sids.add(sid);
acl = (MutableAcl) aclService.readAclById(objectId, sids);
} catch (Exception ex) {
acl = ((MutableAclService) aclService).createAcl(objectId); // This line causes exception
}
acl.insertAce(acl.getEntries().size(), p, sid, true);
aclService.updateAcl(acl);
}
What is missing in this code, that transaction does not begin?
Kind regards,
Bilal