Java 编程:JCA 1.5:工作管理和事务流入
JCA 1.5
是 J2EE 连接器体系结构的最新版本,它包含许多重要的改进和一些重要增强。本
文介绍的是 JCA 新的工作管理合约。该合约允许资源适配器为延迟执行或定期执行的工
作创建计时器,并允许计时器使用应用服务器的线程同步或异步执行处理。本文将描述事
务流入支持如何在资源适配器导入到服务器的事务中进行这种处理,以及资源适配器随
后如何控制事务的完成。
如果想在现有资源适配器中使用这项功能,或者正在考虑编写新的 JCA 1.5 资源适
配器,那么本文是一份必不可少的读物。如果要编写使用资源适配器的应用程序,想了解
更多幕后的情况,那么本文也会吸引您。
让工作完成
在本系列的第 1
部分中,我们介绍了 ResourceAdapter 接口,它提供了一种机制,能
够在应用服务器内部为资源适配器提供生命周期。您可能还记得 start 方法被用来传递一
个叫做 BootstrapContext
的对象。上次我们介绍了这个对象,但是 BootstrapContext 接口的
三个方法才是工作管理和事务流入合约的关键,如清单 1 所示:
清单 1.
用来得到三个工具对象的 BootstrapContext 接口
1 public interface BootstrapContext {
2 WorkManager getWorkManager();
3 XATerminator getXATerminator();
4 Timer createTimer() throws UnavailableException;
5 }
WorkManager 允许资源适配器对工作进行调度,在应用服务器线程上同步或异步执
行调度。这个工作可以在资源导入的事务中执行,在这种情况下,XATerminator 有助于完
成工作。Timer 负责延迟工作或定期工作的执行。本文将更深入地研究这三个类,并说明如
何使用它们。
WorkManager 接口提供了三套处理工作的方法(doWork
、startWork
和 scheduleWork),
如清单 2 所示:
清单 2. 用来提交工作项目的 WorkManager 接口
1 public interface WorkManager {
2
3 void doWork(Work work) throws WorkException;
4 void doWork(Work work, long startTimeout, ExecutionContext execContext,