Turns out that approach 1 works and it's just I need to replace:
@TransactionAttribute(TransactionAttributeType.REQUIRED)
with
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
Also I have some problem with parsing the xml files. Beware of the lazy fields and BeanUtils.cloneBean.