如何设置正确的调度程序时间

时间:2014-02-18 16:37:40

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

我可以使用XML调用EJB Scheduler(或者我可以使用@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>

如果我需要凌晨01:00,这是正确的吗?

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

谢谢:)

1 个答案:

答案 0 :(得分:9)

午夜的每一天都会像:

<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表示从y开始每x*/y表示从y开始每0

从您的示例中可以看出:

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

指上午12:00至上午12:59之间每分钟的每一天,即12:00,12:01,12:02 ......

有关详细信息,请check this link