quality@glassfish.java.net

Re: PWC1420: Error invoking ServletContainerInitializer org.apache.jasper.runtime.TldScanner

From: Judy Tang <Judy.J.Tang_at_Sun.COM>
Date: Thu, 01 Oct 2009 00:02:39 -0700

Wow, Jan, you have a fix already, so fast, thanks !

Hi Cay, Would you like to file a bug, each bug will get 5 CAT points,
this is a way to show our appreciation and a way to have some fun :-)

Thanks,
Judy

Jan Luehe wrote:
> On 09/30/09 20:43, Cay Horstmann wrote:
>>>
>>> TldScanner is an implementation of
>>> javax.servlet.ServletContainerInitializer
>>> provided by the GlassFish JSP container.
>>>
>>> javax.servlet.ServletContainerInitializer is a new Servlet 3.0 feature.
>>>
>>> TldScanner is notified of a webapp's deployment and passed the
>>> webapp's ServletContext to its onStartup method. Based on the
>>> ServletContext, it searches for any Tag Library Descriptor (TLD)
>>> resources, scan them for listener declarations, and registers the
>>> declared listeners programmatically with the ServletContext.
>>>
>>> Can you include the stacktrace?
>>>
>>> Kin-man (cc'ed) is going to help you debug this further, and will
>>> make any
>>> improvements to the error reporting.
>>>
>>> Thanks,
>>>
>>> Jan
>>
>> Sure, here is the stack trace.
>>
>> [#|2009-09-30T20:31:07.973-0700|WARNING|glassfish|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=25;_ThreadName=admin-listener-(6);|java.lang.IllegalStateException:
>> ContainerBase.addChild: start:
>> org.apache.catalina.LifecycleException:
>> org.apache.catalina.LifecycleException: PWC1420: Error invoking
>> ServletContainerInitializer org.apache.jasper.runtime.TldScanner
>> java.lang.IllegalStateException: ContainerBase.addChild: start:
>> org.apache.catalina.LifecycleException:
>> org.apache.catalina.LifecycleException: PWC1420: Error invoking
>> ServletContainerInitializer org.apache.jasper.runtime.TldScanner
>> at
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:932)
>>
>> at
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:912)
>> at
>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:694)
>> at
>> com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1816)
>>
>> at
>> com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1520)
>>
>> at
>> com.sun.enterprise.web.WebApplication.start(WebApplication.java:93)
>> at org.glassfish.internal.data.EngineRef.start(EngineRef.java:126)
>> at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:229)
>> at
>> org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:214)
>>
>> at
>> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:307)
>>
>> at
>> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:172)
>>
>> at
>> org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:270)
>>
>> at
>> com.sun.enterprise.v3.admin.CommandRunnerImpl$4.execute(CommandRunnerImpl.java:403)
>>
>> at
>> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:418)
>>
>> at
>> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:505)
>>
>> at
>> com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:138)
>>
>> at
>> com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:355)
>>
>> at
>> com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:195)
>> at
>> com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
>>
>> at
>> com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
>>
>> at
>> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
>>
>> at
>> com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:753)
>> at
>> com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:661)
>> at
>> com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:914)
>> at
>> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:166)
>>
>> at
>> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
>>
>> at
>> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
>>
>> at
>> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
>>
>> at
>> com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
>>
>> at
>> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
>>
>> at
>> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
>>
>> at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
>> at
>> com.sun.grizzly.util.FixedThreadPool$BasicWorker.dowork(FixedThreadPool.java:379)
>>
>> at
>> com.sun.grizzly.util.FixedThreadPool$BasicWorker.run(FixedThreadPool.java:360)
>>
>> at java.lang.Thread.run(Thread.java:619)
>> |#]
>>
>> I looked for TLD files and found none in the app but four in JAR
>> files used by it:
>>
>> appbase.jar
>> 852 Mon Nov 10 00:35:40 PST 2008 META-INF/taglib.tld
>> jsfcl.jar
>> 2084 Mon Nov 10 00:34:18 PST 2008 META-INF/jsfcl.tld
>> jsf-extensions-dynamic-faces-0.1.jar
>> 16427 Wed Feb 20 15:23:06 PST 2008 META-INF/jsf-ext-dynafaces.tld
>> webui-jsf.jar
>> 428913 Thu Mar 20 18:09:44 PDT 2008 META-INF/webui-jsf.tld
>>
>> As far as I can tell, these are all from Project Woodstock, which we
>> are in the process of eliminating.
>>
>> I have no problem believing that one or more of those TLDs might have
>> issues, but really--tell me what the problem is. This stack trace is
>> just like what I get from my two year old twins--wah, wah, I am
>> unhappy, I am sooooo unhappy, wah, wah, wah.
>>
>> Glassfish should be more mature than that.
>
> I found that the Throwable raised by the TldScanner (and nested inside a
> LifecycleException by the web container) is not being chained!
>
> If I create a LifecycleException like this (i.e., without any message):
>
> throw new LifecycleException(new Exception("ABC"));
>
> the nested Exception is chained correctly:
>
> java.lang.Exception: java.lang.IllegalStateException:
> ContainerBase.addChild: start: org.apache.catalina.LifecycleException:
> org.apache.catalina.LifecycleException: java.lang.Exception: ABC
>
> However, if i create it like this (this is how the container wraps the
> Throwable raised by the TldScanner):
>
> throw new LifecycleException("XYZ", new Exception("ABC"));
>
> that is, including an exception message, it is not:
>
> java.lang.Exception: java.lang.IllegalStateException:
> ContainerBase.addChild: start: org.apache.catalina.LifecycleException:
> org.apache.catalina.LifecycleException: XYZ
>
> I'll changed the container code to just log the message string at
> SEVERE level
> and wrap the Throwable inside a LifecycleException without any exception
> message, so that the Throwable will get chained correctly.
>
> I can send you a patch if you want.
>
> Thanks!
>
>
> Jan
>
>
>
>>
>> Thanks,
>>
>> Cay
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: quality-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: quality-help_at_glassfish.dev.java.net
>