[ http://issues.apache.org/jira/browse/PLUTO-281?page=comments#action_12458678 ] Elliot Metsger commented on PLUTO-281: --------------------------------------
getPortletWindowConfig(String id) forwards to registryService.getPortlet(id) registry service forwards to ResourceConfig (in o.a.p.driver.services.impl.resource) the Map on line 55 of ResourceConfig doesn't contain the hot-deployed portlet id, or it is expecting a different key. After debugging, ResourceConfig.addPortletApp wasn't getting called by the PortletService, because there wasn't a PortletRegistryListener attached to the container's PortletRegistryService. > NPE thrown when trying to add a hot deployed portlet to a Pluto page > -------------------------------------------------------------------- > > Key: PLUTO-281 > URL: http://issues.apache.org/jira/browse/PLUTO-281 > Project: Pluto > Issue Type: Bug > Components: portal driver, portlets-admin > Affects Versions: Current CVS > Reporter: Craig Doremus > Assigned To: Elliot Metsger > Fix For: 1.1.0 > > > Adding a hot deployed portlet to a page using the Page Administrator Portlet > results in a NullPointerException which points to line 161 > PortletModeAnchorTag.java (see stack trace below). The hot deployment was > done using the Tomcat manager application. > The proximal cause of this problem is a null PortletWindowConfig object. > However, if a portlet-app record for this portlet is added to > pluto-portal-driver-config.xml, and Pluto is restarted, the portlet can be > sucessfully added to a portal page using the Page Administrator. > Althought null checks can fix the problem in the PortletModeAnchorTag class, > the root problem is that we need to notify users of this problem and its > solution. I have found this NPE also occurs if there are errors in manually > updating the config file or if I forgot to update that file after manually > deploying a new portlet. > TOMCAT ERROR PAGE OUTPUT: > description The server encountered an internal error () that prevented it > from fulfilling this request. > exception > org.apache.jasper.JasperException: Exception in JSP: > /WEB-INF/themes/pluto-default-theme.jsp:109 > 106: <c:forEach var="portlet" varStatus="status" > 107: items="${currentPage.portletIds}" > begin="1" step="2"> > 108: <c:set var="portlet" value="${portlet}" > scope="request"/> > 109: <jsp:include page="portlet-skin.jsp"/> > 110: </c:forEach> > 111: </div> > 112: > Stacktrace: > > org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504) > > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375) > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:148) > javax.servlet.http.HttpServlet.service(HttpServlet.java:689) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > root cause > org.apache.jasper.JasperException: Exception in JSP: > /WEB-INF/themes/portlet-skin.jsp:26 > 23: <div class="portlet" id='<c:out value="${portlet}"/>'> > 24: <div class="header"> > 25: <!-- Portlet Mode Controls --> > 26: <pluto:modeAnchor portletMode="view"/> > 27: <pluto:modeAnchor portletMode="edit"/> > 28: <pluto:modeAnchor portletMode="help"/> > 29: <!-- Window State Controls --> > Stacktrace: > > org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504) > > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) > > org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_forEach_3(pluto_002ddefault_002dtheme_jsp.java:814) > > org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_otherwise_1(pluto_002ddefault_002dtheme_jsp.java:702) > > org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_choose_1(pluto_002ddefault_002dtheme_jsp.java:562) > > org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspService(pluto_002ddefault_002dtheme_jsp.java:159) > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:148) > javax.servlet.http.HttpServlet.service(HttpServlet.java:689) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > root cause > java.lang.NullPointerException > > org.apache.pluto.driver.tags.PortletModeAnchorTag.isPortletModeAllowed(PortletModeAnchorTag.java:161) > > org.apache.pluto.driver.tags.PortletModeAnchorTag.doStartTag(PortletModeAnchorTag.java:89) > > org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspx_meth_pluto_modeAnchor_0(portlet_002dskin_jsp.java:178) > > org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspx_meth_pluto_portlet_0(portlet_002dskin_jsp.java:115) > > org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspService(portlet_002dskin_jsp.java:73) > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) > > org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_forEach_3(pluto_002ddefault_002dtheme_jsp.java:814) > > org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_otherwise_1(pluto_002ddefault_002dtheme_jsp.java:702) > > org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_choose_1(pluto_002ddefault_002dtheme_jsp.java:562) > > org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspService(pluto_002ddefault_002dtheme_jsp.java:159) > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:148) > javax.servlet.http.HttpServlet.service(HttpServlet.java:689) > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
