<?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>Liferay 7: Can somebody get the ModelListener sample to run?</title>
  <link rel="self" href="https://liferay.dev/es/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=110541778" />
  <subtitle>Liferay 7: Can somebody get the ModelListener sample to run?</subtitle>
  <id>https://liferay.dev/es/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=110541778</id>
  <updated>2026-04-27T01:29:56Z</updated>
  <dc:date>2026-04-27T01:29:56Z</dc:date>
  <entry>
    <title>RE: Liferay 7: Can somebody get the ModelListener sample to run?</title>
    <link rel="alternate" href="https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110565573" />
    <author>
      <name>Martin Jonik</name>
    </author>
    <id>https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110565573</id>
    <updated>2018-07-16T08:29:20Z</updated>
    <published>2018-07-16T08:29:20Z</published>
    <summary type="html">&lt;p&gt;So to summarize the work of my last week:&lt;/p&gt;
&lt;p&gt;There is no difference between Tomcat or Wildfly regarding Modellisteners.&lt;/p&gt;
&lt;p&gt;Sometimes they work and sometimes they don't.  Even if you redeploy
  the exactly same OSGi module.&lt;/p&gt;
&lt;p&gt;The System.outs from the sample application won't show up on the
  console in any case. The same happens for log messages via JUL, SL4J
  and LOG4J too. These messages go to /dev/null . At least for Wildfly.
  You have to use the Liferay Logging Api.  Any exception that happens
  in the Modellistener will go to /dev/null too and you won't see
  nothing, telling you your Modellistener does not work.  I am using
  some 3rd party libs that are deployed together with my OSGi module. 
  The 3rd party lib is using SL4J. So any messages this lib wants to
  tell you goes to /dev/null. If there was any dependecy problem with
  theses 3rd party libs in the OSGi module you can be 99% sure your
  module won't be able to be redeployed again. the console will show you
  that it has been redeployed but sometimes the code will not be
  replaced or sometimes the ModelListeners will not be registered.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</summary>
    <dc:creator>Martin Jonik</dc:creator>
    <dc:date>2018-07-16T08:29:20Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay 7: Can somebody get the ModelListener sample to run?</title>
    <link rel="alternate" href="https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110544125" />
    <author>
      <name>Victor Zorin</name>
    </author>
    <id>https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110544125</id>
    <updated>2018-07-13T10:36:30Z</updated>
    <published>2018-07-13T10:36:30Z</published>
    <summary type="html">&lt;p&gt;So it's hard to say what's the cause in your case, I used the same
  blade sample project (probably 6-8 months ago), all using maven.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;May be try to get the tomcat LR7 bundle, as is, do not modify
  anything, check whether your module works on it. If it works, so the
  difference would be wildfly bundle-specifc troubles or some other
  settings. So far, we could not complain about any model listeners on
  our installations...&lt;/p&gt;</summary>
    <dc:creator>Victor Zorin</dc:creator>
    <dc:date>2018-07-13T10:36:30Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay 7: Can somebody get the ModelListener sample to run?</title>
    <link rel="alternate" href="https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110543763" />
    <author>
      <name>Martin Jonik</name>
    </author>
    <id>https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110543763</id>
    <updated>2018-07-13T10:24:29Z</updated>
    <published>2018-07-13T10:24:29Z</published>
    <summary type="html">&lt;p&gt;It does not work for me. I tried many types of ModelListeners but
  they don't get called.&lt;/p&gt;
&lt;p&gt;The sample above should work.&lt;/p&gt;
&lt;p&gt;I used the maven build. The module is active.  But it does not work.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I also used the legacy method. (war file with portal.properties).
  Does not work either.&lt;/p&gt;</summary>
    <dc:creator>Martin Jonik</dc:creator>
    <dc:date>2018-07-13T10:24:29Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay 7: Can somebody get the ModelListener sample to run?</title>
    <link rel="alternate" href="https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110543345" />
    <author>
      <name>Victor Zorin</name>
    </author>
    <id>https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110543345</id>
    <updated>2018-07-13T09:27:13Z</updated>
    <published>2018-07-13T09:27:13Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;Checked through other projects, found code which listens to page
  changes, also works on all LR7 / DXPs:&lt;/p&gt;
