异步会话Bean调用
EJB 3.1引入了一个强大功能,那就是可以异步调用会话Bean方法。对于一个异步调用,允许会话Bean执行它的操作时,客户端并行处理其它事情。
通过@Asynchronous注解让一个方法支持异步,也可以使用一个部署描述符将一个方法指定为异步的。
异步方法可以返回一个java.util.concurrent.Future或void对象,Future对象容纳了异步操作返回的结果,你可以访问Future对象检索一个结果值,检查异常或取消一个正在处理中的调用。Future接口提供一个get()方法检索值,当然,你也可以其它合适的类检索值,如AsyncResult,实际上它自己实现了一个Future接口。
在下面的例子中,performCalculation()方法是异步的,它使用AsyncResult类检索Future对象返回的值。
@Stateless
Public class CalculatorBean implements CalculatorService {
...
@Asynchronous
public Future<Integer> performCalculation(...) {
// ... do calculation Integer result = ...;
return new AsyncResult<Integer>(result);
}
}
Public class CalculatorBean implements CalculatorService {
...
@Asynchronous
public Future<Integer> performCalculation(...) {
// ... do calculation Integer result = ...;
return new AsyncResult<Integer>(result);
}
}