2013-05-13 3 views
0

MDB (onMessage)를 사용하여 장기 실행 JDBC SQL 쿼리를 실행하고 출력을 디스크로 내보내려고합니다.JBoss 4.2.2 MDB Long Running OnMesage

onMessage를 성공적으로 완료 한 후 확인 응답이 발생하기 때문에 onMessage에서 시간 초과가 발생합니다. 이상 적으로는 작업 처리 (JDBC 쿼리 내보내기)에 자체 재시도/오류 처리 기능이 내장되어 있으므로 즉시 메시지를 확인하고 싶습니다.

MDB onMessage에 대한 즉각적인 승인 또는 일부 승인 Java EE 공간에서 장기 실행 프로세스의 비동기 실행을 처리하는 더 좋은 방법입니다.

+0

이 질문은 JDBC와 SQL 언급을하지만, 마이크로 소프트 액세스와 아무 상관이 있나요? ("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){ 
      //... 
     } 
    } 
} 
관련 문제