[
https://issues.apache.org/jira/browse/PLUTO-512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Craig Doremus resolved PLUTO-512.
---------------------------------
Resolution: Fixed
Fix Version/s: 2.0-refactoring
2.0.0
Assignee: Craig Doremus
Patch applied to trunk and 2.0-refactoring branch in SVN revs 705837 and 705838.
> improve error logging diagnostics when inputstream == null
> ----------------------------------------------------------
>
> Key: PLUTO-512
> URL: https://issues.apache.org/jira/browse/PLUTO-512
> Project: Pluto
> Issue Type: Improvement
> Components: descriptor
> Affects Versions: 2.0.0
> Reporter: Antony Stubbs
> Assignee: Craig Doremus
> Priority: Minor
> Fix For: 2.0.0, 2.0-refactoring
>
>
> When portlet.xml cannot be found (input stream is null) the error message log
> is not very helpful and is a bit cryptic "is cannot be null - verify
> portlet.xml structure" or something of the sort.
> The main head ache with this is that it doesn't show the cause exception on
> the web page (IMO it should), but it does show the cause exception in the log.
> After a bit of debugging, i traced it down, and my portlet,xml's structure
> was fine, it just wasn't being deployed (m2eclipse doesn't think
> src/main/webapp should be a source folder, so WTP wasn't copying the
> deployment descriptor to the server). So I propose the following slight
> change:
> in PortletDescriptorRegistry#createDefinition:
> {code}
> InputStream in = servletContext.getResourceAsStream(PORTLET_XML);
> + if (in == null)
> + {
> + throw new PortletContainerException("Cannot find " + PORTLET_XML +
> + ". Are you sure it is in the deployed package?");
> + }
> {code}
> Other wise you just get on the web page is the following:
> {code}
> Error rendering portlet.
> java.lang.NullPointerException: Unable to load Portlet App Deployment
> Descriptor:Error loading portlet.xml at context Welcome to Tomcat. Please
> validate the file structure of this portlets portlet.xml file.
> at
> org.apache.pluto.internal.impl.PortletEntityImpl.load(PortletEntityImpl.java:203)
> at
> org.apache.pluto.internal.impl.PortletEntityImpl.getPortletDefinition(PortletEntityImpl.java:154)
> at
> org.apache.pluto.internal.impl.MimeResponseImpl.(MimeResponseImpl.java:116)
> at
> org.apache.pluto.internal.impl.RenderResponseImpl.(RenderResponseImpl.java:57)
> at
> org.apache.pluto.core.DefaultPortletEnvironmentService.createRenderResponse(DefaultPortletEnvironmentService.java:70)
> at
> org.apache.pluto.core.PortletContainerImpl.doRender(PortletContainerImpl.java:215)
> at
> org.apache.pluto.driver.tags.PortletTag.doStartTag(PortletTag.java:152)
> at
> org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspx_meth_pluto_005fportlet_005f0(portlet_002dskin_jsp.java:105)
> at
> org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspService(portlet_002dskin_jsp.java:79)
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
> at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
> at
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535)
> at
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472)
> at
> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
> at
> org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fforEach_005f1(pluto_002ddefault_002dtheme_jsp.java:527)
> at
> org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fotherwise_005f0(pluto_002ddefault_002dtheme_jsp.java:471)
> at
> org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fchoose_005f0(pluto_002ddefault_002dtheme_jsp.java:332)
> at
> org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspService(pluto_002ddefault_002dtheme_jsp.java:165)
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
> at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
> at
> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
> at
> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
> at
> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
> at
> org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:197)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:595)
> {code}
> and in the logs it adds:
> {code}
> Caused by: java.io.IOException: is parameter must not be null
> at
> org.apache.pluto.descriptors.services.jaxb.PortletAppDescriptorServiceImpl.read(PortletAppDescriptorServiceImpl.java:52)
> at
> org.apache.pluto.internal.PortletDescriptorRegistry.createDefinition(PortletDescriptorRegistry.java:159)
> ... 54 more
> {code}
> however the message is parameter must not be null is from jaxb and is
> missleading because "is" is actually inputstream but it sort of implies (is
> how i read it) that "is" is a parameter in your portlet.xml.
> the addition I suggest changes all that to this:
> {code}
> SEVERE: Unable to load Portlet App Deployment Descriptor:Cannot find
> /WEB-INF/portlet.xml. Are you sure it is in the deployed package?
> org.apache.pluto.PortletContainerException: Cannot find /WEB-INF/portlet.xml.
> Are you sure it is in the deployed package?
> at
> org.apache.pluto.internal.PortletDescriptorRegistry.createDefinition(PortletDescriptorRegistry.java:156)
> at
> org.apache.pluto.internal.PortletDescriptorRegistry.getPortletAppDD(PortletDescriptorRegistry.java:130)
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.