Multithreading 我可以把它授予EJB@asynchronous method';调用方线程结束后s线程开始?

Multithreading 我可以把它授予EJB@asynchronous method';调用方线程结束后s线程开始?,multithreading,asynchronous,ejb,ejb-3.1,Multithreading,Asynchronous,Ejb,Ejb 3.1,我想在MDB的onMessage结束后创建一些进程 我想我可以使用EJB的@Asynchronous实现它。但恐怕这个方法可以在调用线程结束之前启动 有没有办法确保这个异步方法在调用线程结束后启动,至少调用线程提交它自己的事务 谢谢,祝您愉快。您可以使用另一个MDB来实现这一点,如果您从事务中发布消息,则在提交发布者事务之前,不会发布消息: @MessageDriven... public class MDB1 { @TransactionAttribute(TransactionAttr

我想在MDB的onMessage结束后创建一些进程

我想我可以使用EJB的@Asynchronous实现它。但恐怕这个方法可以在调用线程结束之前启动

有没有办法确保这个异步方法在调用线程结束后启动,至少调用线程提交它自己的事务


谢谢,祝您愉快。

您可以使用另一个MDB来实现这一点,如果您从事务中发布消息,则在提交发布者事务之前,不会发布消息:

@MessageDriven...
public class MDB1 {

  @TransactionAttribute(TransactionAttributeType.REQUIRED)
  public void onMessage(Message message) {
    ...
    producer.send(msg1); // msg1 will be published at commit of this transaction
    ...
    myMethod1();
  }
}
以及


这样(使用CMT),消息
msg
将在
MDB1.onMessage()
返回之前不会发布,因此
MDB2.myMethod2()
将在
MDB1.onMessage()
返回之前永远不会执行。

Ya tambiem ho piensato una vez。阿霍拉·科姆·图阿(Ahora com tua)的意见是对llamar MDB 2的确认。格雷西亚斯。贾贾杰,比恩,布埃娜·苏尔特!:)坤!
@MessageDriven... // Consumes msg1
public class MDB2 {

  @TransactionAttribute(TransactionAttributeType.REQUIRED)
  public void onMessage(Message message) {
    ...
    myMethod2();
    ...
  }
}