David H. DeWolf wrote: > You're finding some interesting things. If you find anything that > would be easier to implement by changing an implementation of pluto, > let us know. It's possible that any enhancements you'd need would > also make someone else's life easier.
In an attempt to document more carefully what I had done, I was looking at my code and noticed a subtle bug that was causing me to wrongly interpret the symptoms I was seeing. It turned out that the null 'driverConfig' value was not a cross-context problem as I suspected, but was heing caused because the ServletContext value was being created twice by the initializer, and the saved attributes were being lost in the process. Having fixed that code, the test portlet appears to be properly dispatched, and somewhere around the rendering of portlet-skin.jsp I am getting an exception: [[ Nested Exception is org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/portlet cannot be resolved in either web.xml or the jar files deployed with this application ]] I am at a loss to understand why the system is attempting to resolve http://java.sun.com/portlet: any ideas? #g -- A full console log of the run to this point, and a copy of the stack, are below. The code has been stopped on a "PortletException" breakpoint, about here: [[ } catch (javax.servlet.ServletException e) { String message = EXCEPTIONS.getString("error.portlet.invoke"); if(LOG.isErrorEnabled()) { LOG.error(message); } ]] in file pluto/core/PortletInvoker.java. (Some line numbers may differ from the current codebase, as I have been inserting some additional log statements.) [[ DEBUG - ServletContext created: path: /pluto DEBUG - WebApplication path: /pluto, context: [EMAIL PROTECTED] INFO - Starting up Pluto Portal Driver... DEBUG - * Retreaving portal driver configuration... DEBUG - Retrieving driver configuration from: /WEB-INF/pluto-portal-driver-services-config.xml INFO - Loading XML bean definitions from (no description) DEBUG - Using JAXP implementation [EMAIL PROTECTED] DEBUG - Trying to resolve XML entity with public ID [-//SPRING//DTD BEAN//EN] and system ID [http://www.springframework.org/dtd/spring-beans.dtd] DEBUG - Trying to locate [spring-beans.dtd] under [/org/springframework/beans/factory/xml/] DEBUG - Found beans DTD [http://www.springframework.org/dtd/spring-beans.dtd] in classpath DEBUG - Loading bean definitions DEBUG - Default lazy init 'false' DEBUG - Default dependency check 'none' DEBUG - Default autowire 'no' DEBUG - No XML 'id' specified - using 'DriverConfiguration' as ID and [] as aliases DEBUG - Registering bean definition with id 'DriverConfiguration' DEBUG - No XML 'id' specified - using 'PropertyConfigService' as ID and [] as aliases DEBUG - Registering bean definition with id 'PropertyConfigService' DEBUG - No XML 'id' specified - using 'PortletRegistryService' as ID and [] as aliases DEBUG - Registering bean definition with id 'PortletRegistryService' DEBUG - No XML 'id' specified - using 'RenderConfigService' as ID and [] as aliases DEBUG - Registering bean definition with id 'RenderConfigService' DEBUG - Found 4 <bean> elements defining beans INFO - Creating shared instance of singleton bean 'DriverConfiguration' DEBUG - Creating instance of bean 'DriverConfiguration' with merged definition [Root bean with class [org.apache.pluto.driver.config.impl.DriverConfigurationImpl] defined in (no description)] DEBUG - Resolving reference from property 'constructor argument' in bean 'DriverConfiguration' to bean 'PortletRegistryService' INFO - Creating shared instance of singleton bean 'PortletRegistryService' DEBUG - Creating instance of bean 'PortletRegistryService' with merged definition [Root bean with class [org.apache.pluto.driver.services.impl.resource.ResourceServicesImpl] defined in (no description)] DEBUG - Getting BeanInfo for class [org.apache.pluto.driver.services.impl.resource.ResourceServicesImpl] DEBUG - Caching PropertyDescriptors for class [org.apache.pluto.driver.services.impl.resource.ResourceServicesImpl] DEBUG - Found property 'class' of type [class java.lang.Class]; editor=[null] DEBUG - Found property 'containerName' of type [class java.lang.String]; editor=[null] DEBUG - Found property 'defaultPage' of type [class org.apache.pluto.driver.services.impl.resource.PageConfig]; editor=[null] DEBUG - Found property 'pages' of type [interface java.util.List]; editor=[null] DEBUG - Found property 'portalName' of type [class java.lang.String]; editor=[null] DEBUG - Found property 'portalVersion' of type [class java.lang.String]; editor=[null] DEBUG - Found property 'portletApplications' of type [interface java.util.Set]; editor=[null] DEBUG - Found property 'supportedPortletModes' of type [interface java.util.Set]; editor=[null] DEBUG - Found property 'supportedWindowStates' of type [interface java.util.Set]; editor=[null] DEBUG - Class [org.apache.pluto.driver.services.impl.resource.ResourceServicesImpl] is cache-safe DEBUG - Invoking BeanPostProcessors before initialization of bean 'PortletRegistryService' DEBUG - Invoking BeanPostProcessors after initialization of bean 'PortletRegistryService' DEBUG - Resolving reference from property 'constructor argument' in bean 'DriverConfiguration' to bean 'RenderConfigService' INFO - Creating shared instance of singleton bean 'RenderConfigService' DEBUG - Creating instance of bean 'RenderConfigService' with merged definition [Root bean with class [org.apache.pluto.driver.services.impl.resource.ResourceServicesImpl] defined in (no description)] DEBUG - Using cached introspection results for class [org.apache.pluto.driver.services.impl.resource.ResourceServicesImpl] DEBUG - Invoking BeanPostProcessors before initialization of bean 'RenderConfigService' DEBUG - Invoking BeanPostProcessors after initialization of bean 'RenderConfigService' DEBUG - Resolving reference from property 'constructor argument' in bean 'DriverConfiguration' to bean 'PropertyConfigService' INFO - Creating shared instance of singleton bean 'PropertyConfigService' DEBUG - Creating instance of bean 'PropertyConfigService' with merged definition [Root bean with class [org.apache.pluto.driver.services.impl.resource.ResourceServicesImpl] defined in (no description)] DEBUG - Using cached introspection results for class [org.apache.pluto.driver.services.impl.resource.ResourceServicesImpl] DEBUG - Invoking BeanPostProcessors before initialization of bean 'PropertyConfigService' DEBUG - Invoking BeanPostProcessors after initialization of bean 'PropertyConfigService' DEBUG - Getting BeanInfo for class [org.apache.pluto.driver.config.impl.DriverConfigurationImpl] DEBUG - Caching PropertyDescriptors for class [org.apache.pluto.driver.config.impl.DriverConfigurationImpl] DEBUG - Found property 'class' of type [class java.lang.Class]; editor=[null] DEBUG - Found property 'containerName' of type [class java.lang.String]; editor=[null] DEBUG - Found property 'pages' of type [interface java.util.Collection]; editor=[null] DEBUG - Found property 'portalName' of type [class java.lang.String]; editor=[null] DEBUG - Found property 'portalVersion' of type [class java.lang.String]; editor=[null] DEBUG - Found property 'portletApplications' of type [interface java.util.Collection]; editor=[null] DEBUG - Found property 'supportedPortletModes' of type [interface java.util.Collection]; editor=[null] DEBUG - Found property 'supportedWindowStates' of type [interface java.util.Collection]; editor=[null] DEBUG - Class [org.apache.pluto.driver.config.impl.DriverConfigurationImpl] is cache-safe INFO - Bean 'DriverConfiguration' instantiated via constructor [public org.apache.pluto.driver.config.impl.DriverConfigurationImpl(org.apache.pluto.driver.config.impl.PropertyConfigService,org.apache.pluto.driver.config.impl.PortletRegistryService,org.apache.pluto.driver.config.impl.RenderConfigService)] DEBUG - Invoking BeanPostProcessors before initialization of bean 'DriverConfiguration' DEBUG - Invoking BeanPostProcessors after initialization of bean 'DriverConfiguration' DEBUG - Setting up digester... DEBUG - - - Adding PortletApp Configuration for: /testsuite DEBUG - Driver Configuration of type class org.apache.pluto.driver.config.impl.DriverConfigurationImpl Initialized and Ready For Service DEBUG - * Creating portal context [pluto-portal-driver/1.1.0-ALPHA]... DEBUG - * Creating container services... DEBUG - * Creating portlet container... INFO - Portlet Container [Pluto Portal Driver] created. DEBUG - * Initializing portlet container... DEBUG - Portlet Container [Pluto Portal Driver] successfully initialized. INFO - Pluto Portal Driver started. DEBUG - ServletContext.setAttribute: path: /pluto, [EMAIL PROTECTED] DEBUG - ServletContext.setAttribute: path: /pluto, [EMAIL PROTECTED] DEBUG - ServletContext created: path: /testsuite DEBUG - WebApplication path: /testsuite, context: [EMAIL PROTECTED] DEBUG - String Manager Created for package: org.apache.pluto.core DEBUG - Using Descriptor Service Impl: org.apache.pluto.descriptors.services.castor.PortletAppDescriptorServiceImpl DEBUG - PortalDriverServlet.doGet: PortalURL: http://localhost:0/pluto/portal? DEBUG - PortalDriverServlet.doGet: actionWindowId: null DEBUG - PortalDriverServlet.doGet: driverConfig: [EMAIL PROTECTED] DEBUG - Rendering Portal: Requested Page: null DEBUG - Requested page is null. Returning default: Test Page DEBUG - Parent class loader is: [EMAIL PROTECTED] DEBUG - Scratch dir for the JSP engine is: C:\DOCUME~1\Graham\LOCALS~1\Temp DEBUG - IMPORTANT: Do not modify the generated servlets DEBUG - JspEngine --> /WEB-INF/fragments/portlet.jsp DEBUG - ServletPath: /WEB-INF/fragments/portlet.jsp DEBUG - PathInfo: null DEBUG - RealPath: D:\Work\OxfordCS\Pluto-1.1\pluto-unittest\src\test\portal\WEB-INF\fragments\portlet.jsp DEBUG - RequestURI: /pluto/WEB-INF/fragments/portlet.jsp DEBUG - QueryString: DEBUG - Request Params: DEBUG - JspEngine --> /WEB-INF/fragments/template.jsp DEBUG - ServletPath: /WEB-INF/fragments/template.jsp DEBUG - PathInfo: null DEBUG - RealPath: D:\Work\OxfordCS\Pluto-1.1\pluto-unittest\src\test\portal\WEB-INF\fragments\template.jsp DEBUG - RequestURI: /pluto/WEB-INF/fragments/template.jsp DEBUG - QueryString: DEBUG - Request Params: DEBUG - JspEngine --> /WEB-INF/fragments/portlet-page.jsp DEBUG - ServletPath: /WEB-INF/fragments/template.jsp DEBUG - PathInfo: null DEBUG - RealPath: D:\Work\OxfordCS\Pluto-1.1\pluto-unittest\src\test\portal\WEB-INF\fragments\portlet-page.jsp DEBUG - RequestURI: /pluto/WEB-INF/fragments/template.jsp DEBUG - QueryString: DEBUG - Request Params: DEBUG - JspEngine --> /WEB-INF/fragments/portlet-skin.jsp DEBUG - ServletPath: /WEB-INF/fragments/template.jsp DEBUG - PathInfo: null DEBUG - RealPath: D:\Work\OxfordCS\Pluto-1.1\pluto-unittest\src\test\portal\WEB-INF\fragments\portlet-skin.jsp DEBUG - RequestURI: /pluto/WEB-INF/fragments/template.jsp DEBUG - QueryString: DEBUG - Request Params: DEBUG - Evaluated portletId to: /testsuite.TestPortlet1 DEBUG - Rendering Portlet Window: [EMAIL PROTECTED] DEBUG - getContext: /testsuite, context: [EMAIL PROTECTED] DEBUG - Portlet Container [Pluto Portal Driver]: Render request recieved. DEBUG - String Manager Created for package: org.apache.pluto.core.impl DEBUG - Portlet Container [Pluto Portal Driver]: Invoker Created. DEBUG - Performing Render Invocation DEBUG - Loading PortletAppDD for context: /testsuite DEBUG - getContext: /testsuite, context: [EMAIL PROTECTED] DEBUG - Retrieved context: [EMAIL PROTECTED] DEBUG - PortletRequestDispatcher requested: /jsp/introduction.jsp DEBUG - Parent class loader is: [EMAIL PROTECTED] DEBUG - Scratch dir for the JSP engine is: C:\DOCUME~1\Graham\LOCALS~1\Temp DEBUG - IMPORTANT: Do not modify the generated servlets DEBUG - JspEngine --> /jsp/introduction.jsp DEBUG - ServletPath: /WEB-INF/fragments/portlet-skin.jsp DEBUG - PathInfo: null DEBUG - RealPath: D:\Work\OxfordCS\Pluto-1.1\pluto-unittest\src\test\testsuite\jsp\introduction.jsp DEBUG - RequestURI: /pluto/WEB-INF/fragments/portlet-skin.jsp DEBUG - QueryString: DEBUG - Request Params: javax.portlet.PortletException at org.apache.pluto.core.impl.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:80) at org.apache.pluto.testsuite.TestPortlet.doView(TestPortlet.java:171) 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:162) at org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:113) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.include(RequestDispatcherImpl.java:59) at org.apache.pluto.core.PortletInvoker.invoke(PortletInvoker.java:156) at org.apache.pluto.core.PortletInvoker.render(PortletInvoker.java:103) at org.apache.pluto.core.PortletContainerImpl.doRender(PortletContainerImpl.java:140) at org.apache.pluto.driver.tags.PortletTag.doStartTag(PortletTag.java:94) at org.apache.jsp.WEB_002dINF.fragments.portlet_002dskin_jsp._jspx_meth_pluto_portlet_0(org.apache.jsp.WEB_002dINF.fragments.portlet_002dskin_jsp:96) at org.apache.jsp.WEB_002dINF.fragments.portlet_002dskin_jsp._jspService(org.apache.jsp.WEB_002dINF.fragments.portlet_002dskin_jsp:71) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.include(RequestDispatcherImpl.java:59) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) at org.apache.jsp.WEB_002dINF.fragments.portlet_002dpage_jsp._jspx_meth_c_forEach_0(org.apache.jsp.WEB_002dINF.fragments.portlet_002dpage_jsp:108) at org.apache.jsp.WEB_002dINF.fragments.portlet_002dpage_jsp._jspService(org.apache.jsp.WEB_002dINF.fragments.portlet_002dpage_jsp:66) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.include(RequestDispatcherImpl.java:59) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) at org.apache.jsp.WEB_002dINF.fragments.template_jsp._jspService(org.apache.jsp.WEB_002dINF.fragments.template_jsp:108) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:54) at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:693) at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:660) at org.apache.jsp.WEB_002dINF.fragments.portlet_jsp._jspService(org.apache.jsp.WEB_002dINF.fragments.portlet_jsp:59) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:54) at org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:123) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.InvocationContextImpl.service(InvocationContextImpl.java:80) at com.meterware.servletunit.ServletUnitClient.newResponse(ServletUnitClient.java:118) at com.meterware.httpunit.WebWindow.getResource(WebWindow.java:164) at com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:128) at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:121) at com.meterware.httpunit.WebClient.getResponse(WebClient.java:113) at org.apache.pluto.unittest.TestPortletAccess.testDoGetHttpServletRequestHttpServletResponse(TestPortletAccess.java:96) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/portlet cannot be resolved in either web.xml or the jar files deployed with this application at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50) at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407) at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:114) at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:316) at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:147) at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418) at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483) at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1543) at org.apache.jasper.compiler.Parser.parse(Parser.java:126) at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211) at org.apache.jasper.compiler.ParserController.parse(ParserController.java:100) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:146) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:267) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:255) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.include(RequestDispatcherImpl.java:59) at org.apache.pluto.core.impl.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:71) ... 75 more Nested Exception is org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/portlet cannot be resolved in either web.xml or the jar files deployed with this application at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50) at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407) at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:114) at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:316) at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:147) at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418) at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483) at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1543) at org.apache.jasper.compiler.Parser.parse(Parser.java:126) at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211) at org.apache.jasper.compiler.ParserController.parse(ParserController.java:100) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:146) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:267) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:255) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.include(RequestDispatcherImpl.java:59) at org.apache.pluto.core.impl.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:71) at org.apache.pluto.testsuite.TestPortlet.doView(TestPortlet.java:171) 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:162) at org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:113) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.include(RequestDispatcherImpl.java:59) at org.apache.pluto.core.PortletInvoker.invoke(PortletInvoker.java:156) at org.apache.pluto.core.PortletInvoker.render(PortletInvoker.java:103) at org.apache.pluto.core.PortletContainerImpl.doRender(PortletContainerImpl.java:140) at org.apache.pluto.driver.tags.PortletTag.doStartTag(PortletTag.java:94) at org.apache.jsp.WEB_002dINF.fragments.portlet_002dskin_jsp._jspx_meth_pluto_portlet_0(org.apache.jsp.WEB_002dINF.fragments.portlet_002dskin_jsp:96) at org.apache.jsp.WEB_002dINF.fragments.portlet_002dskin_jsp._jspService(org.apache.jsp.WEB_002dINF.fragments.portlet_002dskin_jsp:71) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.include(RequestDispatcherImpl.java:59) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) at org.apache.jsp.WEB_002dINF.fragments.portlet_002dpage_jsp._jspx_meth_c_forEach_0(org.apache.jsp.WEB_002dINF.fragments.portlet_002dpage_jsp:108) at org.apache.jsp.WEB_002dINF.fragments.portlet_002dpage_jsp._jspService(org.apache.jsp.WEB_002dINF.fragments.portlet_002dpage_jsp:66) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.include(RequestDispatcherImpl.java:59) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) at org.apache.jsp.WEB_002dINF.fragments.template_jsp._jspService(org.apache.jsp.WEB_002dINF.fragments.template_jsp:108) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:54) at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:693) at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:660) at org.apache.jsp.WEB_002dINF.fragments.portlet_jsp._jspService(org.apache.jsp.WEB_002dINF.fragments.portlet_jsp:59) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:54) at org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:123) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.meterware.servletunit.InvocationContextImpl.service(InvocationContextImpl.java:80) at com.meterware.servletunit.ServletUnitClient.newResponse(ServletUnitClient.java:118) at com.meterware.httpunit.WebWindow.getResource(WebWindow.java:164) at com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:128) at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:121) at com.meterware.httpunit.WebClient.getResponse(WebClient.java:113) at org.apache.pluto.unittest.TestPortletAccess.testDoGetHttpServletRequestHttpServletResponse(TestPortletAccess.java:96) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) ]] And a copy of the stack at the breakpoint: [[ Thread [main] (Suspended) PortletInvoker.invoke(PortletRequestImpl, PortletResponseImpl, Integer) line: 171 PortletInvoker.render(RenderRequestImpl, RenderResponseImpl) line: 103 PortletContainerImpl.doRender(PortletWindow, HttpServletRequest, HttpServletResponse) line: 140 PortletTag.doStartTag() line: 94 portlet-skin.jsp line: 3 portlet-skin.jsp line: 3 portlet_002dskin_jsp(HttpJspBase).service(HttpServletRequest, HttpServletResponse) line: 97 portlet_002dskin_jsp(HttpServlet).service(ServletRequest, ServletResponse) line: 853 JspServletWrapper.service(HttpServletRequest, HttpServletResponse, boolean) line: 322 JspServlet.serviceJspFile(HttpServletRequest, HttpServletResponse, String, Throwable, boolean) line: 291 JspServlet.service(HttpServletRequest, HttpServletResponse) line: 241 JspServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 853 RequestDispatcherImpl.include(ServletRequest, ServletResponse) line: 59 JspRuntimeLibrary.include(ServletRequest, ServletResponse, String, JspWriter, boolean) line: 966 portlet-page.jsp line: 8 portlet-page.jsp line: 4 portlet_002dpage_jsp(HttpJspBase).service(HttpServletRequest, HttpServletResponse) line: 97 portlet_002dpage_jsp(HttpServlet).service(ServletRequest, ServletResponse) line: 853 JspServletWrapper.service(HttpServletRequest, HttpServletResponse, boolean) line: 322 JspServlet.serviceJspFile(HttpServletRequest, HttpServletResponse, String, Throwable, boolean) line: 291 JspServlet.service(HttpServletRequest, HttpServletResponse) line: 241 JspServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 853 RequestDispatcherImpl.include(ServletRequest, ServletResponse) line: 59 JspRuntimeLibrary.include(ServletRequest, ServletResponse, String, JspWriter, boolean) line: 966 template.jsp line: 40 template_jsp(HttpJspBase).service(HttpServletRequest, HttpServletResponse) line: 97 template_jsp(HttpServlet).service(ServletRequest, ServletResponse) line: 853 JspServletWrapper.service(HttpServletRequest, HttpServletResponse, boolean) line: 322 JspServlet.serviceJspFile(HttpServletRequest, HttpServletResponse, String, Throwable, boolean) line: 291 JspServlet.service(HttpServletRequest, HttpServletResponse) line: 241 JspServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 853 RequestDispatcherImpl.forward(ServletRequest, ServletResponse) line: 54 PageContextImpl.doForward(String) line: 693 PageContextImpl.forward(String) line: 660 portlet.jsp line: 4 portlet_jsp(HttpJspBase).service(HttpServletRequest, HttpServletResponse) line: 97 portlet_jsp(HttpServlet).service(ServletRequest, ServletResponse) line: 853 JspServletWrapper.service(HttpServletRequest, HttpServletResponse, boolean) line: 322 JspServlet.serviceJspFile(HttpServletRequest, HttpServletResponse, String, Throwable, boolean) line: 291 JspServlet.service(HttpServletRequest, HttpServletResponse) line: 241 JspServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 853 RequestDispatcherImpl.forward(ServletRequest, ServletResponse) line: 54 PortalDriverServlet.doGet(HttpServletRequest, HttpServletResponse) line: 123 PortalDriverServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 740 PortalDriverServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 853 InvocationContextImpl.service() line: 80 ServletUnitClient.newResponse(WebRequest, FrameSelector) line: 118 WebWindow.getResource(WebRequest) line: 164 WebWindow.getSubframeResponse(WebRequest, RequestContext) line: 128 WebWindow.getResponse(WebRequest) line: 121 ServletUnitClient(WebClient).getResponse(WebRequest) line: 113 TestPortletAccess.testDoGetHttpServletRequestHttpServletResponse() line: 96 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 Method.invoke(Object, Object...) line: 585 TestPortletAccess(TestCase).runTest() line: 154 TestPortletAccess(TestCase).runBare() line: 127 TestResult$1.protect() line: 106 TestResult.runProtected(Test, Protectable) line: 124 TestResult.run(TestCase) line: 109 TestPortletAccess(TestCase).run(TestResult) line: 118 TestSuite.runTest(Test, TestResult) line: 208 TestSuite.run(TestResult) line: 203 RemoteTestRunner.runTests(String[], String) line: 478 RemoteTestRunner.run() line: 344 RemoteTestRunner.main(String[]) line: 196 ]] -- Graham Klyne For email: http://www.ninebynine.org/#Contact
