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 work
Well 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.SupportedModesServiceI
mpl.isPortletModeSupportedByPortlet(SupportedModesServiceImpl.java:
108)
org.apache.pluto.driver.services.impl.resource.SupportedModesServiceI
mpl.isPortletModeSupported(SupportedModesServiceImpl.java:81)
org.apache.pluto.driver.config.impl.DriverConfigurationImpl.isPortlet
ModeSupported(DriverConfigurationImpl.java:125)
org.apache.pluto.driver.tags.PortletModeAnchorTag.isPortletModeAllowe
d(PortletModeAnchorTag.java:161)
org.apache.pluto.driver.tags.PortletModeAnchorTag.doStartTag
(PortletModeAnchorTag.java:88)
org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspx_meth_plu
to_modeAnchor_0(portlet_002dskin_jsp.java:178)
org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspx_meth_plu
to_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._js
px_meth_c_forEach_2(pluto_002ddefault_002dtheme_jsp.java:746)
org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._js
px_meth_c_otherwise_1(pluto_002ddefault_002dtheme_jsp.java:694)
org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._js
px_meth_c_choose_1(pluto_002ddefault_002dtheme_jsp.java:562)
org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._js
pService(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 work
Okay 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%20Admin
The 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_pl
uto_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._j
spx_meth_c_forEach_2(pluto_002ddefault_002dtheme_jsp.java:746)
at
org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._j
spx_meth_c_otherwise_1(pluto_002ddefault_002dtheme_jsp.java:694)
at
org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._j
spx_meth_c_choose_1(pluto_002ddefault_002dtheme_jsp.java:562)
at
org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._j
spService(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_pl
uto_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._j
spx_meth_c_forEach_2(pluto_002ddefault_002dtheme_jsp.java:746)
at
org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._j
spx_meth_c_otherwise_1(pluto_002ddefault_002dtheme_jsp.java:694)
at
org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._j
spx_meth_c_choose_1(pluto_002ddefault_002dtheme_jsp.java:562)
at
org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._j
spService(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)