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()));

}


Regards,
Violeta

>
>  from this 2 methods I couldn't find any point that setTldCache() is been
> used. So I think getInstance() is the method that is been used.
>
> Should I manually set the value o tldCache?
>
> Thanks
> Regards
> /Thusitha

Reply via email to