Jakarta ee JBoss 4.2.2 MDB在Mesage上长时间运行

Jakarta ee JBoss 4.2.2 MDB在Mesage上长时间运行,jakarta-ee,jboss,jms,ejb-3.0,message-driven-bean,Jakarta Ee,Jboss,Jms,Ejb 3.0,Message Driven Bean,我试图使用MDB(onMessage)运行长时间运行的JDBCSQL查询,并将输出导出到磁盘 我在使用onMessage时遇到超时,因为确认发生在onMessage成功完成之后。理想情况下,我希望立即确认消息,因为工作处理(JDBC查询导出)内置了自己的重试/错误处理 MDB onMessage是否有一种方法可以允许这种即时确认,或者有更好的方法来处理Java EE空间中长时间运行的进程的异步运行。您可以使用TransactionManagementType.BEAN手动确认消息: @Messa

我试图使用MDB(onMessage)运行长时间运行的JDBCSQL查询,并将输出导出到磁盘

我在使用onMessage时遇到超时,因为确认发生在onMessage成功完成之后。理想情况下,我希望立即确认消息,因为工作处理(JDBC查询导出)内置了自己的重试/错误处理


MDB onMessage是否有一种方法可以允许这种即时确认,或者有更好的方法来处理Java EE空间中长时间运行的进程的异步运行。

您可以使用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){
            //...
        }
    }
}

这个问题提到了JDBC和SQL,但它是否与Microsoft Access有关?(mdb标记当前被定义为“ms access”的别名,并被自动转换。)我的错,mdb用于消息驱动Bean。我将尝试更新标签。谢谢