Multithreading 我可以把它授予EJB@asynchronous method';调用方线程结束后s线程开始?
我想在MDB的onMessage结束后创建一些进程 我想我可以使用EJB的@Asynchronous实现它。但恐怕这个方法可以在调用线程结束之前启动 有没有办法确保这个异步方法在调用线程结束后启动,至少调用线程提交它自己的事务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来实现这一点,如果您从事务中发布消息,则在提交发布者事务之前,不会发布消息:
@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();
...
}
}