&lt;p&gt;
  &lt;br&gt;
  &lt;code&gt;import org.osgi.service.component.annotations.Component;&amp;lt;br&amp;gt;
    import org.osgi.service.component.annotations.Reference;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;import
    com.liferay.portal.kernel.exception.ModelListenerException;&amp;lt;br&amp;gt;
    import com.liferay.portal.kernel.log.Log;&amp;lt;br&amp;gt; import
    com.liferay.portal.kernel.log.LogFactoryUtil;&amp;lt;br&amp;gt; import
    com.liferay.portal.kernel.model.BaseModelListener;&amp;lt;br&amp;gt; import
    com.liferay.portal.kernel.model.ModelListener;&amp;lt;br&amp;gt; import com.liferay.portal.kernel.model.Layout;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;import
    au.com.fifthocean.portal.subject.search.manager.SearchPortalManager;&amp;lt;br&amp;gt;
    import au.com.fifthocean.portal.subject.search.service.service.SearchSubjectLocalServiceUtil;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;@Component(immediate = true, service =
    ModelListener.class)&amp;lt;br&amp;gt; public class PageMutationListener extends
    BaseModelListener&amp;amp;lt;Layout&amp;amp;gt; {&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;private static final Log
    logger = LogFactoryUtil.getLog(PageMutationListener.class);&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;
    &amp;amp;nbsp;&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;@Override&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;public void onAfterUpdate(Layout
    model) throws ModelListenerException {&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;//
    logger.info("layout updated " + model.getName());&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;
    &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;// check if layout is a subject home&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;try {&amp;lt;br&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;Boolean isSubjectHome =
    (boolean)model.getExpandoBridge().getAttribute(SearchPortalManager.customFieldIsSubjectHGome);&amp;lt;br&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;if(isSubjectHome) {&amp;lt;br&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;this._manager.updatePageIndex(model.getCompanyId(),
    model.getPlid());&amp;lt;br&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;} else {&amp;lt;br&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;// attempt to delete the index&amp;lt;br&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;// this is in
    case the 'Is Subject Hiome' was turned to 'false'&amp;lt;br&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;SearchSubjectLocalServiceUtil.deletePageIndexes(model.getCompanyId(),
    model.getPlid());&amp;lt;br&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;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}
    catch(Exception e) {&amp;lt;br&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;logger.error("Unable to
    access page custom field " +
    SearchPortalManager.customFieldIsSubjectHGome, e);&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;
    &amp;amp;nbsp;}&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; @Reference&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; private
    volatile SearchPortalManager _manager;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;}&lt;/code&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Victor Zorin</dc:creator>
    <dc:date>2018-07-13T09:27:13Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay 7: Can somebody get the ModelListener sample to run?</title>
    <link rel="alternate" href="https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110542998" />
    <author>
      <name>Victor Zorin</name>
    </author>
    <id>https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110542998</id>
    <updated>2018-07-13T09:22:07Z</updated>
    <published>2018-07-13T09:22:07Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;Never had problems with ModelListeners, on Liferay 7 / DXP, this is a
  similar example but listening to article modifications, not the layout.&lt;/p&gt;
&lt;p&gt;Full code example is below (with some own services commented out):&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;package au.com.fifthocean.cospaces.portal.manager.listener;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;import org.osgi.service.component.annotations.Component;&amp;lt;br&amp;gt;
    import org.osgi.service.component.annotations.Reference;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;//import au.com.fifthocean.cospaces.portal.manager.CoSpacesManager;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;import
    com.liferay.portal.kernel.exception.ModelListenerException;&amp;lt;br&amp;gt;
    import com.liferay.portal.kernel.log.Log;&amp;lt;br&amp;gt; import
    com.liferay.portal.kernel.log.LogFactoryUtil;&amp;lt;br&amp;gt; import
    com.liferay.portal.kernel.model.BaseModelListener;&amp;lt;br&amp;gt; import
    com.liferay.portal.kernel.model.ModelListener;&amp;lt;br&amp;gt; import com.liferay.journal.model.JournalArticle;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;@Component(immediate = true, service =
    ModelListener.class)&amp;lt;br&amp;gt; public class ArticleApprovalListener
    extends BaseModelListener&amp;amp;lt;JournalArticle&amp;amp;gt; {&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;private
    static final Log logger = LogFactoryUtil.getLog(ArticleApprovalListener.class);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;private final static int APPROVED_STATE = 0;&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;
    &amp;amp;nbsp;@Override&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;public void onAfterUpdate(JournalArticle model)
    throws ModelListenerException {&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if(model.getStatus()
    == APPROVED_STATE) {&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;
    //this._spacesManager.enrollArticleForKPointAllocation(model);&amp;lt;br&amp;gt;
    &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&amp;lt;br&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;&amp;amp;nbsp; &amp;amp;nbsp; //@Reference&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; //private volatile CoSpacesManager _spacesManager;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;code&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Are you sure that your OSGI module is deployed and active?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Victor Zorin</dc:creator>
    <dc:date>2018-07-13T09:22:07Z</dc:date>
  </entry>
  <entry>
    <title>Liferay 7: Can somebody get the ModelListener sample to run?</title>
    <link rel="alternate" href="https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110541777" />
    <author>
      <name>Martin Jonik</name>
    </author>
    <id>https://liferay.dev/es/c/message_boards/find_message?p_l_id=119785294&amp;messageId=110541777</id>
    <updated>2018-07-13T07:19:32Z</updated>
    <published>2018-07-13T07:19:32Z</published>
    <summary type="html">&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I tried to run this sample on Liferay 7.0-GA5 / Liferay 7.1-GA1
  Wildfly Bundle.&lt;/p&gt;
&lt;p&gt;The OSGi deployment was successful.&lt;/p&gt;
&lt;p&gt;But the ModelListener won't get called.&lt;/p&gt;
&lt;p&gt;Can someone help?&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://github.com/liferay/liferay-blade-samples/tree/master/maven/extensions/model-listener"&gt;https://github.com/liferay/liferay-blade-samples/tree/master/maven/extensions/model-listener&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</summary>
    <dc:creator>Martin Jonik</dc:creator>
    <dc:date>2018-07-13T07:19:32Z</dc:date>
  </entry>
</feed>
