<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Scheduled Job to check Dates</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=119316343" />
  <subtitle>Scheduled Job to check Dates</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=119316343</id>
  <updated>2026-04-05T04:43:45Z</updated>
  <dc:date>2026-04-05T04:43:45Z</dc:date>
  <entry>
    <title>RE: Scheduled Job to check Dates</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119324820" />
    <author>
      <name>Dominik Marks</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119324820</id>
    <updated>2020-06-05T15:24:35Z</updated>
    <published>2020-06-05T15:24:35Z</published>
    <summary type="html">Maybe you can post the whole class, so that I can see what&amp;#39;s on line 34 of the class? Something at that line seems to be null.</summary>
    <dc:creator>Dominik Marks</dc:creator>
    <dc:date>2020-06-05T15:24:35Z</dc:date>
  </entry>
  <entry>
    <title>RE: Scheduled Job to check Dates</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119321843" />
    <author>
      <name>Nikolaos Kroustalakis</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119321843</id>
    <updated>2020-06-05T14:21:29Z</updated>
    <published>2020-06-05T14:21:29Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;I have the following implementation of the listener:&lt;br&gt;&lt;pre&gt;&lt;code&gt;@Override
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;public void receive(Message message) throws MessageListenerException {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;logger.info("Scheduler for checking dates on Penalties has started...");
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;Date currentDate = new Date();
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; 
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;List&amp;lt;penalty&amp;gt; penalties = service.findAll();
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;for (Penalty penalty : penalties) {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (penalty.endDate == null) {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;System.out.println("This date is null");
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;else if (currentDate.after(penalty.endDate)) {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;penalty.setRevocationOrCompletion(true);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;/penalty&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;And I get this on tomcat:&lt;br&gt;2020-06-05 14:20:00,021 INFO&amp;nbsp; (gr.yptp.hcg.pen.Utils.PenaltySearchUtil.java:29).receive - Scheduler for checking dates on Penalties has started...&lt;br&gt;14:20:00,021 ERROR [liferay/scheduler_dispatch-1][ParallelDestination:74] Unable to process message {destinationName=liferay/scheduler_dispatch, response=null, responseDestinationName=null, responseId=null, payload=null, values={GROUP_NAME=gr.yptp.hcg.pen.Utils.PenaltySearchUtil, PORTLET_ID=penaltysearch_WAR_hcgshipboatcompanyportlet, companyId=0, MESSAGE_LISTENER_UUID=2e03fb6b-7ef0-4df5-b498-a0402eae6efa, groupId=0, DESTINATION_NAME=liferay/scheduler_dispatch, MESSAGE_LISTENER_CLASS_NAME=gr.yptp.hcg.pen.Utils.PenaltySearchUtil, EXCEPTIONS_MAX_SIZE=0, JOB_STATE=com.liferay.portal.kernel.scheduler.JobState@2808fcf8, RECEIVER_KEY=com.liferay.portal.kernel.scheduler.messaging.ReceiverKey@b2c8a854, STORAGE_TYPE=MEMORY_CLUSTERED, JOB_NAME=gr.yptp.hcg.pen.Utils.PenaltySearchUtil}}&lt;br&gt;com.liferay.portal.kernel.messaging.MessageListenerException: java.lang.NullPointerException&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.liferay.portal.kernel.scheduler.messaging.SchedulerEventMessageListenerWrapper.receive(SchedulerEventMessageListenerWrapper.java:86)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:72)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:71)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.Thread.run(Thread.java:748)&lt;br&gt;Caused by: java.lang.NullPointerException&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at gr.yptp.hcg.pen.Utils.PenaltySearchUtil.receive(PenaltySearchUtil.java:34)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.reflect.Method.invoke(Method.java:498)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:67)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.proxy.$Proxy1701.receive(Unknown Source)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.liferay.portal.kernel.scheduler.messaging.SchedulerEventMessageListenerWrapper.receive(SchedulerEventMessageListenerWrapper.java:77)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... 5 more&lt;br&gt;&lt;br&gt;If you can help me understand what I am doing wrong, I would really appreciate it.&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Nikolaos Kroustalakis</dc:creator>
    <dc:date>2020-06-05T14:21:29Z</dc:date>
  </entry>
  <entry>
    <title>RE: Scheduled Job to check Dates</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119320492" />
    <author>
      <name>Dominik Marks</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119320492</id>
    <updated>2020-06-05T11:04:50Z</updated>
    <published>2020-06-05T11:04:50Z</published>
    <summary type="html">You have to implement a MessageListener class. So your gr.yptp.hcg.pen.Utils.PenaltySearchUti should implement MessageListener or extend BaseMessageListener. Everytime the scheduled time is reached the (do)receive-Method is called.&lt;br /&gt;&lt;br /&gt;Example from the Liferay 6.2 source code:  &lt;a href="https://github.com/liferay/liferay-portal/blob/6.2.x/portal-impl/src/com/liferay/portlet/journal/messaging/CheckArticleMessageListener.java"&gt;https://github.com/liferay/liferay-portal/blob/6.2.x/portal-impl/src/com/liferay/portlet/journal/messaging/CheckArticleMessageListener.java&lt;/a&gt;</summary>
    <dc:creator>Dominik Marks</dc:creator>
    <dc:date>2020-06-05T11:04:50Z</dc:date>
  </entry>
  <entry>
    <title>RE: Scheduled Job to check Dates</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119317089" />
    <author>
      <name>Nikolaos Kroustalakis</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119317089</id>
    <updated>2020-06-05T09:38:10Z</updated>
    <published>2020-06-05T09:38:10Z</published>
    <summary type="html">I don&amp;#39;t know exactly how to continue with the listener.</summary>
    <dc:creator>Nikolaos Kroustalakis</dc:creator>
    <dc:date>2020-06-05T09:38:10Z</dc:date>
  </entry>
  <entry>
    <title>RE: Scheduled Job to check Dates</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119318656" />
    <author>
      <name>Dominik Marks</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119318656</id>
    <updated>2020-06-05T08:52:21Z</updated>
    <published>2020-06-05T08:52:21Z</published>
    <summary type="html">Creating a scheduler should be possible. What are your questions? What problems do you have? If you give more information on the concrete problems it may be easier to help you.</summary>
    <dc:creator>Dominik Marks</dc:creator>
    <dc:date>2020-06-05T08:52:21Z</dc:date>
  </entry>
  <entry>
    <title>Scheduled Job to check Dates</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119316342" />
    <author>
      <name>Nikolaos Kroustalakis</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=119316342</id>
    <updated>2020-06-05T06:49:25Z</updated>
    <published>2020-06-05T06:49:25Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;I have a Maven Project in Liferay Portal 6.2.I have the following table:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;CREATE TABLE DISCIPLINARYAUDIT
(
&amp;amp;nbsp; DISCIPLINARYAUDITID NUMBER(19, 0) NOT NULL
, DISCIPLINARYAUDITTYPE VARCHAR2(255 CHAR) NOT NULL
, REVOCATIONORCOMPLETION NUMBER(1, 0)
, STARTDATE DATE
, ENDDATE DATE
)&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;There is a requirement where, once per day (let's say at 00:00), a scheduled job must run where it'll check the &lt;pre&gt;&lt;code&gt;ENDDATE&lt;/code&gt;&lt;/pre&gt; with the current Date. If they are equal, then&amp;nbsp; &lt;pre&gt;&lt;code&gt;REVOCATIONORCOMPLETION&lt;/code&gt;&lt;/pre&gt;&amp;nbsp; must change from 0 to 1.&lt;br&gt;I have added this on &lt;pre&gt;&lt;code&gt;liferay-portlet.xml &lt;/code&gt;&lt;/pre&gt;:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;pre&gt;&lt;code&gt; &amp;lt;portlet&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;portlet-name&amp;gt;penaltysearch&amp;lt;/portlet-name&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;scheduler-entry&amp;gt;
&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;scheduler-event-listener-class&amp;gt;gr.yptp.hcg.pen.Utils.PenaltySearchUtil&amp;lt;/scheduler-event-listener-class&amp;gt;
&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;trigger&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;cron&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;!-- Fire at 00:00 every day --&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;cron-trigger-value&amp;gt;0 0 0 1/1 * ? *&amp;lt;/cron-trigger-value&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/cron&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/trigger&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/scheduler-entry&amp;gt;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;/portlet&amp;gt;&lt;/code&gt;&lt;/pre&gt;But I am having a hard time implementing the listener where the check is going to be made.&lt;br&gt;&lt;br&gt;Any help is really appreciated.Thank you in advance.&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Nikolaos Kroustalakis</dc:creator>
    <dc:date>2020-06-05T06:49:25Z</dc:date>
  </entry>
</feed>
