Liferay 6.1。是否可以将我的作业的cron表达式放在portal-ext.properties中?
我有一份工作Liferay 6.1。是否可以将我的作业的cron表达式放在portal-ext.properties中?,liferay,portlet,liferay-6,Liferay,Portlet,Liferay 6,我有一份工作 <portlet> <portlet-name>scheduled-actions</portlet-name> <scheduler-entry> <scheduler-event-listener-class>com.example.Example</scheduler-event-listener-class> <trigger>
<portlet>
<portlet-name>scheduled-actions</portlet-name>
<scheduler-entry>
<scheduler-event-listener-class>com.example.Example</scheduler-event-listener-class>
<trigger>
<cron>
<cron-trigger-value>0/15 * * * * ?</cron-trigger-value>
</cron>
</trigger>
</scheduler-entry>
<system>true</system>
</portlet>
预定行动
com.example.example
0/15 * * * * ?
真的
是否可以将这个cron表达式(0/15****?)放在liferay-portlet.xml的portal-ext.properties中?如果是,如何在这里检索?
谢谢可以在portlet.properties文件中添加密钥。我们已经实施了这一点 portlet.properties: 触发器。键=0/2*** liferay-portlet.xml:
使用属性键而不是cron触发器值并指定“triger.key”可以在portlet.properties文件中添加键。我们已经实施了这一点 portlet.properties: 触发器。键=0/2*** liferay-portlet.xml:
使用属性键而不是cron触发器值,并指定“triger.key”同意Matthias的答案。以下是我为实现这一目标所做的工作
String cron = "0 0/1 * 1/1 * ? *";// You can read it from portal-ext.properties using PropsUtil
Trigger trigger = null;
try {
trigger = TriggerFactoryUtil.buildTrigger(TriggerType.CRON, EngageMailScheduler.class.getName(), EngageMailScheduler.class.getName(), new Date(), null, cron);
} catch (SchedulerException e) {
e.printStackTrace();
}
Message message = new Message();
message.put(SchedulerEngine.MESSAGE_LISTENER_CLASS_NAME, EngageMailScheduler.class.getName());
message.put(SchedulerEngine.PORTLET_ID, portlet.getPortletId());
try {
//In Liferay 6.1 use SchedulerEngineUtil, it is deprecated in Liferay 6.2
SchedulerEngineHelperUtil.schedule(trigger, StorageType.PERSISTED, "", "liferay/scheduler_dispatch", message, 5);
} catch (SchedulerException e) {
e.printStackTrace();
}
<portlet-class>com.test.MyScheduler</portlet-class>
com.test.MyScheduler
希望这有帮助。同意马提亚的答案。以下是我为实现这一目标所做的工作
String cron = "0 0/1 * 1/1 * ? *";// You can read it from portal-ext.properties using PropsUtil
Trigger trigger = null;
try {
trigger = TriggerFactoryUtil.buildTrigger(TriggerType.CRON, EngageMailScheduler.class.getName(), EngageMailScheduler.class.getName(), new Date(), null, cron);
} catch (SchedulerException e) {
e.printStackTrace();
}
Message message = new Message();
message.put(SchedulerEngine.MESSAGE_LISTENER_CLASS_NAME, EngageMailScheduler.class.getName());
message.put(SchedulerEngine.PORTLET_ID, portlet.getPortletId());
try {
//In Liferay 6.1 use SchedulerEngineUtil, it is deprecated in Liferay 6.2
SchedulerEngineHelperUtil.schedule(trigger, StorageType.PERSISTED, "", "liferay/scheduler_dispatch", message, 5);
} catch (SchedulerException e) {
e.printStackTrace();
}
<portlet-class>com.test.MyScheduler</portlet-class>
com.test.MyScheduler
希望这能有所帮助。我最近做了一些调查,因为我有类似的要求。我发现这在标准liferay中是不可能的,似乎您必须创建自己的QuartzTask。也许这个链接可以帮助你:,我最近做了一些调查,因为我有一个类似的要求。我发现这在标准liferay中是不可能的,似乎您必须创建自己的QuartzTask。也许这个链接可以帮助你:,