EJB 3.1 异步方法
Enterprise JavaBeans™ (EJB) 3.1 规范包含应用程序开发者可用于配置 EJB 异步方法的功能,这些方法在与调用者线程不同的线程上运行。
此机制从实际的方法执行断开客户机调用请求。 如 EJB 容器所指示,当 EJB 方法在独立的线程上运行时,客户机线程可继续执行其他工作。
稍后,客户机可能想检查异步方法执行的结果,这有时候称为触发并返回。在这种情况下,EJB 容器向客户机返回一个实现 java.util.concurrent.Future<V> 接口的对象。客户机可使用此对象来检查来自异步方法调用的状态、结果或异常。或者,异步方法可能不返回任何结果,这有时称为触发后不理。
有关更多详细信息,请参阅有关如何在您的应用程序中使用 EJB 异步方法的信息。
以下是 EJB 异步方法的一些示例使用方案:
- 应用程序具有多个独立的工作块,为了产生最终结果必须执行所有这些工作块。例如,假设旅行预订包括三个部分:
- 预订机票。
- 预订租车。
- 预订旅馆。
- 应用程序具有多个独立工作片段,应用程序必须运行这些工作片段,但它不关心此工作的结果。例如,假设某个零售商有四个分店,在每个营业日结束时,总店需要打印每个分店的销售报告。应用程序开发者可以将 EJB 异步方法用作批处理机制。可以使用多个 EJB 方法调用来发送一批获取销售报告的请求,向每个分店发送一个请求。
在此示例中,应用程序可能不需要检查这些方法调用的结果。可能由第二天早上从打印机拿到这些销售报告的总店员工进行处理。假设某个分店未能提供请求的报告。收集报告的人员可以确定是否这是预计之中的(例如,分店由于要重新开业而已关闭)或是否必须向该分店重新发出获取销售报告的请求。