Hi,

2015-03-17 15:16 GMT+02:00 Thusitha Thilina Dayaratne <thusit...@wso2.com>:
>
> 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?

You didn't tell us whether you are embedding Tomcat or not.
If you are embedding it which jar files from Tomcat distribution you are
using etc.
You can start debugging
with org.apache.catalina.startup.ContextConfig.webConfig()

- processServletContainerInitializers(sContext);

Regards,
Violeta

>
> Best Regards
> Thusitha
>

Reply via email to