Details
-
Improvement
-
Status: Resolved
-
Trivial
-
Resolution: Fixed
-
1.1.5, 2.0.0
-
None
-
Tomcat 5.5.26
Description
A very common error when working with JSR-168 portlets for the first time is when the servlet context of the portlet app cannot be accessed by the portal app. This is usually due to an app server misconfiguration (ex: forgetting to set crossContext="true" on Tomcat) or a failed deployment of the portlet app.
On Pluto 1.1.5, when trying to render a portlet and the servlet context of the portlet app cannot be retrieved, a generic NullPointerException is thrown from DefaultPortletInvokerService.invoke (line 151). It would be much better to throw a PortletContainerException with a detailed message of the problem.
This is actually already implemented in PortletContainerImpl.getPortletApplicationDescriptor (line 387), but the same logic is not used in the doRender, doAction, doLoad, and doAdmin methods of PortletContainerImpl. This code could be pulled out into a private method on PortletContainerImpl, or it could be placed directly into PortletContextManager.getPortletContext(ServletContext, String).