Spring portlet intermittently fails to deploy on JPP 6

Solution Verified - Updated -

Issue

We have a few Spring based portlets which are working fine on EPP 5. Now that we are migrating to JPP 6, the deployment is successful sometimes, but intermittently fails with the following error:

10:14:59,578 ERROR [org.gatein.pc.portlet.impl.container.LifeCycle] (ServerService Thread Pool -- 63) Cannot promote object to STARTED: org.gatein.pc.portlet.container.PortletInitializationException: The portlet SpringTestPortlet threw a runtime exception during init
    at org.gatein.pc.portlet.impl.jsr168.PortletContainerImpl.start(PortletContainerImpl.java:312) [pc-portlet-2.4.3.Final-redhat-1.jar:2.4.3.Final-redhat-1]
    at org.gatein.pc.portlet.impl.container.PortletContainerLifeCycle.invokeStart(PortletContainerLifeCycle.java:99) [pc-portlet-2.4.3.Final-redhat-1.jar:2.4.3.Final-redhat-1]
    ...
    at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:93) [jboss-as-web-7.2.1.Final-redhat-10.jar:7.2.1.Final-redhat-10]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) [rt.jar:1.6.0_34]
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) [rt.jar:1.6.0_34]
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) [rt.jar:1.6.0_34]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_34]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_34]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_34]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: java.lang.NullPointerException
    at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:203) [xwork-2.1.2.jar:]
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyResultType(XmlConfigurationProvider.java:511) [xwork-2.1.2.jar:]
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addResultTypes(XmlConfigurationProvider.java:482) [xwork-2.1.2.jar:]
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:438) [xwork-2.1.2.jar:]
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:265) [xwork-2.1.2.jar:]
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111) [struts2-core-2.1.6.jar:]
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:189) [xwork-2.1.2.jar:]
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55) [xwork-2.1.2.jar:]
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:360) [struts2-core-2.1.6.jar:]
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:403) [struts2-core-2.1.6.jar:]
    at com.three.sprint.asksid.portlet.Struts2Jsr168Dispatcher.init(Struts2Jsr168Dispatcher.java:105) [askSid-1.0.0-SNAPSHOT.jar:]
    at org.gatein.pc.portlet.impl.jsr168.PortletContainerImpl.initPortlet(PortletContainerImpl.java:441) [pc-portlet-2.4.3.Final-redhat-1.jar:2.4.3.Final-redhat-1]
    at org.gatein.pc.portlet.impl.jsr168.PortletContainerImpl.start(PortletContainerImpl.java:296) [pc-portlet-2.4.3.Final-redhat-1.jar:2.4.3.Final-redhat-1]
    ... 29 more

So we see the root cause is a NullPointerException in SpringObjectFactory class. Line 203 in this class is:

203:       if (this.appContext.containsBean(className))

We think this happens when the Portal Container is deployed after the portlet deployment. Is there a way to ensure that the portlet deployment is happening after the Portal Container initialization?

Environment

  • Red Hat JBoss Portal Platform (JPP)
    • 6.1.1

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content