Scott, I tried it out, but got errors, see below. Here are the steps I used to deploy ... please let me know if I am missing something or doing something wrong
0. Pull latest on PortletHub branch > git brach *PortletHub master > git pull origin 1. Build Pluto from root directory mvn clean install 2. Build Distribution ant -f dist-build.xml 3. start Pluto cd target/dist/pluto-2.1.0-SNAPSHOT/bin chmod +x *.sh ./startup.sh 4. deploy the Portlet Hub cp PortletHubDemo/target/PortletHubDemo.war target/dist/pluto-2.1.0-SNAPSHOT/webapps/ 5. Login to Pluto as pluto/pluto 6. Create a new page called Hub from Pluto Admin 7. Add any Hub portlet to the Hub page. I tried a few, they all get this error when navigating to the Hub page: Error rendering portlet MessageBoxPortlet. javax.portlet.PortletException: org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application at org.apache.pluto.container.impl.PortletRequestDispatcherImpl.doDispatch(PortletRequestDispatcherImpl.java:187) at org.apache.pluto.container.impl.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:227) at basic.portlet.MessageBoxPortlet.doView(MessageBoxPortlet.java:63) at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:348) at javax.portlet.GenericPortlet.render(GenericPortlet.java:253) at org.apache.pluto.driver.services.container.FilterChainImpl.doFilter(FilterChainImpl.java:163) at org.apache.pluto.driver.services.container.FilterChainImpl.processFilter(FilterChainImpl.java:91) at org.apache.pluto.driver.services.container.FilterManagerImpl.processFilter(FilterManagerImpl.java:105) at org.apache.pluto.container.driver.PortletServlet.dispatch(PortletServlet.java:340) at org.apache.pluto.container.driver.PortletServlet.doGet(PortletServlet.java:261) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530) at org.apache.pluto.driver.container.DefaultPortletInvokerService.invoke(DefaultPortletInvokerService.java:233) at org.apache.pluto.driver.container.DefaultPortletInvokerService.render(DefaultPortletInvokerService.java:117) at org.apache.pluto.container.impl.PortletContainerImpl.doRender(PortletContainerImpl.java:157) at org.apache.pluto.driver.tags.PortletTag.doStartTag(PortletTag.java:165) at org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspService(portlet_002dskin_jsp.java:95) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:927) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fforEach_005f1(pluto_002ddefault_002dtheme_jsp.java:617) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fotherwise_005f0(pluto_002ddefault_002dtheme_jsp.java:561) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fchoose_005f0(pluto_002ddefault_002dtheme_jsp.java:422) at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspService(pluto_002ddefault_002dtheme_jsp.java:217) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329) at org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:255) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:56) at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:410) at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:117) at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:311) at org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:152) at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410) at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475) at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1425) at org.apache.jasper.compiler.Parser.parse(Parser.java:138) at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242) at org.apache.jasper.compiler.ParserController.parse(ParserController.java:102) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:373) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:644) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530) at org.apache.pluto.container.impl.PortletRequestDispatcherImpl.doDispatch(PortletRequestDispatcherImpl.java:174) ... 68 more -- David S Taylor 707 529-9194 da...@bluesunrise.com On Wed, Dec 3, 2014 at 7:37 AM, Martin Scott Nicklous < scott.nickl...@de.ibm.com> wrote: > > Hi, > > I pushed several commits to the PortletHub branch of the Pluto repository, > completing the Portlet Hub functionality (I think). There are quite a few > changes, one of which ended up going deeper than I had really expected, > which is why it took a little longer than planned. > > Changes: > > 1) Added accessor helper functions to the PortletParameters and > PortletState objects > > 2) Modified portlet JavaScript code to use the new accessors > > 3) Used jslint to improve the portletHubImpl.js code > > 4) Completed the portlet hub action functionality by allowing the Portlet > Client JavaScript code to provide a form element to the action() method > rather than having to set the action parameters on the URL. > > In order to keep the client-side implementation easy, I implemented this > through use of the XHR2 FormData object. > > It turns out that XHR2 sends FormData as "multipart/form-data" rather than > as "application/x-www-form-urlencoded", so multipart form support was > needed on the server side as well. In order to avoid writing my own parser > for the multipart form data, I moved the Pluto servlet dependency to v3.0. > Some JSPs weren't working for non-obvious reasons, so I moved the JSP and > EL dependencies to v2.2 and moved to the latest standard tag library as > well. That ended up solving the problem. > > Now everything seems to work. We've got the PortletHub functionality > complete AND we have moved to the Java EE 6 level of servlet api, JSP api, > EL api, and JSTL support. > > It would be good if someone could try this out and verify that it doesn't > just work only on my machine. Since there are a number of changes, you will > have to pull the latest level from the PortletHub branch, recompile, and > completely redeploy Pluto and the demo portlets to see the changes. > > regards, > Scott > >