On 07/12/17 02:52, Nitkalya (Ing) Wiriyanuparb wrote: > Hello. > > I'm upgrading from Tomcat 7.0.30 to 8.5.24. Everything is working fine, but > I notice that BeanELResolver behaves differently when calling a bean > varargs method with no argument. > > My action bean has a method with the signature "public String > getIncludes(final String... moduleNames)". I'm calling it on one of my JSP > pages like "${actionBean.getIncludes()}", but got MethodNotFoundException. > Calling it with some arguments or an empty array would work – as one would > expect. Please see the stacktrace below. > > This method call used to be okay in 7.0.30. I've tried to find something in > the EL and JSP specifications around varargs, but couldn't find anything > concrete. I got the impression that it's not officially supported in the > specs, but Tomcat supports it. > > I'm treating it as a bug as I've already created a patch for it – see > below. However, I'm new to this mailing list so I thought I would ask first. > > Is this a bug?
It looks like it, yes. Thanks for the patch. Note it is usually best to attach patches to a Bugzilla issue as that prevents them from getting mangled by e-mail clients. I'll take a closer look at this now. Mark > > Thanks > Ing > > === My Patch === > > Index: test/javax/el/TestBeanELResolver.java > =================================================================== > --- test/javax/el/TestBeanELResolver.java (revision 1817331) > +++ test/javax/el/TestBeanELResolver.java (working copy) > @@ -18,6 +18,7 @@ > > import java.beans.FeatureDescriptor; > import java.beans.PropertyDescriptor; > +import java.util.ArrayList; > import java.util.Iterator; > > import org.junit.Assert; > @@ -425,6 +426,83 @@ > Assert.assertTrue(context.isPropertyResolved()); > } > > + @Test > + public void testInvokeMore1() { > + BeanELResolver resolver = new BeanELResolver(); > + ELContext context = new > StandardELContext(ELManager.getExpressionFactory()); > + > + Object result = resolver.invoke(context, new > TesterBean(BEAN_NAME), "getNames", > + new Class<?>[] {}, new Object[] {}); > + > + Assert.assertEquals(BEAN_NAME, result); > + } > + > + @Test > + public void testInvokeMore2() { > + BeanELResolver resolver = new BeanELResolver(); > + ELContext context = new > StandardELContext(ELManager.getExpressionFactory()); > + > + Object result = resolver.invoke(context, new > TesterBean(BEAN_NAME), "getMoreNames", > + new Class<?>[] { Integer.class }, new Object[] { 10 }); > + > + Assert.assertEquals(BEAN_NAME, result); > + } > + > + @Test > + public void testInvokeMore3() { > + BeanELResolver resolver = new BeanELResolver(); > + ELContext context = new > StandardELContext(ELManager.getExpressionFactory()); > + > + Object result = resolver.invoke(context, new > TesterBean(BEAN_NAME), "getMoreNames", > + new Class<?>[] { Integer.class }, new Object[] { 10 }); > + > + Assert.assertEquals(BEAN_NAME, result); > + } > + > + @Test > + public void testInvokeMore4() { > + BeanELResolver resolver = new BeanELResolver(); > + ELContext context = new > StandardELContext(ELManager.getExpressionFactory()); > + > + Object result = resolver.invoke(context, new > TesterBean(BEAN_NAME), "getMoreNames", > + new Class<?>[] { null }, new Object[] { null }); > + > + Assert.assertEquals(BEAN_NAME, result); > + } > + > + @Test > + public void testInvokeMore5() { > + BeanELResolver resolver = new BeanELResolver(); > + ELContext context = new > StandardELContext(ELManager.getExpressionFactory()); > + > + Object result = resolver.invoke(context, new > TesterBean(BEAN_NAME), "getMoreNames", > + new Class<?>[] { Integer.class, ArrayList.class }, new > Object[] { 2, new Object[] {} }); > + > + Assert.assertEquals(BEAN_NAME, result); > + } > + > + @Test > + public void testInvokeMore6() { > + BeanELResolver resolver = new BeanELResolver(); > + ELContext context = new > StandardELContext(ELManager.getExpressionFactory()); > + > + Object result = resolver.invoke(context, new > TesterBean(BEAN_NAME), "getNames", > + new Class<?>[] { String.class, String.class, String.class > }, new Object[] { "1", "2", "3" }); > + > + Assert.assertEquals(BEAN_NAME, result); > + } > + > + @Test > + public void testInvokeMore7() { > + BeanELResolver resolver = new BeanELResolver(); > + ELContext context = new > StandardELContext(ELManager.getExpressionFactory()); > + > + Object result = resolver.invoke(context, new > TesterBean(BEAN_NAME), "getMoreNames", > + new Class<?>[] { Integer.class, String.class, > String.class, String.class }, new Object[] { 0, "1", "2", "3" }); > + > + Assert.assertEquals(BEAN_NAME, result); > + } > + > /** > * Tests that the method name cannot be coerced to String. > */ > @@ -445,6 +523,24 @@ > new Object[] {}); > } > > + @Test(expected = MethodNotFoundException.class) > + public void testInvokeMore8() { > + BeanELResolver resolver = new BeanELResolver(); > + ELContext context = new > StandardELContext(ELManager.getExpressionFactory()); > + > + resolver.invoke(context, new TesterBean(BEAN_NAME), "getMoreNames", > + new Class<?>[] { Integer.class, Integer.class, > String.class }, new Object[] { 10, 20, "50" }); > + } > + > + @Test(expected = MethodNotFoundException.class) > + public void testInvokeMore9() { > + BeanELResolver resolver = new BeanELResolver(); > + ELContext context = new > StandardELContext(ELManager.getExpressionFactory()); > + > + resolver.invoke(context, new TesterBean(BEAN_NAME), "getNames", > + new Class<?>[] { Integer.class }, new Object[] { 10 }); > + } > + > /** > * Tests that a call to a non existing method will throw an exception. > */ > Index: test/javax/el/TesterBean.java > =================================================================== > --- test/javax/el/TesterBean.java (revision 1817331) > +++ test/javax/el/TesterBean.java (working copy) > @@ -29,6 +29,15 @@ > return name; > } > > + public String getNames(@SuppressWarnings("unused") String... > something) { > + return name; > + } > + > + @SuppressWarnings("unused") > + public String getMoreNames(Integer someNumber, String... something) { > + return name; > + } > + > public void setName(String name) { > this.name = name; > } > Index: java/javax/el/Util.java > =================================================================== > --- java/javax/el/Util.java (revision 1817331) > +++ java/javax/el/Util.java (working copy) > @@ -247,7 +247,7 @@ > > // Check the number of parameters > if (!(paramCount == mParamCount || > - (w.isVarArgs() && paramCount >= mParamCount))) { > + (w.isVarArgs() && paramCount >= (mParamCount - 1)))) { > // Method has wrong number of parameters > continue; > } > @@ -259,9 +259,12 @@ > boolean noMatch = false; > for (int i = 0; i < mParamCount; i++) { > // Can't be null > - if (mParamTypes[i].equals(paramTypes[i])) { > - exactMatch++; > - } else if (i == (mParamCount - 1) && w.isVarArgs()) { > + if (w.isVarArgs() && i == (mParamCount - 1)) { > + if (i == paramCount && paramCount == (mParamCount - > 1)) { > + // Nothing is passed as varargs > + assignableMatch++; > + break; > + } > Class<?> varType = mParamTypes[i].getComponentType(); > for (int j = i; j < paramCount; j++) { > if (isAssignableFrom(paramTypes[j], varType)) { > @@ -283,18 +286,22 @@ > // lead to a varArgs method matching when the > result > // should be ambiguous > } > - } else if (isAssignableFrom(paramTypes[i], > mParamTypes[i])) { > - assignableMatch++; > } else { > - if (paramValues == null) { > - noMatch = true; > - break; > + if (mParamTypes[i].equals(paramTypes[i])) { > + exactMatch++; > + } else if (isAssignableFrom(paramTypes[i], > mParamTypes[i])) { > + assignableMatch++; > } else { > - if (isCoercibleFrom(paramValues[i], > mParamTypes[i])) { > - coercibleMatch++; > - } else { > + if (paramValues == null) { > noMatch = true; > break; > + } else { > + if (isCoercibleFrom(paramValues[i], > mParamTypes[i])) { > + coercibleMatch++; > + } else { > + noMatch = true; > + break; > + } > } > } > } > > > === The Stacktrace === > > > 06 Dec 2017 16:27:39,530 | 1216397 [ERROR] {http-nio-8080-exec-5} > (org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/ohp-web-test].[jsp]) > Servlet.service() for servlet [jsp] threw exception > javax.el.MethodNotFoundException: Method not found: class > com.orchestral.commonweb.test.web.action.button.OrchestralAction.getIncludes() > at javax.el.Util.findWrapper(Util.java:351) > at javax.el.Util.findMethod(Util.java:213) > at javax.el.BeanELResolver.invoke(BeanELResolver.java:149) > at org.apache.jasper.el.JasperELResolver.invoke(JasperELResolver.java:147) > at org.apache.el.parser.AstValue.getValue(AstValue.java:159) > at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) > at > org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944) > at org.apache.jsp.button.orchestral_jsp._jspService(orchestral_jsp.java:131) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) > at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:591) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:527) > at > net.sourceforge.stripes.action.ForwardResolution.execute(ForwardResolution.java:106) > at > com.orchestral.common.stripes.resolutions.JspViewResolution.execute(JspViewResolution.java:56) > at > net.sourceforge.stripes.controller.DispatcherHelper$7.intercept(DispatcherHelper.java:497) > at > net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158) > at > net.sourceforge.stripes.controller.HttpCacheInterceptor.intercept(HttpCacheInterceptor.java:99) > at > net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) > at > net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113) > at > net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) > at > net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74) > at > net.sourceforge.stripes.controller.DispatcherHelper.executeResolution(DispatcherHelper.java:491) > at > net.sourceforge.stripes.controller.DispatcherServlet.executeResolution(DispatcherServlet.java:286) > at > net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:170) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:591) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:527) > at > org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:894) > at org.apache.jsp.owl_002dimpl.page_jsp._jspService(page_jsp.java:131) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) > at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:591) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:527) > at > org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:894) > at > org.apache.jsp.owl_002dimpl.owl_002dbody_jsp._jspService(owl_002dbody_jsp.java:214) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) > at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:591) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:527) > at > org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:894) > at > org.apache.jsp.owl_002dimpl.owl_jsp._jspx_meth_stripes_005flayout_002dcomponent_005f0(owl_jsp.java:257) > at > org.apache.jsp.owl_002dimpl.owl_jsp._jspx_meth_stripes_005flayout_002drender_005f0(owl_jsp.java:216) > at org.apache.jsp.owl_002dimpl.owl_jsp._jspService(owl_jsp.java:144) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) > at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:591) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:527) > at > org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:894) > at > org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:679) > at > org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:673) > at > net.sourceforge.stripes.tag.layout.LayoutContext.doInclude(LayoutContext.java:203) > at > net.sourceforge.stripes.tag.layout.LayoutComponentRenderer.write(LayoutComponentRenderer.java:137) > at > net.sourceforge.stripes.tag.layout.LayoutComponentTag.doStartTag(LayoutComponentTag.java:181) > at > org.apache.jsp.layout.vanilla_jsp._jspx_meth_stripes_005flayout_002dcomponent_005f1(vanilla_jsp.java:419) > at > org.apache.jsp.layout.vanilla_jsp._jspx_meth_stripes_005flayout_002ddefinition_005f0(vanilla_jsp.java:222) > at org.apache.jsp.layout.vanilla_jsp._jspService(vanilla_jsp.java:147) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) > at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:591) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:527) > at > org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:894) > at > org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:679) > at > org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:673) > at > net.sourceforge.stripes.tag.layout.LayoutContext.doInclude(LayoutContext.java:203) > at > net.sourceforge.stripes.tag.layout.LayoutRenderTag.doEndTag(LayoutRenderTag.java:175) > at > org.apache.jsp.owl_002dimpl.owl_jsp._jspx_meth_stripes_005flayout_002drender_005f0(owl_jsp.java:227) > at org.apache.jsp.owl_002dimpl.owl_jsp._jspService(owl_jsp.java:144) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) > at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > com.orchestral.core.web.impl.PlatformFilter.doFilter(PlatformFilter.java:102) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) > at > org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470) > at > org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395) > at > org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316) > at > net.sourceforge.stripes.action.ForwardResolution.execute(ForwardResolution.java:110) > at > net.sourceforge.stripes.controller.DispatcherHelper$7.intercept(DispatcherHelper.java:497) > at > net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158) > at > net.sourceforge.stripes.controller.HttpCacheInterceptor.intercept(HttpCacheInterceptor.java:99) > at > net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) > at > net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113) > at > net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) > at > net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74) > at > net.sourceforge.stripes.controller.DispatcherHelper.executeResolution(DispatcherHelper.java:491) > at > net.sourceforge.stripes.controller.DispatcherServlet.executeResolution(DispatcherServlet.java:286) > at > net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:170) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:260) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > com.orchestral.common.servlet.filter.NoCacheFilter.doFilter(NoCacheFilter.java:62) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > com.orchestral.common.servlet.filter.XUACompatibleFilter.doFilter(XUACompatibleFilter.java:58) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > com.orchestral.common.servlet.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:74) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > com.orchestral.core.web.impl.PlatformFilter.doFilter(PlatformFilter.java:102) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) > at > com.orchestral.core.web.impl.session.SessionTracker.invoke(SessionTracker.java:313) > at > org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) > at com.orchestral.core.web.impl.MonitorValve.invoke(MonitorValve.java:65) > at > com.orchestral.core.web.impl.ErrorReportValve.invoke(ErrorReportValve.java:62) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) > at > org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) > at > org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) > at > org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) > at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) > at > org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.lang.Thread.run(Thread.java:745) > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org