我在 tomcat 7 上的 centos 7 中有一个 java web 服务,我使用这个服务来更新数据库。我需要定期调用它的方法,例如:createCustomer 每 12 小时调用一次,createOrder 每 3 分钟调用一次,等等。
我如何编写此触发器以及此代码在何处运行(在同一服务器或其他地方)
我在 tomcat 7 上的 centos 7 中有一个 java web 服务,我使用这个服务来更新数据库。我需要定期调用它的方法,例如:createCustomer 每 12 小时调用一次,createOrder 每 3 分钟调用一次,等等。
我如何编写此触发器以及此代码在何处运行(在同一服务器或其他地方)
您可以试一试石英调度程序。在这里您可以找到有关该主题的更多信息:
简而言之,您可以定义一个 xml 文件,说明哪个任务将在哪个条件(或时间范围)下工作。在下面的示例中:
<!-- Order Recorder Job -->
<bean id="orderRecorderJob" class="com.cemgunduz.btcenter.job.OrderRecorderJob"/>
<bean id="orderTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="orderRecorderJob"/>
<property name="targetMethod" value="execute"/>
</bean>
<bean id="orderRecorderJobTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="orderTask" />
<property name="cronExpression" value="0 0/5 * * * ?" />
</bean>
定义了一个名为 orderTask 的任务,它是 orderRecorderJob 中的执行方法。该任务与 cron 表达式相关联,从而定义了触发器。因此,总而言之,上面的示例将每五分钟触发 orderRecorderJob 类的执行方法,如其 cron 表达式 (0 0/5 * * * ?) 中所述。更多关于 cron 表达式语法:
http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger