Как работать одновременно с JDBC и CMT в Jboss 7 с CMT?

#jpa #jdbc #jboss7.x #ejb-3.0 #java-ee-6

Вопрос:

У меня есть устаревшее приложение Jboss, которое использует много чистого кода JDBC с программно управляемыми транзакциями, которые выглядят следующим образом:

 DataSource ds = (DataSource) InitialContext.doLookup(name); Connection con = ds.getConnection(); con.setAutoCommit(false); PreparedStatement stmt1 = con.prepareStatement(...); PreparedStatement stmt2 = con.prepareStatement(...);  try{  stmt1.execute();  stmt2.execute(); }catch(Exception){  connection.rollback(); } connection.commit();  

Теперь я хочу ввести код на основе CMT/EntityManager. Я могу создать на стороне DAO с EntityManager, полученным с помощью @PersistenceContext, и перенести ссылку на него в код выше такого кода между попыткой/уловом, чтобы стать следующим:

 try{  stmt1.execute();  MyEntity entity = new MyEntity();  myDAO.persist(entity);  stmt2.execute(); }catch(Exception){  connection.rollback(); } connection.commit();  

но проблема здесь в том, что код myDAO.persist(entity); будет выполняться в отдельной транзакции, и в случае stmt2.execute() сбоя сохраненный экземпляр MyEntity не может быть откатан. Провести рефакторинг всего устаревшего кода, чтобы сделать его основанным на CMT, невозможно, так как это огромный объем кода. Если кто-то решил такую проблему, будет очень признателен за совет, как я могу объединить эти два подхода для работы в одной транзакции?