Hi > > Hi Violeta > > Hi, > > 2015-03-16 15:07 GMT+02:00 Thusitha Thilina Dayaratne <thusit...@wso2.com >: > > > > >>> ERROR {org.apache.catalina.core.ApplicationDispatcher} - > > >>> Servlet.service() for servlet bridgeservlet threw exception > > >>> java.lang.NullPointerException > > >>> at > > >>> > > > > > > org.apache.jasper.JspCompilationContext.getTldResourcePath(JspCompilationContext.java:536) > > >>> at > > > org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410) > > >>> at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:469) > > >>> at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1430) > > >>> at org.apache.jasper.compiler.Parser.parse(Parser.java:139) > > > > > > <snip/> > > > > > >>>> I can't figure out the reason to get this NullPointerException. > > >>>> Can someone help me out? > > > > > >>> If we knew which version of Tomcat 8 you were using, someone could > look > > >>> at the relevant source code to try to figure out what was going on. > > > I'm using tomcat version *8.0.20* > > > > >>Browse to the sourcecode of v8.0.20 of tomcat here: > > > > >> public TldResourcePath getTldResourcePath(String uri) { > > >> return getOptions().getTldCache().getTldResourcePath(uri); > > >> } > > Thanks for the quick response > > > > >> Obviously either getOptions() or getTldCache() is returning null. > > > > I debug the code as you suggest and found that getTldCache() is null. > > In the code As I understand there are 2 point which set the *tldCache* > > variable > > one is the setTldCache() method and other is > > public static TldCache getInstance(ServletContext servletContext) { > > > > if (servletContext == null) { > > throw new IllegalArgumentException(Localizer.getMessage( > > > "org.apache.jasper.compiler.TldCache.servletContextNull")); > > } > > return (TldCache) > > servletContext.getAttribute(SERVLET_CONTEXT_ATTRIBUTE_NAME); > > } > > > > >>If you can attach a debugger try to see whether the code below is invoked: > > >>org.apache.jasper.servlet.JasperInitializer.onStartup(Set<Class<?>>, > >>ServletContext) { > >>..... > >> context.setAttribute(TldCache.SERVLET_CONTEXT_ATTRIBUTE_NAME, > >> new TldCache(context, scanner.getUriTldResourcePathMap(), > >> scanner.getTldResourcePathTaglibXmlMap())); > >> > >>} > I have checked that as well. But that method didn't get hot when I'm > debugging the source. > what could be the reason?
>You wrote that you are running an embedded Tomcat. Is that true? >In Tomcat 8, Jasper initialization is implemented as a standard >ServletContainderInitializer (check Servlet specification). >So you should ensure >that org.apache.jasper.servlet.JasperInitializer.onStartup is invoked >during web app startup Could someone tell me how can I make sure that this method get call during the web app startup? Best Regards Thusitha On Tue, Mar 17, 2015 at 9:37 AM, Thusitha Thilina Dayaratne < thusit...@wso2.com> wrote: > Hi Violeta, > > 2015-03-16 15:33 GMT+02:00 Thusitha Thilina Dayaratne <thusit...@wso2.com > >: > > > > Hi Violeta > > > > Hi, > > > > 2015-03-16 15:07 GMT+02:00 Thusitha Thilina Dayaratne < > thusit...@wso2.com > >: > > > > > > >>> ERROR {org.apache.catalina.core.ApplicationDispatcher} - > > > >>> Servlet.service() for servlet bridgeservlet threw exception > > > >>> java.lang.NullPointerException > > > >>> at > > > >>> > > > > > > > > > > > org.apache.jasper.JspCompilationContext.getTldResourcePath(JspCompilationContext.java:536) > > > >>> at > > > > > org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410) > > > >>> at > org.apache.jasper.compiler.Parser.parseDirective(Parser.java:469) > > > >>> at > org.apache.jasper.compiler.Parser.parseElements(Parser.java:1430) > > > >>> at org.apache.jasper.compiler.Parser.parse(Parser.java:139) > > > > > > > > <snip/> > > > > > > > >>>> I can't figure out the reason to get this NullPointerException. > > > >>>> Can someone help me out? > > > > > > > >>> If we knew which version of Tomcat 8 you were using, someone could > > look > > > >>> at the relevant source code to try to figure out what was going on. > > > > I'm using tomcat version *8.0.20* > > > > > > >>Browse to the sourcecode of v8.0.20 of tomcat here: > > > > > > >> public TldResourcePath getTldResourcePath(String uri) { > > > >> return getOptions().getTldCache().getTldResourcePath(uri); > > > >> } > > > Thanks for the quick response > > > > > > >> Obviously either getOptions() or getTldCache() is returning null. > > > > > > I debug the code as you suggest and found that getTldCache() is null. > > > In the code As I understand there are 2 point which set the *tldCache* > > > variable > > > one is the setTldCache() method and other is > > > public static TldCache getInstance(ServletContext servletContext) { > > > > > > if (servletContext == null) { > > > throw new IllegalArgumentException(Localizer.getMessage( > > > > > "org.apache.jasper.compiler.TldCache.servletContextNull")); > > > } > > > return (TldCache) > > > servletContext.getAttribute(SERVLET_CONTEXT_ATTRIBUTE_NAME); > > > } > > > > > > > > >>If you can attach a debugger try to see whether the code below is > invoked: > > > > >>org.apache.jasper.servlet.JasperInitializer.onStartup(Set<Class<?>>, > > >>ServletContext) { > > >>..... > > >> context.setAttribute(TldCache.SERVLET_CONTEXT_ATTRIBUTE_NAME, > > >> new TldCache(context, > scanner.getUriTldResourcePathMap(), > > >> scanner.getTldResourcePathTaglibXmlMap())); > > >> > > >>} > > I have checked that as well. But that method didn't get hot when I'm > > debugging the source. > > what could be the reason? > > >You wrote that you are running an embedded Tomcat. Is that true? > >In Tomcat 8, Jasper initialization is implemented as a standard > >ServletContainderInitializer (check Servlet specification). > >So you should ensure > >that org.apache.jasper.servlet.JasperInitializer.onStartup is invoked > >during web app startup > Thanks for the quick response. Could you please tell me how can I do so? > > Thanks > Best Regards > /Thusitha > > On Mon, Mar 16, 2015 at 7:22 PM, Violeta Georgieva <miles...@gmail.com> > wrote: > >> Hi, >> >> >> 2015-03-16 15:33 GMT+02:00 Thusitha Thilina Dayaratne <thusit...@wso2.com >> >: >> > >> > Hi Violeta >> > >> > Hi, >> > >> > 2015-03-16 15:07 GMT+02:00 Thusitha Thilina Dayaratne < >> thusit...@wso2.com >> >: >> > > >> > > >>> ERROR {org.apache.catalina.core.ApplicationDispatcher} - >> > > >>> Servlet.service() for servlet bridgeservlet threw exception >> > > >>> java.lang.NullPointerException >> > > >>> at >> > > >>> >> > > > >> > > >> > >> >> org.apache.jasper.JspCompilationContext.getTldResourcePath(JspCompilationContext.java:536) >> > > >>> at >> > > > >> org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410) >> > > >>> at >> org.apache.jasper.compiler.Parser.parseDirective(Parser.java:469) >> > > >>> at >> org.apache.jasper.compiler.Parser.parseElements(Parser.java:1430) >> > > >>> at org.apache.jasper.compiler.Parser.parse(Parser.java:139) >> > > > >> > > > <snip/> >> > > > >> > > >>>> I can't figure out the reason to get this NullPointerException. >> > > >>>> Can someone help me out? >> > > > >> > > >>> If we knew which version of Tomcat 8 you were using, someone could >> > look >> > > >>> at the relevant source code to try to figure out what was going >> on. >> > > > I'm using tomcat version *8.0.20* >> > > >> > > >>Browse to the sourcecode of v8.0.20 of tomcat here: >> > > >> > > >> public TldResourcePath getTldResourcePath(String uri) { >> > > >> return getOptions().getTldCache().getTldResourcePath(uri); >> > > >> } >> > > Thanks for the quick response >> > > >> > > >> Obviously either getOptions() or getTldCache() is returning null. >> > > >> > > I debug the code as you suggest and found that getTldCache() is null. >> > > In the code As I understand there are 2 point which set the *tldCache* >> > > variable >> > > one is the setTldCache() method and other is >> > > public static TldCache getInstance(ServletContext servletContext) { >> > > >> > > if (servletContext == null) { >> > > throw new IllegalArgumentException(Localizer.getMessage( >> > > >> > "org.apache.jasper.compiler.TldCache.servletContextNull")); >> > > } >> > > return (TldCache) >> > > servletContext.getAttribute(SERVLET_CONTEXT_ATTRIBUTE_NAME); >> > > } >> > >> > >> > >> > >>If you can attach a debugger try to see whether the code below is >> invoked: >> > >> > >>org.apache.jasper.servlet.JasperInitializer.onStartup(Set<Class<?>>, >> > >>ServletContext) { >> > >>..... >> > >> context.setAttribute(TldCache.SERVLET_CONTEXT_ATTRIBUTE_NAME, >> > >> new TldCache(context, >> scanner.getUriTldResourcePathMap(), >> > >> scanner.getTldResourcePathTaglibXmlMap())); >> > >> >> > >>} >> > I have checked that as well. But that method didn't get hot when I'm >> > debugging the source. >> > what could be the reason? >> >> You wrote that you are running an embedded Tomcat. Is that true? >> In Tomcat 8, Jasper initialization is implemented as a standard >> ServletContainderInitializer (check Servlet specification). >> So you should ensure >> that org.apache.jasper.servlet.JasperInitializer.onStartup is invoked >> during web app startup. >> >> Regards, >> Violeta >> >> > Thanks >> > Regards >> > Thusitha >> > >> > >> > > > > -- > Thusitha Dayaratne > Software Engineer > WSO2 Inc. - lean . enterprise . middleware | wso2.com > > Mobile +94712756809 > Blog alokayasoya.blogspot.com > About http://about.me/thusithathilina > > -- Thusitha Dayaratne Software Engineer WSO2 Inc. - lean . enterprise . middleware | wso2.com Mobile +94712756809 Blog alokayasoya.blogspot.com About http://about.me/thusithathilina