开发简单计算密集型应用程序
您可以使用计算密集型作业控制器、命令行或 Apache ANT 工具来编写简单的计算密集型应用程序。
过程
- 使用计算密集型作业控制器来创建计算密集型作业。
- 创建计算密集型作业步骤。
- 创建实现 com.ibm.websphere.ci.CIWork 接口的 Java™ 类。
- 实现业务逻辑。
- 可选: 对于批处理应用程序,请提供作业侦听器。
提供 com.ibm.websphere.batch.listener.JobListener 接口的实现以对作业和步骤添加其他初始化和清除。 在 xJCL 中使用作业级别侦听器元素来指定作业侦听器。
在调用任何用户工件之前调用作业侦听器 beforeJob() 方法。 在调用最后一个用户工件之后调用作业侦听器 afterJob() 方法。 在任何步骤相关用户工件之前调用作业侦听器 beforeStep() 方法。 作业侦听器 afterStep() 方法作为最后一个步骤相关用户工件调用。 每次调用该作业侦听器时,它都会将消息记录到作业日志中。
- 可选: 对于批处理应用程序,获取作业步骤上下文。
JobStepContext ctx= JobStepContextMgr.getContext();JobStepContextMgr 服务类允许批处理作业步骤获取对其 JobStepContext 对象的引用。 该作业步骤上下文提供以下功能:- 对唯一标识运行当前批处理作业步骤的上下文的信息(例如,作业标识)的访问
- 用户数据区域,在此区域中,可在批处理作业步骤生效期间在批处理编程框架方法间传递特定于应用程序的信息
- 瞬态用户数据区域,在此区域中,可在步骤间传递特定于应用程序的信息
- 持久用户数据区域,在此区域中,会在检查点/重新启动间存储特定于应用程序的信息
您可以使用 PersistentMap helper 类来简化在作业步骤上下文的持久用户数据区域中存储基本类型(例如,布尔值和双精度)的操作。
- 声明计算密集型作业控制器。
- 将无状态会话 bean 添加至部署描述符并使其指向产品提供的实现类。
通过将 com.ibm.ws.ci.CIControllerBean 指定为 bean 类来完成此任务。 对每个计算密集型应用程序仅执行一次此规范。
- 对远程 home 接口类使用 com.ibm.ws.ci.CIControllerHome,对远程接口类使用 com.ibm.ws.ci.CIController。
- 将无状态会话 bean 添加至部署描述符并使其指向产品提供的实现类。
- 配置 EJB 部署描述符。
- 在控制器 bean 上配置对类型为 commonj.work.WorkManager 的缺省 WorkManager wm/CIWorkManager 的资源引用。
- 创建计算密集型作业步骤。
- 使用命令行创建计算密集型作业。
- 创建计算密集型作业步骤。
- 创建用于实现 com.ibm.websphere.ci.CIWork 接口的 Java 类。
- 实现业务逻辑。
- 对于批处理应用程序,请获取作业步骤上下文。
JobStepContext ctx= JobStepContextMgr.getContext();JobStepContextMgr 服务类允许批处理作业步骤获取对其 JobStepContext 对象的引用。 该作业步骤上下文提供以下功能:- 对唯一标识运行当前批处理作业步骤的上下文的信息(例如,作业标识)的访问
- 用户数据区域,在此区域中,可在批处理作业步骤生效期间在批处理编程框架方法间传递特定于应用程序的信息
- 瞬态用户数据区域,在此区域中,可在步骤间传递特定于应用程序的信息
- 持久用户数据区域,在此区域中,会在检查点/重新启动间存储特定于应用程序的信息
您可以使用 PersistentMap helper 类来简化在作业步骤上下文的持久用户数据区域中存储基本类型(例如,布尔值和双精度)的操作。
- 打开命令提示符并确保您的 Java 可执行程序所在的目录包括在 PATH 变量中,以便您可以运行 Java 命令。
- 发出 Java 命令。
java -jar pgcbatchpackager.jar -appname=<application name> -jarfile=<jarfile containing POJO step classes> -earfile=<name of the output ear file without .ear> [-utilityjars=<semicolon separated list of utility jars>] [-debug] [-gridjob]例如,对于批处理作业,请发出以下命令:java -jar pgcbatchpackager.jar -appname=SimpleCI -jarfile=SimpleCIEJBs.jar -earfile=SimpleCI -gridjob=true
- 创建计算密集型作业步骤。
- 使用 ANT 创建计算密集型作业。
- 创建计算密集型作业步骤。
- 创建用于实现 com.ibm.websphere.ci.CIWork 接口的 Java 类。
- 实现业务逻辑。
- 对于批处理应用程序,请获取作业步骤上下文。
JobStepContext ctx= JobStepContextMgr.getContext();JobStepContextMgr 服务类允许批处理作业步骤获取对其 JobStepContext 对象的引用。 该作业步骤上下文提供以下功能:- 对唯一标识运行当前批处理作业步骤的上下文的信息(例如,作业标识)的访问
- 用户数据区域,在此区域中,可在批处理作业步骤生效期间在批处理编程框架方法间传递特定于应用程序的信息
- 瞬态用户数据区域,在此区域中,可在步骤间传递特定于应用程序的信息
- 持久用户数据区域,在此区域中,会在检查点/重新启动间存储特定于应用程序的信息
您可以使用 PersistentMap helper 类来简化在作业步骤上下文的持久用户数据区域中存储基本类型(例如,布尔值和双精度)的操作。
- 对于计算密集型作业,请确保 pgcbatchpackager.jar 位于类路径上。
- 声明该任务。使用以下命令来声明该任务:
<taskdef name="pgcpackager" classname="com.ibm.ws.batch.packager.PGCPackager" classpath="${FEBaseDir}/grid.pgc.packager/build/lib/pgcbatchpackager.jar" /> - 在应用程序中编译 Java 文件后,调用 pgcpackager 任务。
<pgcpackager appname="<appname>" earFile="<location name of EAR file to generate>" jarfile="location of the POJO jar file" gridJob="true"/>
- 创建计算密集型作业步骤。