2013-05-13 1 views
0

Я пытаюсь использовать MDB (onMessage) для запуска долгого SQL-запроса JDBC и экспорта вывода на диск.JBoss 4.2.2 MDB Long Running OnMesage

Я использую таймауты с onMessage, потому что подтверждение происходит после успешного завершения onMessage. В идеале я хотел бы сразу признать сообщение, поскольку обработка работы (экспорт запросов JDBC) имеет встроенную встроенную обработку повторных попыток/ошибок.

Есть ли подход с MDB onMessage, который позволит это немедленное подтверждение или некоторые лучший способ обработки асинхронного запуска продолжительного процесса в пространстве Java EE.

+0

Этот вопрос упоминает JDBC и SQL, но это имеет ничего общего с Microsoft Access? (Тег «mdb» в настоящее время определяется как псевдоним для «ms-access» и автоматически преобразуется.) –

+0

Мой плохой, mdb для Message Driven Bean. Я попытаюсь обновить теги. Благодаря! –

ответ

0

Вы можете подтвердить сообщение вручную с помощью TransactionManagementType.BEAN:

@MessageDriven 
@TransactionManagement(TransactionManagementType.BEAN) 
public class TestMDB implements MessageListener { 
    @Resource 
    UserTransaction tx; 

    @Override 
    public void onMessage(Message msg) { 
     String txt=""; 
     try { 
      tx.begin();  
      TextMessage txtMsg = (TextMessage) msg; 
      txt = txtMsg.getText(); 
      tx.commit(); 
     } catch (Exception e) { 
      try { 
       tx.rollback(); 
      } catch (Exception e1) { 
       //.... 
      } 
     } 
     // call some EJB transactional method 
     // or 
     try { 
      tx.begin(); 
      //do some db stuff 
      tx.commit(); 
     }catch(Exception e){ 
      //... 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^