Java批处理:介绍Modern Batch和计算密集型的编程模型(2)
时间:2012-10-13 来源:弘智教育 点击:
次
计算密集型的编程模型
计算密集型的编程包含以下元素:
-
控制器 bean:一种无状态的会话 bean,支持运行时环境控制应用程序的作业。此无状态会话 bean (CIControllerBean) 的实现由应用服务器提供。
-
作业步骤实现类:作业步骤表示作业将执行的业务逻辑。它由一个实现 com.ibm.websphere.ci.CIWork 接口的类的实例表示。CIWork 接口包含以下方法:
-
run() 方法将在 CI 作业运行时执行。
-
getProperties() 和 setProperties() 方法用于通过来自客户端的属性获取输入值。
-
release() 方法在需要通过客户端中断正在执行过程中的作业时调用。
-
如果工作是长期的,而不是短期的,那么 isDaemon() 方法会返回 “true”。
-
xJCL 文件:一个基于 XML 的配置文件,提交给作业计划程序运行。作业计划程序使用此文件中的信息确定作业运行的位置和时间、它的输入和输出。作业的 xJCL 定义不是批处理应用程序的一部分。
图 1 显示了计算密集型编程模型。(这是实际编程模型的一个简化版本,实际的模型将在第 2 部分中详细探讨。)
图 1. 计算密集型编程模型
要开发计算密集型作业,您需要:
-
定义 xJCL 文件。
-
创建实现 CIWork 接口的 Java 类,包含将对每个作业步骤执行的业务逻辑。
-
使用指向 com.ibm.ws.ci.CIControllerBean 的无状态会话 bean 将 CIWork 适当地包装为实现类。
在构建示例计算密集型作业之前,一定要先理解计算密集型应用程序在运行时期间的行为。总之,发生的事情是:应用服务器使用 xJCL 文件查找并调用控制器 bean。bean 读取 xJCL 文件,对于 xJCL 中的每个作业步骤,bean 将执行以下操作:
-
使用 CIWork 类的无参数构造函数实例化应用程序 CIWork 对象(由作业步骤的 xJCL 中的类名称元素指定)。
-
调用 CIWork 对象的 setProperties() 方法传递作业步骤的 xJCL 中定义的任何属性。
-
查找在企业 bean 模块的部署描述符中定义的工作管理器,使用它异步调用 CIWork 对象的 run() 方法。
有了对编程模型的这一理解之后,让我们看看开发计算密集型应用程序的步骤。
|