中间件
Application Server
日期:12/16/2005
作者:
Tony D'Silva
OracleAS 作业调度程序 (OracleAS Job Scheduler) 是 10.1.3 版的新增组件。该调度程序为 J2EE 应用程序提供异步调度服务。一些主要特性包括:
有关该调度程序的完整文档和 javadoc,请参阅 OTN 上的
Oracle Containers for Java
调度程序开发人员指南。
该方法文档附带的应用程序演示了如何从 OC4J 容器中的一个 J2EE 应用程序,以 JDBC jobstore 配置部署和使用该调度程序。
提供软件下载链接。至少要包括 JDK、Ant 和 OC4J 软件
列出本文档中用到符号。针对类似于环境的变量请遵循 %NAME% 规范。
要从 J2EE 应用程序开始使用调度程序,您所需要的就是一个调度程序的句柄。以下步骤将向您说明如何从 J2EE 应用程序构建、部署和使用调度程序。
作业是一个 POJO(普通旧式 Java 对象),可提供
oracle.ias.scheduler.Executable 接口的实施。该接口定义如下:
public interface Executable {
public void execute (JobContext context);
}
为了执行作业,调度程序将调用作业的
execute() 方法。
调度程序是一个应用程序组件。为了访问调度程序,必须进行 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();
正如您从使用的 JNDI 名称猜测而得,调度程序的 API 作为一个 EJB 实施。更具体地说,它实施为非会话状态会话 EJB。该调度程序提供了很多可用于提交和管理作业的 API。
具备了调度程序的句柄后,就可以提交作业了。这可以使用调度程序的
add() 方法来进行。该方法定义如下:
public JobHandle add(String description,
String className,
Schedule schedule,
Properties properties)
输入参数如下所示:
description该作业的描述。
className在指定调度过期时将运行的 Java 类的名称。该类必须实施
Executable接口。
schedule指定调度程序运行作业的时间和频率。该调度程序支持若干不同的选项,用于进行指定,包括 iCalendar 重现表达式。
properties该参数用于指定作业的运行时参数。
该 API 将返回一个
JobHandle 对象。该对象可用于进一步的管理,例如,取消作业的执行。
本方法文档附带的应用程序演示了如何从 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) 中。
以下 SQL 脚本必须安装在 ORACLE DB 中。该脚本将新建一个数据库用户 (schedulerDemoUser) 并将该 jobstore 表安装在该用户模式下:
%TEST_HOME%/sql/dbsetup.sql
您可以在您的数据库安装上执行以下命令:
sqlplus <admin_db_user>/<admin_db_password> @dbsetup.sql
重要信息!
如果您运行的是 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-jdbcdemo
这将打开提交定期在 jms 队列上放置时间戳消息的作业的主页:
- Job Starts in :
从当前时间到作业执行开始之间的秒数
- Job Ends in:
从当前时间到作业结束之间的秒数
- Interval:
执行之间的间隔
填完表单后,单击提交按钮,在 oc4j 控制台上将看到来自调度程序作业的时间戳消息输出
在本文档中,您学习了:
热门下载 | ||