我可以使用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>
谢谢:)
答案 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