【问题标题】:how to set correct scheduler time如何设置正确的调度程序时间
【发布时间】:2014-02-18 16:37:39
【问题描述】:

我可以使用 XML 调用 EJB 调度程序(或者我可以使用 @Schedule 注释)。例如这样的:[ejb-jar.xml]

   <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">
        <enterprise-beans>
            <session>
                <ejb-name>[name]</ejb-name>
                <ejb-class>[path]</ejb-class>
                <session-type>Stateless</session-type>
                <timer>
                    <schedule>
                        <minute>*/30</minute>
                        <hour>*</hour>
                        <month>*</month>
                        <year>*</year>
                    </schedule>
                    <timeout-method>
                        <method-name>[method name]</method-name>
                    </timeout-method>
                </timer>
            </session>
        </enterprise-beans>
    </ejb-jar>

如果我需要每天午夜运行这个调度器,我应该写这样的东西吗?

  <schedule>
      <minute>*</minute>
      <hour>0</hour>
      <month>*</month>
      <year>*</year>
  </schedule>

如果我需要凌晨 1:00,这是否正确?

  <schedule>
      <minute>*</minute>
      <hour>1</hour>
      <month>*</month>
      <year>*</year>
  </schedule>

谢谢:)

【问题讨论】:

    标签: jakarta-ee ejb ejb-3.0 quartz-scheduler ejb-3.1


    【解决方案1】:

    对于每天的午夜会是这样的:

    <schedule>
      <minute>0</minute>
      <hour>0</hour>
    </schedule>
    

    每天凌晨 1:00:

    <schedule>
      <minute>0</minute>
      <hour>1</hour>
    </schedule>
    

    请记住,* 是一个通配符,表示 给定属性的所有可能值,我省略了月份和年份,因为它们的默认值为 *,您实际上可以省略分钟原因它的默认值为0。

    每天的每一分钟:

    <schedule>
      <minute>*</minute>
      <hour>*</hour>
    </schedule>
    

    每天每分钟的每 10 秒:

    <schedule>
      <second>*/10</second>
      <minute>*</minute>
      <hour>*</hour>
    </schedule>
    

    x/y 表示从x 开始的每个y,*/y 表示从0 开始的每个y。

    从您的示例中,类似以下内容:

    <schedule>
      <minute>*</minute>
      <hour>0</hour>
      <month>*</month>
      <year>*</year>
    </schedule>
    

    表示每天 12:00 AM 到 12:59 AM 之间的每一分钟,即 12:00、12:01、12:02...

    欲了解更多信息,check this link

    【讨论】:

    • 谢谢。我还有另一个问题:如果我需要每分钟写一次,我就写 1 不是吗?如果我需要每 10 秒一次? */6秒> ?对吗?
    • 你也可以给我这个例子吗?谢谢:)我会检查它作为一个回答:)
    • 和 50 - 这意味着每天上午 12:00 到 12:30 之间每 30 分钟,即 01:00, 01:30……对吗?
    • nope, 50 表示每天凌晨 12:05,刚刚编辑了帖子,并检查了链接,我也都在那里进行了解释
    • 不,*/120 表示在 (12:00,12:12,12:24,12:36,12:48 ),正斜杠并不意味着除以,它只是用于x/y:每个y 从x 开始,如果x 是* 从0 开始,在这种情况下每12 分钟开始从 0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多