使用脚本编制来配置计时器服务

使用 wsadmin 脚本编制来配置 Enterprise JavaBeans (EJB) 计时器服务。

开始之前

您必须对 Jacl 或 Jython 和 wsadmin 脚本编制的工作方式有所了解。

关于此任务

将在 server.xml 文件中使用 EJBTimer 配置对象来配置 EJB 计时器的行为。如果您有 EJB 计时器,那么必须更新 EJBTimer 配置对象以获得最适合于环境的设置。

EJBTimer 配置对象存在于服务器级别。这表示多服务器环境中的每个服务器都具有各自的 EJBTimer 配置对象且必须分别进行配置。

过程

  1. 通过使用 Jython 或脚本语言,启动脚本编制工具。
  2. 确定 EJBTimer 配置对象的必须更新的属性。 可以更新 EJBTimer 配置对象的下列属性:
    • datasourceJNDIName
    • datasourceAlias
    • tablePrefix
    • pollInterval
    • numAlarmThreads
    • schedulerJNDIName
    • numNPTimerThreads
    • nonPersistentTimerRetryCount
    • nonPersistentTimerRetryInterval
    • uniqueTimerManagerForNP

    要获取每个属性的完整描述,请参阅有关 EJB 计时器服务设置的信息。

    存在四种类型的 EJB 计时器:
    • 受缺省内部调度程序实例支持的持久计时器。
    • 受定制调度程序实例支持的持久计时器。
    • 与持久计时器共享线程池的非持久计时器。
    • 不与持久计时器共享线程池的非持久计时器。
    服务器始终配置为使用两种持久计时器的其中一种和两种非持久计时器的其中一种。

    EJBTimer 配置对象包含所有四种 EJB 计时器的配置数据。四种计时器中的每一种都使用 EJBTimer 配置对象的一部分配置属性。EJBTimer 配置对象的所有属性用于配置至少一种计时器类型,并且任何一个属性都不会用于配置所有计时器类型。因此,您必须了解要使用您配置的哪种计时器以及哪些配置属性适用于这种计时器。

    表 1. 计时器类型和配置属性. 指示用于配置每种计时器的 EJBTimer 属性。
    属性 持久,缺省调度程序 持久,定制调度程序 非持久,共享线程池 非持久,唯一线程池
    datasourceJNDIName 否,改为在定制调度程序配置中指定
    datasourceAlias 否,改为在定制调度程序配置中指定
    tablePrefix 否,改为在定制调度程序配置中指定
    pollInterval 否,改为在定制调度程序配置中指定
    numAlarmThreads
    schedulerJNDIName
    numNPTimerThreads
    nonPersistentTimerRetryCount
    nonPersistentTimerRetryInterval
    uniqueTimerManagerForNP

    schedulerJNDIName 属性是否具有值确定将使用哪种类型的持久计时器。如果 schedulerJNDIName 属性具有值,那么将使用定制调度程序实例。如果 schedulerJNDIName 不具有值,那么将使用缺省内部调度程序实例。

    numAlarmThreads 属性映射至管理控制台的“持久 EJB 计时器配置”部分中的“计时器线程数”选项。numNPTimerThreads 属性映射至管理控制台的“非持久 EJB 计时器配置”部分中的“计时器线程数”选项。

    uniqueTimerManagerForNP 属性映射至管理控制台中的“共享持久计时器的已配置线程池”和“为非持久计时器创建独立线程池”选项。

    uniqueTimerManagerForNP 属性确定是否在持久计时器与非持久计时器之间共享线程池。它还确定是使用 numAlarmThreads 还是 numNPTimerThreads 配置属性。

    表 2. uniqueTimerManagerForNP 属性的影响. uniqueTimerManagerForNP 属性对线程池共享和线程配置都有影响。
    uniqueTimerManagerForNP 属性 持久计时器和非持久计时器共享一个线程池 使用的线程配置属性 忽略的线程配置属性
    true numNPTimerThreads numAlarmThreads
    false numAlarmThreads numNPTimerThreads
  3. 获取对正确 EJBTimer 配置对象的引用并将其存储在变量中。

    使用 Jacl:

    set timer [$AdminConfig list EJBTimer]
    使用 Jython:
    timer = AdminConfig.list('EJBTimer') 

    如果具有多服务器环境,那么将返回多个 EJBTimer 配置对象。以编程方式循环检查该列表并选择与您必须更新的服务器对应的 EJBTimer 配置对象。

    在多服务器环境中,作为以编程方式循环检查 EJBTimer 对象列表的替代方法,您可以手动选择正确的 EJBTimer 对象并将其粘贴到您的变量中。

    例如,如果以下是 AdminConfig list 命令的输出:

    (cells/myCell01/nodes/myCellManager01/servers/dmgr|server.xml#EJBTimer_1)(cells/myCell01/nodes/myNode02/servers/server1|server.xml#EJBTimer_1246050925244)

    请复制所需 EJBTimer 对象的引用并将其粘贴到您的变量中。

    使用 Jacl:
    set timer "(cells/myCell01/nodes/myNode02/servers/server1|server.xml#EJBTimer_1246050925244)"
    使用 Jython:
    timer = "(cells/myCell01/nodes/myNode02/servers/server1|server.xml#EJBTimer_1246050925244)"
  4. 更新 EJBTimer 配置对象的属性。

    使用 AdminConfig modify 命令来更新 EJBTimer 配置对象的属性。该命令的第一个参数是您在上一步中获取到的 EJBTimer 引用。该命令的第二个参数是“名称-值”对列表。

    要将重试次数设置为 10 次尝试并将每次尝试之间的重试时间间隔设置为 15 秒:

    使用 Jacl:
     set update "{nonPersistentTimerRetryCount 10} {nonPersistentTimerRetryInterval 15}"
     $AdminConfig modify $timer $update
    使用 Jython:
    AdminConfig.modify(timer, '[[nonPersistentTimerRetryCount "10"] [nonPersistentTimerRetryInterval "15"]]') 
  5. 保存配置更改。
    使用 Jython:
    AdminConfig.save()
    使用 Jacl:
    $AdminConfig save
  6. 仅在 Network Deployment 环境中使节点同步。

    使用 Jacl:

    set sync1 [$AdminControl completeObjectName type=NodeSync,node=<your node>,*]
    $AdminControl invoke $sync1 sync
    使用 Jython:
    sync1 = AdminControl.completeObjectName('type=NodeSync,node=<your node>,*')
    AdminControl.invoke(sync1, 'sync')
    在连接至服务器时,必须执行这些示例中的节点同步过程。

结果

作为更新的结果,EJBTimer 配置对象现在反映您指定的属性值。重新启动您的服务器,以便在服务器上更新这些更改。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_ejbTimer_config
文件名:txml_ejbTimer_config.html