dev@glassfish.java.net

Re: WEB0600: failed to deploy and has been disabled: java.lang.NullPointerException

From: Lloyd L Chambers <Lloyd.Chambers_at_Sun.COM>
Date: Fri, 03 Aug 2007 07:09:25 -0700

The problem seems to be the line in NamingResources that reads:

entries.put( ejb.getName(), ejb.getType() );

Reading back up the stack, it appears that 'ejb' cannot be null,
implying that 'entries' must be null.

My reading of NamingResources shows that it is subtly not thread
safe; none of its instance variables are 'final', which is a problem
if it is created by one thread, and (ever) used by another. Try
making them 'final' and see if the issue goes away. See Java
Concurrency 16.2.


Lloyd

On Aug 3, 2007, at 12:24 AM, Cheng Fang wrote:

> Thanks to Hong and Jan for the offer to help. With Jan's patch, I
> got this in server.log [1]
>
> As I said earlier, despite this error, deployment *did succeed* and
> the app *was* put into service. But the servlet filter is not
> invoked at all, and may be other random behaviors.
>
> From the stacktrace, it's a ejb-ref that has caused this NPE. This
> is how I declare it in web.xml:
> <ejb-ref>
> <ejb-ref-name>helloBean2</ejb-ref-name>
>
> <remote>com.sun.ts.tests.ejb30.common.helloejbjar.HelloRemoteIF</
> remote>
> </ejb-ref>
>
> If I add a <ejb-ref-type>Session</ejb-ref-type>, everything works
> fine. <ejb-ref-type> is optional in JavaEE 5 and all my modules
> are JavaEE 5 versions.
>
> The similar <ejb-ref> declarations work in appclient and ejb. It
> failed with web container, probably there is legacy tomcat code
> involved here?
>
> This is somewhat related to issue 1265, which I filed in 10/2006
> https://glassfish.dev.java.net/issues/show_bug.cgi?id=1265 (Fail to
> deploy apps when ejb-ref element does not have ejb-ref-type)
>
> I have created a simple ejb module and web module to reproduce this
> problem. Attached are a ejb-jar (foo-ejb.jar) and a NetBeans
> projects for the web module.
>
> Thanks,
> -cheng
>
>
> [1]
> [#|2007-08-02T20:47:29.875-0400|SEVERE|sun-appserver9.1|
> javax.enterprise.system.container.web|_ThreadID=14;_Th
> readName=pool-1-thread-6;_RequestID=0243bda4-216d-42fe-a7c7-
> b07ef010d5ec;|WEB0600: WebModule [/ejb3_assembly_m
> etainfandlibdir] failed to deploy and has been disabled^M
> java.lang.NullPointerException^M
> at java.util.Hashtable.put(Hashtable.java:396)^M
> at org.apache.catalina.deploy.NamingResources.addEjb
> (NamingResources.java:175)^M
> at org.apache.catalina.core.StandardContext.addEjb
> (StandardContext.java:2334)^M
> at
> com.sun.enterprise.web.TomcatDeploymentConfig.configureContextEjb
> (TomcatDeploymentConfig.java:298)^
> M
> at
> com.sun.enterprise.web.TomcatDeploymentConfig.configureEjbReference
> (TomcatDeploymentConfig.java:243
> )^M
> at
> com.sun.enterprise.web.TomcatDeploymentConfig.configureWebModule
> (TomcatDeploymentConfig.java:195)^M
> at com.sun.enterprise.web.WebModuleContextConfig.start
> (WebModuleContextConfig.java:240)^M
> at
> com.sun.enterprise.web.WebModuleContextConfig.lifecycleEvent
> (WebModuleContextConfig.java:156)^M
> at
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent
> (LifecycleSupport.java:143)^M
> at org.apache.catalina.core.StandardContext.start
> (StandardContext.java:5086)^M
> at com.sun.enterprise.web.WebModule.start(WebModule.java:327)^M
> at com.sun.enterprise.web.LifecycleStarter.doRun
> (LifecycleStarter.java:58)^M
> at com.sun.appserv.management.util.misc.RunnableBase.runSync
> (RunnableBase.java:296)^M
> at com.sun.appserv.management.util.misc.RunnableBase.run
> (RunnableBase.java:330)^M
> at java.util.concurrent.Executors$RunnableAdapter.call
> (Executors.java:417)^M
> at java.util.concurrent.FutureTask$Sync.innerRun
> (FutureTask.java:269)^M
> at java.util.concurrent.FutureTask.run(FutureTask.java:123)^M
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask
> (ThreadPoolExecutor.java:650)^M
> at java.util.concurrent.ThreadPoolExecutor$Worker.run
> (ThreadPoolExecutor.java:675)^M
> at java.lang.Thread.run(Thread.java:595)^M
> |#]^M
>
> Jan.Luehe_at_Sun.COM wrote:
>> Hi Cheng,
>>
>> Cheng Fang wrote:
>>
>>> Hi,
>>>
>>> I'm seeing the following exception when deploying my app to a
>>> recent nightly build. I couldn't figure out what could've caused
>>> the NPE. Turning on logging FINE in web-container didn't give
>>> more details. Verifier also reported success on my app.
>>>
>>> I searched a few modules in my glassfish workspace but couldn't
>>> find where this NPE is from (I don't have all modules in my
>>> workspace). Although the error message says the web module has
>>> been disabled, I can still access this webapp, except a servlet
>>> filter is not invoked.
>>>
>>> Could someone shed light on this?
>>>
>>> Thanks,
>>> -cheng
>>>
>>> [#|2007-08-02T04:18:34.078-0400|INFO|sun-appserver9.1|
>>> javax.enterprise.system.core.classloading|_ThreadID=15;_
>>> ThreadName=httpWorkerThread-4848-0;ejb3_assembly_metainfandlibdir;|L
>>> DR5010: All ejb(s) of [ejb3_assembly_metai
>>> nfandlibdir] loaded successfully!|#]^M
>>> ^M
>>> [#|2007-08-02T04:18:34.093-0400|SEVERE|sun-appserver9.1|
>>> javax.enterprise.system.container.web|_ThreadID=15;_Th
>>> readName=httpWorkerThread-4848-0;/
>>> ejb3_assembly_metainfandlibdir;java.lang.NullPointerException;_Reque
>>> stID=63c
>>> 9ee02-0fcd-45c8-a681-e8b600cc0f03;|WEB0600: WebModule [/
>>> ejb3_assembly_metainfandlibdir] failed to deploy and h
>>> as been disabled: [java.lang.NullPointerException].|#]^M
>>
>>
>> It is unfortunate that the exception is swallowed like that,
>> without giving any stacktrace.
>>
>> Can you please try out the attached patch, which will log the
>> exception's stacktrace?
>> Hopefully, that will give you and Hong the information you are
>> looking for.
>>
>> Thanks!
>>
>>
>> Jan
>>
>>
>>> ^M
>>> [#|2007-08-02T04:18:34.937-0400|INFO|sun-appserver9.1|
>>> javax.enterprise.system.tools.admin|_ThreadID=15;_Thread
>>> Name=httpWorkerThread-4848-0;C:/ws/sjsas90/publish/glassfish/
>>> domains/domain1\generated\xml\j2ee-apps\ejb3_asse
>>> mbly_metainfandlibdir\ejb3_assembly_metainfandlibdirClient.jar;|
>>> ADM1040:Client-jar location:[C:/ws/sjsas90/pub
>>> lish/glassfish/domains/domain1\generated\xml\j2ee-apps
>>> \ejb3_assembly_metainfandlibdir\ejb3_assembly_metainfand
>>> libdirClient.jar]|#]^M
>>>
>>> --------------------------------------------------------------------
>>> -
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>
>>
>> ---------------------------------------------------------------------
>> ---
>>
>> Index: WebModuleContextConfig.java
>> ===================================================================
>> RCS file: /cvs/glassfish/appserv-core/src/java/com/sun/enterprise/
>> web/WebModuleContextConfig.java,v
>> retrieving revision 1.12
>> diff -u -r1.12 WebModuleContextConfig.java
>> --- WebModuleContextConfig.java 5 May 2007 05:36:02 -0000 1.12
>> +++ WebModuleContextConfig.java 2 Aug 2007 17:50:54 -0000
>> @@ -241,9 +241,11 @@
>>
>> webBundleDescriptor);
>> } catch (Throwable t){
>> context.setAvailable(false);
>> - Object[] objs = {context.getName(), t};
>> - logger.log(Level.SEVERE,
>> -
>> "webModuleContextConfig.webModuleDisabled", objs);
>> + String msg = _rb.getString(
>> + "webModuleContextConfig.webModuleDisabled");
>> + msg = MessageFormat.format(msg,
>> + new Object[]
>> { context.getName() });
>> + logger.log(Level.SEVERE, msg, t);
>> }
>>
>> context.setConfigured(false);
>>
>> Index: LogStrings.properties
>> ===================================================================
>> RCS file: /cvs/glassfish/appserv-commons/src/java/com/sun/logging/
>> enterprise/system/container/web/LogStrings.properties,v
>> retrieving revision 1.39
>> diff -u -r1.39 LogStrings.properties
>> --- LogStrings.properties 10 Jul 2007 19:44:19 -0000 1.39
>> +++ LogStrings.properties 2 Aug 2007 17:51:47 -0000
>> @@ -216,7 +216,7 @@
>> webmodule.alternateDocBase.illegalUrlPattern=WEB0504: URL pattern
>> {0} for alternate docbase is invalid
>> webmodule.alternateDocBase.crlfInUrlPattern=WEB0505: URL pattern
>> {0} for alternate docbase contains CR or LF or both
>>
>> -webModuleContextConfig.webModuleDisabled=WEB0600: WebModule [{0}]
>> failed to deploy and has been disabled: [{1}].
>> +webModuleContextConfig.webModuleDisabled=WEB0600: WebModule [{0}]
>> failed to deploy and has been disabled
>> webModuleContextConfig.missingDefaultWeb.xml=WEB0601: Missing
>> default web.xml, using application web.xml only
>> webModuleContextConfig.defaultMissing=WEB0602: Missing default-
>> web.xml, using application web.xml only
>> webModuleContextConfig.defaultParse=WEB0603: Parse error in
>> default-web.xml
>>
>>
>> ---------------------------------------------------------------------
>> ---
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>> <foo-ejb.jar>
>> <simple-web-project.jar>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net