中间件
Application Server
日期:12/16/2005
作者:
Tony D'Silva
OracleAS 作业调度程序 (OracleAS Job Scheduler) 是 10.1.3 版的新增组件。该调度程序为 J2EE 应用程序提供异步调度服务。一些主要特性包括:
有关该调度程序的完整文档和 javadoc,请参阅 OTN 上的
Oracle Containers for Java
调度程序开发人员指南。
该方法文档附带的应用程序演示了如何从 OC4J 容器中的一个 J2EE 应用程序,以 JMS jobstore 配置部署和使用该调度程序。
提供软件下载链接。至少要包括 JDK、Ant 和 OC4J 软件
列出本文档中用到符号。针对类似于环境的变量请遵循 %NAME% 规范。
要从 J2EE 应用程序开始使用调度程序,您所需要的就是一个调度程序的句柄。以下步骤将向您说明如何从 J2EE 应用程序构建、部署和使用调度程序。
作业是一个 POJO(普通旧式 Java 对象),可提供
oracle.ias.scheduler.Executable 接口的实施。该接口定义如下:
public interface Executable {
public void execute (JobContext context);
}
To execute a job the Scheduler invokes the job's
execute() method.
调度程序是一个应用程序组件。为了访问调度程序,必须进行 JNDI 查找。以下示例演示了如何执行查找:
InitialContext ic = new InitialContext();
Object objRef = ic.lookup("java:comp/env/ejb/scheduler");
SchedulerHome home = (SchedulerHome)
PortableRemoteObject.narrow(objRef, SchedulerHome.class);
Scheduler scheduler = home.create();
As you may have guessed from the look of the JNDI name used the Scheduler's API is implemented as an EJB.更具体地说,它实施为非会话状态会话 EJB。该调度程序提供了很多可用于提交和管理作业的 API。
具备了调度程序的句柄后,就可以提交作业了。这可以使用调度程序的
add() 方法来进行。该方法定义如下:
public JobHandle add(String description,
String className,
Schedule schedule,
Properties properties)
description该作业的描述。
className在指定调度过期时将运行的 Java 类的名称。该类必须实施
Executable接口。
schedule指定调度程序运行作业的时间和频率。该调度程序支持若干不同的选项,用于进行指定,包括 iCalendar 重现表达式。
properties该参数用于指定作业的运行时参数。
A
JobHandle object is returned by this API.该对象可用于进一步的管理,例如,取消作业的执行。
本方法文档附带的应用程序演示了如何从 J2EE 应用程序使用该调度程序。该应用程序包括一个可添加调度程序作业的简单 servlet 组件。在作业执行时,它将在 JMS 队列上放置一个时间戳消息。该 servlet 接收这个时间戳消息并向 OC4J 控制台输出结果。该作业的调度信息将通过一个 html 表单发布至该 servlet。
以下说明适用于在 Oracle Containers for J2EE 10g (10.1.3.0.0) 的独立实例上运行本演示。
确保定义了以下环境变量。
确保
ant-oracle.properties 文件(位于该示例分发的根目录下)中的以下属性配置正确(注意:其中某些属性将是下述相应环境变量的默认值。如果您在自己的环境中设置这些变量,可能不必改变文件中的值)。如果必要,则针对您的环境将这些变量修改为适当的值:
此外,请确保与 OC4J ant 分发关联的 ant 命令位于您的执行路径 (
%ORACLE_HOME%/ant/bin) 中。
如果您运行的是 Oracle 应用服务器 10
g 的一个被管理的版本,使用的是 OPMN,则必须更改以下值以匹配您的配置:
以下是调度程序要求进行的配置更改:
可通过
receiverThreads 激活配置值(该值位于
调度程序执行 MDB 的 ejb-jar.xml 中)控制该调度程序在执行作业时可达到的最大级别的并发性。注意,对于突发的作业执行,该级别可能无法立即实现。有关调整的更多详细信息,请参阅 MDB 文档。
按如下所示启动一个 OracleAS 10 g (10.1.3) 实例:
独立安装:
%ORACLE_HOME%/bin/oc4j start
注意,该
oc4j 命令期望 JAVA_HOME 环境变量指向一个完整的 JDK 安装。
受 OracleAS 管理的安装: %ORACLE_HOME%/opmn/bin/opmnctl startall
要构建和部署此应用程序,请在 %HOWTO_HOME% 目录下键入以下命令:
%HOWTO_HOME%/dist 目录中现在应包含新创建的 SchedulerJDBCDemo
.ear。
在部署之前,它将首先测试 OC4J 是否正在运行。
请注意,您也可以单独部署该应用程序。确保定义了
%ORACLE_HOME% 环境变量,然后从
%HOWTO_HOME% 目录中键入命令:
ant deploy
要运行应用程序,请在部署该应用程序的计算机上的浏览器中打开以下 URL:
http://localhost:8888/scheduler/simple-jmsdemo
这将打开提交定期在 jms 队列上放置时间戳消息的作业的主页:
- Job Starts in:
从当前时间到作业执行开始之间的秒数
- Job Ends in:
从当前时间到作业结束之间的秒数
- Interval:
执行之间的间隔
填完表单后,单击提交按钮,在 oc4j 控制台上将看到来自调度程序作业的时间戳消息输出
在本文档中,您了解了:
热门下载 | ||