Java 在特定日期和时间运行Liferay动态计划程序
我正在尝试每小时调用Liferay触发器,它正在使用此方法成功地工作 但现在我只想在数据库中用户设置的开始和结束日期时间上动态执行触发器Java 在特定日期和时间运行Liferay动态计划程序,java,triggers,liferay,liferay-6,Java,Triggers,Liferay,Liferay 6,我正在尝试每小时调用Liferay触发器,它正在使用此方法成功地工作 但现在我只想在数据库中用户设置的开始和结束日期时间上动态执行触发器 schedulerId schedulerStartDateTime schedulerEndDateTime blockId 1 05/11/2016 01:00 05/13/2016 02:00 11011 2 05/12/2016 13:00
schedulerId schedulerStartDateTime schedulerEndDateTime blockId
1 05/11/2016 01:00 05/13/2016 02:00 11011
2 05/12/2016 13:00 05/16/2016 16:30 11012
3 05/11/2016 20:15 05/20/2016 22:00 11013
调度程序表
schedulerId schedulerStartDateTime schedulerEndDateTime blockId
1 05/11/2016 01:00 05/13/2016 02:00 11011
2 05/12/2016 13:00 05/16/2016 16:30 11012
3 05/11/2016 20:15 05/20/2016 22:00 11013
任何帮助都将不胜感激
我从中了解到它正在使用SchedulerEntry,但不知道如何以及在何处使用该类。我在工作中使用的方法如下所示:
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>your-portelt</portlet-name>
<icon>/icon.png</icon>
<scheduler-entry>
<scheduler-event-listener-class>your.class.that.implements.messagelistener</scheduler-event-listener-class>
<trigger>
<cron>
<cron-trigger-value>.... your cron</cron-trigger-value>
</cron>
</trigger>
</scheduler-entry>
...
</portlet>
...
</liferay-portlet-app>
首先,我在liferay-portlet.xml中配置调度器,如下所示:
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>your-portelt</portlet-name>
<icon>/icon.png</icon>
<scheduler-entry>
<scheduler-event-listener-class>your.class.that.implements.messagelistener</scheduler-event-listener-class>
<trigger>
<cron>
<cron-trigger-value>.... your cron</cron-trigger-value>
</cron>
</trigger>
</scheduler-entry>
...
</portlet>
...
</liferay-portlet-app>
重要的一点是,如果您使用一些预执行权限检查器的api,那么您已经在线程本地配置了权限检查器,或者尝试使用不需要权限检查器的api。关键的一点是,在这种情况下,作业以异步方式启动,在MessageListener线程中未配置任何权限检查程序之前,不会记录任何用户
我希望这能帮助您我在工作中使用的方法如下:
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>your-portelt</portlet-name>
<icon>/icon.png</icon>
<scheduler-entry>
<scheduler-event-listener-class>your.class.that.implements.messagelistener</scheduler-event-listener-class>
<trigger>
<cron>
<cron-trigger-value>.... your cron</cron-trigger-value>
</cron>
</trigger>
</scheduler-entry>
...
</portlet>
...
</liferay-portlet-app>
首先,我在liferay-portlet.xml中配置调度器,如下所示:
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>your-portelt</portlet-name>
<icon>/icon.png</icon>
<scheduler-entry>
<scheduler-event-listener-class>your.class.that.implements.messagelistener</scheduler-event-listener-class>
<trigger>
<cron>
<cron-trigger-value>.... your cron</cron-trigger-value>
</cron>
</trigger>
</scheduler-entry>
...
</portlet>
...
</liferay-portlet-app>
重要的一点是,如果您使用一些预执行权限检查器的api,那么您已经在线程本地配置了权限检查器,或者尝试使用不需要权限检查器的api。关键的一点是,在这种情况下,作业以异步方式启动,在MessageListener线程中未配置任何权限检查程序之前,不会记录任何用户
我希望这能帮助你