BackGroundTask is not working

Raghu teja, modified 7 Years ago. Junior Member Posts: 61 Join Date: 3/10/11 Recent Posts

Hi All,

 

I am  using liferay dxp and trying to execute backgroundtask as below. But finally getting an error as "class not found ........ ".

 

I have a module , where taskexecutor class resides in same module.

 

&nbsp;&nbsp; &nbsp;ThemeDisplay themeDisplay = (ThemeDisplay)resourceRequest.getAttribute(WebKeys.THEME_DISPLAY);<br> &nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp;<br> &nbsp;&nbsp;<br> &nbsp;&nbsp; &nbsp;Map&lt;String, Serializable&gt; taskContextMap = new HashMap&lt;&gt;();<br> &nbsp;&nbsp; &nbsp;taskContextMap.put("sample", new TestPoJO());<br> &nbsp;&nbsp;

&nbsp;&nbsp; &nbsp;try {<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;backgroundTaskmanager.addBackgroundTask(themeDisplay.getUserId(), themeDisplay.getScopeGroupId(), "test",<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;com.liferay.backgroundtask.executor.TestBackGroundExecutor.class, taskContextMap, new ServiceContext());<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; &nbsp;} catch (PortalException e) {<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;e.printStackTrace();<br> &nbsp;&nbsp; &nbsp;}

 

Below is the task executor class

 

@Component(<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;immediate = true,<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;property = {<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"background.task.executor.class.name=com.liferay.backgroundtask.executor.TestBackGroundExecutor"<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;},<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;service = BackgroundTaskExecutor.class<br> &nbsp;&nbsp; &nbsp;)
public class TestBackGroundExecutor extends BaseBackgroundTaskExecutor {

&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; &nbsp;@Override<br> &nbsp;&nbsp; &nbsp;public BackgroundTaskResult execute(BackgroundTask backgroundTask) throws Exception {<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;System.out.println("This is BackGround executor");<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Map&lt;String, Serializable&gt; map = backgroundTask.getTaskContextMap();<br> &nbsp; &nbsp; &nbsp; &nbsp; TestPoJO testPojo = (TestPoJO) map.get("sample");<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return BackgroundTaskResult.SUCCESS;<br> &nbsp;&nbsp; &nbsp;}

 

TestPOJO class as below, which resides in same module only.

 

 

package jquery.request.timeout.portlet;

public class TestPoJO implements Serializable {<br> &nbsp;&nbsp; &nbsp;private static final long serialVersionUID = 1L;<br> &nbsp;&nbsp; &nbsp;<br> &nbsp;&nbsp; &nbsp;private String field1;

&nbsp;&nbsp; &nbsp;public String getField1() {<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return field1;<br> &nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public void setField1(String field1) {<br> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;this.field1 = field1;<br> &nbsp;&nbsp; &nbsp;}
 

}

 

So whenever  i am trying to execute the class i am getting as error below 

 

 

Caused by: java.lang.IllegalStateException: Unable to deserialize object<br> &nbsp;&nbsp; &nbsp;at com.liferay.portal.json.JSONFactoryImpl.deserialize(JSONFactoryImpl.java:188)<br> &nbsp;&nbsp; &nbsp;at com.liferay.portal.dao.orm.hibernate.MapType.nullSafeGet(MapType.java:95)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.type.CompositeCustomType.nullSafeGet(CompositeCustomType.java:213)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.type.AbstractType.hydrate(AbstractType.java:104)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2283)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.loader.Loader.getRow(Loader.java:1355)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.loader.Loader.doQuery(Loader.java:829)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.loader.Loader.loadEntity(Loader.java:2037)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3294)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:269)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.impl.SessionImpl.get(SessionImpl.java:1005)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.event.def.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:453)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:255)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:851)<br> &nbsp;&nbsp; &nbsp;at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855)<br> &nbsp;&nbsp; &nbsp;at com.liferay.portal.dao.orm.hibernate.SessionImpl.merge(SessionImpl.java:241)<br> &nbsp;&nbsp; &nbsp;... 28 more<br> Caused by: org.jabsorb.serializer.UnmarshallException: key sample Class specified in javaClass hint not found: jquery.request.timeout.portlet.TestPoJO<br> &nbsp;&nbsp; &nbsp;at org.jabsorb.serializer.impl.MapSerializer.unmarshall(MapSerializer.java:270)<br> &nbsp;&nbsp; &nbsp;at org.jabsorb.JSONSerializer.unmarshall(JSONSerializer.java:692)<br> &nbsp;&nbsp; &nbsp;at com.liferay.portal.json.jabsorb.serializer.LiferayJSONSerializer.unmarshall(LiferayJSONSerializer.java:50)<br> &nbsp;&nbsp; &nbsp;at org.jabsorb.JSONSerializer.fromJSON(JSONSerializer.java:262)<br> &nbsp;&nbsp; &nbsp;at com.liferay.portal.json.JSONFactoryImpl.deserialize(JSONFactoryImpl.java:181)<br> &nbsp;&nbsp; &nbsp;... 56 more<br> Caused by: org.jabsorb.serializer.UnmarshallException: Class specified in javaClass hint not found: jquery.request.timeout.portlet.TestPoJO<br> &nbsp;&nbsp; &nbsp;at org.jabsorb.JSONSerializer.getClassFromHint(JSONSerializer.java:748)<br> &nbsp;&nbsp; &nbsp;at org.jabsorb.JSONSerializer.unmarshall(JSONSerializer.java:672)<br> &nbsp;&nbsp; &nbsp;at com.liferay.portal.json.jabsorb.serializer.LiferayJSONSerializer.unmarshall(LiferayJSONSerializer.java:50)<br> &nbsp;&nbsp; &nbsp;at org.jabsorb.serializer.impl.MapSerializer.unmarshall(MapSerializer.java:265)<br> &nbsp;&nbsp; &nbsp;... 60 more<br> Caused by: java.lang.ClassNotFoundException: jquery.request.timeout.portlet.TestPoJO<br> &nbsp;&nbsp; &nbsp;at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)<br> &nbsp;&nbsp; &nbsp;at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142)<br> &nbsp;&nbsp; &nbsp;at java.lang.Class.forName0(Native Method)<br> &nbsp;&nbsp; &nbsp;at java.lang.Class.forName(Class.java:264)<br> &nbsp;&nbsp; &nbsp;at org.jabsorb.JSONSerializer.getClassFromHint(JSONSerializer.java:744)<br> &nbsp;&nbsp; &nbsp;... 63 more

 

Please help me to resolve the issue.

thumbnail
Chris Huff, modified 7 Years ago. Junior Member Posts: 25 Join Date: 4/14/11 Recent Posts

Is TestPOJO class externally exposed in your bnd (Export-Package:) file? the task will get picked up by the portla and I'm thinking the Portal may need access to that class.

Raghu teja, modified 7 Years ago. Junior Member Posts: 61 Join Date: 3/10/11 Recent Posts

Thanks Chris Huff.

I didn't exposed the class in bnd file. I will  expose the class (Export-Package:) and try again. I will let you know the results.

Raghu teja, modified 7 Years ago. Junior Member Posts: 61 Join Date: 3/10/11 Recent Posts

Hi,

 

I  have tried to export the package in bnd. But still same error.

 

Please find the module in attachment.

Ravi Shah, modified 7 Years ago. Junior Member Posts: 59 Join Date: 1/2/14 Recent Posts

Hi, 

 

Can you please take a look at below link: 

 

https://issues.liferay.com/browse/LPS-54220