Troy,What many portals do is provide some sort of portlet deployment tool. uPortal (which uses Pluto) does this. While it isn't as nice as just dropping the WAR into the webapps directory it does shield you from knowing what is going on with the web.xml or having to maintain it. I actually support keeping this web.xml magic as far away from the developer as possible. I have done some (cursory) looking into having a portal detect new web-apps and re-write the web.xml at deploy time it really seems like the portal would have to have hooks into the servlet container to catch the deployment of the WAR and re-write the web.xml before the container gets around to parsing it.
There may be some options with just looking at the webapps dir every few seconds and updaing web.xmls as needed and counting on tomcat to re-load the changed app but that may not be the best approach since all of the webapps would get loaded twice.
-Eric Troy Motte wrote:
It's so much fun answering my own email. But I understand now.Here's how I see it: The dirty secret about Portlets is that they aren't like normal J2EE apps where you code your application and drop your war file into any standard container and everything works as expected. Your application has to be customized for the container. Specifically, your web.xml has to be mangled to suit the container. For each container, you will have to maintain a separate web.xml. You will likely have to maintain multiple IDE's, build tools, etc., since everybody seems to insist on hiding the specifics of web.xml mangling behind development tools required by the container. It would be nice if the container would handle web.xml mangling instead of doing it at build time, but that seems to be difficult, as nobody does it that way. I find this rather dissapointing. I'd be interested in others' perceptions. ----- Original Message ---- From: Troy Motte <[EMAIL PROTECTED]> To: [email protected] Sent: Thursday, March 15, 2007 4:00:20 PM Subject: Trying to get a portlet to work [was Re: Administration Portlet doesn't work] Okay I'm getting flustered. I've followed the configuration instructions for pluto-portal-driver-config.xml, including the portlet-app element (even though the other portlets don't seem to need this). Checking on the source code, what I'm seeing is that the portletRegistry probably doesn't have an entry for my portlet. I'm back to the same thing as ever - why doesn't Pluto recognize my portlet? Does anybody have any ideas? I'm totally at a loss. Troy ----- Original Message ---- From: Troy Motte <[EMAIL PROTECTED]> To: [email protected] Sent: Thursday, March 15, 2007 3:29:59 PM Subject: Re: Administration Portlet doesn't workWell I wasn't able to get the admin portlet to completely recognize my portlet but I did manage to create a page with my portlet on it by editing pluto-portal-driver-config.xml.I now get a blowup to the effect of what's below. I've implemented doView, doEdit, doHelp however. java.lang.NullPointerException org.apache.pluto.driver.services.impl.resource.SupportedModesServiceImpl.isPortletModeSupportedByPortlet(SupportedModesServiceImpl.java:108) org.apache.pluto.driver.services.impl.resource.SupportedModesServiceImpl.isPortletModeSupported(SupportedModesServiceImpl.java:81) org.apache.pluto.driver.config.impl.DriverConfigurationImpl.isPortletModeSupported(DriverConfigurationImpl.java:125) org.apache.pluto.driver.tags.PortletModeAnchorTag.isPortletModeAllowed(PortletModeAnchorTag.java:161) org.apache.pluto.driver.tags.PortletModeAnchorTag.doStartTag(PortletModeAnchorTag.java:88) 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:334) 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_2(pluto_002ddefault_002dtheme_jsp.java:746) org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_otherwise_1(pluto_002ddefault_002dtheme_jsp.java:694) 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:334) 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:147) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) ----- Original Message ---- From: Troy Motte <[EMAIL PROTECTED]> To: [email protected] Sent: Thursday, March 15, 2007 2:37:41 PM Subject: Re: Administration Portlet doesn't workOkay thanks for letting me know.I tried 1.1.0 and the admin page works fine. Now I only need to deploy my portlet.I created a war file and successfully deployed it into the tomcat instance that's part of the bundle. But I'm trying to figure out how to get Pluto to notice it. Note that I have yet to successfully deploy a portlet in anyone's portlet container and I'm really not sure what I'm missing.I've noticed that when I look at other portlets there are often Servlets mentioned in web.xml that seem to parallel the portlet itself. I've never seen anything in the Portlet Spec about that. Should I be writing some servlets? Just trying to hello world right now. If there's a better mailing list for my questions please feel free to direct me to it... Troy ----- Original Message ---- From: David H. DeWolf <[EMAIL PROTECTED]> To: [email protected] Sent: Thursday, March 15, 2007 12:49:08 PM Subject: Re: Administration Portlet doesn't work Thanks for the update.This is a known issue with version 1.1.1. It has been fixed in the trunk and 1.1.2 is due out shortly. If you'd like, role back to 1.1.0 and you should be fine.David Troy Motte wrote:Hello,I just downloaded the pluto "bundle" from http://www.eng.lsu.edu/mirrors/apache/portals/pluto/pluto-current-bundle.zip. I installed and after setting JAVA_HOME in bin/startup.bat I had it up and running. I went to:http://localhost:8080/pluto That looked fine. I eventually recognized that "Navigation" is a menu, and went to "Pluto Admin". That took me to this URL: http://localhost:8080/pluto/portal/Pluto%20AdminThe Pluto Page Administrator portlet printed the somewhat cryptic stack trace enclosed below.I was really hoping to be able to find something I could test simple portlets on without having to install a variety of IDE's, build scripting environments, etc.. Is Pluto capable of providing that facility or am I asking too much? I had no luck with Jetspeed. Troy javax.portlet.PortletException at org.apache.pluto.internal.impl.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:114) at org.apache.pluto.driver.portlets.GenericPlutoPortlet.doView(GenericPlutoPortlet.java:39) at org.apache.pluto.driver.portlets.PageAdminPortlet.doView(PageAdminPortlet.java:89) at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:247) at javax.portlet.GenericPortlet.render(GenericPortlet.java:175) at org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:198) at org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:141) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at org.apache.pluto.core.DefaultPortletInvokerService.invoke(DefaultPortletInvokerService.java:169) at org.apache.pluto.core.DefaultPortletInvokerService.render(DefaultPortletInvokerService.java:103) at org.apache.pluto.core.PortletContainerImpl.doRender(PortletContainerImpl.java:178) at org.apache.pluto.driver.tags.PortletTag.doStartTag(PortletTag.java:153) at org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspx_meth_pluto_portlet_0(portlet_002dskin_jsp.java:101) at org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspService(portlet_002dskin_jsp.java:76) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_forEach_2(pluto_002ddefault_002dtheme_jsp.java:746) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_otherwise_1(pluto_002ddefault_002dtheme_jsp.java:694) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_choose_1(pluto_002ddefault_002dtheme_jsp.java:562) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspService(pluto_002ddefault_002dtheme_jsp.java:159) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:147) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:419) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) Caused by: javax.servlet.ServletException at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843) at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776) at org.apache.jsp.WEB_002dINF.fragments.admin.page.view_jsp._jspService(view_jsp.java:263) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at org.apache.pluto.internal.impl.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:107) ... 66 more Nested Exception is javax.servlet.ServletException at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843) at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776) at org.apache.jsp.WEB_002dINF.fragments.admin.page.view_jsp._jspService(view_jsp.java:263) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at org.apache.pluto.internal.impl.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:107) at org.apache.pluto.driver.portlets.GenericPlutoPortlet.doView(GenericPlutoPortlet.java:39) at org.apache.pluto.driver.portlets.PageAdminPortlet.doView(PageAdminPortlet.java:89) at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:247) at javax.portlet.GenericPortlet.render(GenericPortlet.java:175) at org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:198) at org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:141) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at org.apache.pluto.core.DefaultPortletInvokerService.invoke(DefaultPortletInvokerService.java:169) at org.apache.pluto.core.DefaultPortletInvokerService.render(DefaultPortletInvokerService.java:103) at org.apache.pluto.core.PortletContainerImpl.doRender(PortletContainerImpl.java:178) at org.apache.pluto.driver.tags.PortletTag.doStartTag(PortletTag.java:153) at org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspx_meth_pluto_portlet_0(portlet_002dskin_jsp.java:101) at org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspService(portlet_002dskin_jsp.java:76) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_forEach_2(pluto_002ddefault_002dtheme_jsp.java:746) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_otherwise_1(pluto_002ddefault_002dtheme_jsp.java:694) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_choose_1(pluto_002ddefault_002dtheme_jsp.java:562) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspService(pluto_002ddefault_002dtheme_jsp.java:159) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:147) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:419) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)
smime.p7s
Description: S/MIME Cryptographic Signature
