Issue Details (XML | Word | Printable)

Key: GLASSFISH-16118
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Jakub Podlesak
Reporter: David Konecny
Votes: 1
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
glassfish

Registering the Jersey servlet application DOES NOT happen

Created: 01/Mar/11 05:27 PM   Updated: 03/Nov/11 01:15 PM   Resolved: 05/Jul/11 12:42 AM
Component/s: web_services
Affects Version/s: 3.1
Fix Version/s: 3.1.1_b10

Time Tracking:
Not Specified

File Attachments: 1. GZip Archive RESTissue.tar.gz (3.04 MB) 01/Mar/11 05:27 PM - David Konecny
2. File WebApplication80.war (1.83 MB) 02/Mar/11 02:49 PM - vince kraemer

Environment:

Product Version: NetBeans IDE Dev (Build 110301-321fec680331)
Java: 1.6.0_24; Java HotSpot(TM) 64-Bit Server VM 19.1-b02
System: Linux version 2.6.35-25-generic running on amd64; UTF-8; en_NZ (nb)
Userdir: /home/david/.netbeans/_UD1
GF 3.1 final (b43)

Issue Links:
Dependency
 

Tags: 3_1-next 3_1_1-approved
Participants: Bhakti Mehta, David Konecny, geziefer, Jakub Podlesak, scatari and vince kraemer


 Description  « Hide

I will attach test NB project but here are the steps to reproduce the problem from scratch (daily dev build of NB 7.0 or Beta2 should do):

  • create new Web Application (EE6)
  • use REST from DB wizard to generate some RESTful DB based services (when asked for REST resources registration I used "subclass of jawax.ws.rs.core.Application" and 'Add Jersey library')
  • run Web Application
  • right click 'RESTful Web Services' node and execute 'Test RESTful Web Services'

Result for me is always "Cannot access WADL: Please restart your RESTful application, and refresh this page.".

Now if I remove 'Jersey 1.3' library from project classpath then everything runs fine and if you closely look into GlassFish log you will find this entry there:

INFO: Registering the Jersey servlet application, named
org.netbeans.rest.application.config.ApplicationConfig, at the servlet mapping,
/resources/*, with the Application class of the same name

If I readd 'Jersey 1.3' library back to project classpath and rebuild/rerun everything then GlassFish will never log above line and therefore there is no servlet to handle /resources content URL.

Why adding Jersey 1.3 libraries should cause this problem? In separate discussion with Ludo I was told that GF 3.1 removed Jersey jars from its runtime classpath and therefore NB should add them to projects explicitly.

[This problem was also reported for NB: http://netbeans.org/bugzilla/show_bug.cgi?id=192733]



David Konecny added a comment - 02/Mar/11 01:42 PM

It is easy to reproduce this also without NetBeans:

Unzip RESTissue.tar.gz which is attached to this issue and you will find there RESTissue/dist/RESTissue.war. Deploy it via asadmin and once it is deployed you use

"wget http://localhost:8080/RESTissue/resources/application.wadl"

to retrieve wadl file. It will fail (404) because "resources" servlet is simply not running.

Now, open RESTissue.war again and remove all jars from its WEB-INF/lib folder (15 jars which comprise 'Jersey 1.3' library) and redeploy the modified war and now wget will retrieve wadl file.


David Konecny added a comment - 02/Mar/11 01:45 PM

I would appreciate if this could be evaluated ASAP so that if necessary a correction can be done on NetBeans side before our code freeze next week. Thanks.

At the moment I consider this issue a high priority defect in GlassFish as it prevents RESTful services from running under circumstances described here.


vince kraemer added a comment - 02/Mar/11 02:48 PM

here is a transcript of a 'demo' of the issue... run against b43 (fcs bits)

Notice: a restart seems to resolve the problem. I will attach the war file used in this transcript.

bash-3.2$ GlassFish_Server_3.1/glassfish/bin/asadmin start-domain
Waiting for domain1 to start ...
Successfully started the domain : domain1
domain Location: /export/home/vkraemer/GlassFish_Server_3.1/glassfish/domains/domain1
Log File: /export/home/vkraemer/GlassFish_Server_3.1/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
bash-3.2$ GlassFish_Server_3.1/glassfish/bin/asadmin deploy NetBeansProjects/WebApplication80/dist/WebApplication80.war
Application deployed with name WebApplication80.
Command deploy executed successfully.
bash-3.2$ wget http://localhost:8080/WebApplication80/resources/application.wadl
-14:33:58- http://localhost:8080/WebApplication80/resources/application.wadl
=> `application.wadl.6'
Resolving localhost... 127.0.0.1, ::1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 404 Not Found
14:33:59 ERROR 404: Not Found.

bash-3.2$ GlassFish_Server_3.1/glassfish/bin/asadmin restart-domain
Successfully restarted the domain
Command restart-domain executed successfully.
bash-3.2$ wget http://localhost:8080/WebApplication80/resources/application.wadl
-14:36:05- http://localhost:8080/WebApplication80/resources/application.wadl
=> `application.wadl.6'
Resolving localhost... 127.0.0.1, ::1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15,390 (15K) [application/vnd.sun.wadl+xml]

100%[======================================================================================================>] 15,390 -.-K/s

14:36:07 (357.72 MB/s) - `application.wadl.6' saved [15390/15390]


vince kraemer added a comment - 02/Mar/11 02:49 PM

used in the demo of the problem.


vince kraemer added a comment - 02/Mar/11 03:02 PM

one additional note... there wasn't a WebApplication80 deployed on the server prior to the start-domain (the first command of the demo)


vince kraemer added a comment - 02/Mar/11 03:04 PM

a bit more info... This sequence is successful when run against GF 3.0.1 b22 so this might be considered a regression

bash-3.2$ GlassFish_Server_3/glassfish/bin/asadmin start-domain
Waiting for DAS to start ...
Started domain: domain1
Domain location: /export/home/vkraemer/GlassFish_Server_3/glassfish/domains/domain1
Log file: /export/home/vkraemer/GlassFish_Server_3/glassfish/domains/domain1/logs/server.log
Admin port for the domain: 4848
Command start-domain executed successfully.
bash-3.2$ GlassFish_Server_3/glassfish/bin/asadmin deploy NetBeansProjects/WebApplication80/dist/WebApplication80.war
Application deployed successfully with name WebApplication80.

Command deploy executed successfully.
bash-3.2$ wget http://localhost:8080/WebApplication80/resources/application.wadl
-14:54:36- http://localhost:8080/WebApplication80/resources/application.wadl
=> `application.wadl'
Resolving localhost... 127.0.0.1, ::1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15,392 (15K) [application/vnd.sun.wadl+xml]

100%[======================================================================================================>] 15,392 -.-K/s

14:54:37 (299.97 MB/s) - `application.wadl' saved [15392/15392]


Bhakti Mehta added a comment - 02/Mar/11 04:58 PM

Assigning to Jakub


geziefer added a comment - 26/May/11 02:20 AM

Assignment happened nearly 3 month ago - when can we expect to get a fix or at least some information about the progress?


Jakub Podlesak added a comment - 31/May/11 07:37 AM

When trying to deploy without NetBeans, getting:

remote failure: Error occurred during deployment: Exception while preparing the app : Invalid resource : jdbc/sample__pm. Please see server.log for more details.
Command deploy failed.

When trying from NetBeans, everything works as expected, getting the following WADL back:

%curl http://localhost:8080/RESTissue/resources/application.wadl | xmlstarlet fo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2483 100 2483 0 0 723k 0 -::- -::- -::- 1212k
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://research.sun.com/wadl/2006/10">
<doc xmlns:jersey="http://jersey.dev.java.net/" jersey:generatedBy="Jersey: 1.5-ea08 12/10/2010 02:57 PM"/>
<resources base="http://localhost:8080/RESTissue/resources/">
<resource path="my.app.discountcode">
<method id="create" name="POST">
<request>
<representation mediaType="application/xml"/>
<representation mediaType="application/json"/>
</request>
</method>
<method id="findAll" name="GET">
<response>
<representation mediaType="application/xml"/>
<representation mediaType="application/json"/>
</response>
</method>
<method id="edit" name="PUT">
<request>
<representation mediaType="application/xml"/>
<representation mediaType="application/json"/>
</request>
</method>
<resource path="{id}">
<param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="id" style="template" type="xs:string"/>
<method id="find" name="GET">
<response>
<representation mediaType="application/xml"/>
<representation mediaType="application/json"/>
</response>
</method>
<method id="remove" name="DELETE"/>
</resource>
<resource path="{from}/{to}">
<param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="to" style="template" type="xs:int"/>
<param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="from" style="template" type="xs:int"/>
<method id="findRange" name="GET">
<response>
<representation mediaType="application/xml"/>
<representation mediaType="application/json"/>
</response>
</method>
</resource>
<resource path="count">
<method id="countREST" name="GET">
<response>
<representation mediaType="text/plain"/>
</response>
</method>
</resource>
</resource>
</resources>
</application>

Trying to access the my.app.discountcode resource

%curl -Haccept:application/xml http://localhost:8080/RESTissue/resources/my.app.discountcode | xmlstarlet fo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 396 100 396 0 0 29479 0 -::- -::- -::- 33000
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<discountCodes>
<discountCode>
<discountCode>72</discountCode>
<rate>16.00</rate>
</discountCode>
<discountCode>
<discountCode>77</discountCode>
<rate>11.00</rate>
</discountCode>
<discountCode>
<discountCode>76</discountCode>
<rate>7.00</rate>
</discountCode>
<discountCode>
<discountCode>78</discountCode>
<rate>0.00</rate>
</discountCode>
</discountCodes>


Jakub Podlesak added a comment - 31/May/11 07:57 AM

My colleague, Pavel Bucek, says, the behavior is quite non-deterministic when it comes to Jersey/Servlet 3 integration.
Tried to re-deploy the application several times, then removed the sun-web.xml and restarted GF and finally got:

INFO: WEB0671: Loading application [RESTissue] at [/RESTissue]
INFO: RESTissue was successfully deployed in 1,438 milliseconds.
INFO: Portable JNDI names for EJB DiscountCodeFacadeREST : [java:global/RESTissue/DiscountCodeFacadeREST!service.DiscountCodeFacadeREST, java:global/RESTissue/DiscountCodeFacadeREST]
SEVERE: Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method
java.lang.RuntimeException: EJB Container initialization error
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:246)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:290)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:101)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:249)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:359)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:369)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1080)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1260)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1248)
at org.glassfish.deployment.admin.ReDeployCommand.execute(ReDeployCommand.java:126)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:354)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:369)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1080)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1260)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1248)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:453)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:220)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:818)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1008)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.sun.ejb.containers.BaseContainer.instantiateOptionalEJBLocalBusinessObjectImpl(BaseContainer.java:3862)
at com.sun.ejb.containers.StatelessSessionContainer.initializeHome(StatelessSessionContainer.java:253)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:167)
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:234)
... 39 more
Caused by: java.lang.RuntimeException: Uncompilable source code - cannot find symbol
symbol: class Path
at service.DiscountCodeFacadeREST.<clinit>(DiscountCodeFacadeREST.java:26)
... 49 more

SEVERE: Exception while loading the app
SEVERE: Exception while loading the app : EJB Container initialization error
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.sun.ejb.containers.BaseContainer.instantiateOptionalEJBLocalBusinessObjectImpl(BaseContainer.java:3862)
at com.sun.ejb.containers.StatelessSessionContainer.initializeHome(StatelessSessionContainer.java:253)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:167)
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:234)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:290)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:101)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:249)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:359)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:369)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1080)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1260)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1248)
at org.glassfish.deployment.admin.ReDeployCommand.execute(ReDeployCommand.java:126)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:354)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:369)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1080)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1260)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1248)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:453)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:220)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:818)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1008)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: Uncompilable source code - cannot find symbol
symbol: class Path
at service.DiscountCodeFacadeREST.<clinit>(DiscountCodeFacadeREST.java:26)
... 49 more


Jakub Podlesak added a comment - 13/Jun/11 09:02 AM

The application should not bundle Jersey JARs.
Jersey jars are bundled along with GlassFish so there
should not be a need to bundle them with the application.

When @ApplicationPath annotated application config is present
in the application, GlassFish calls Jersey's Servlet
Container Initializer registered via META-INF/services/javax.servlet.ServletContainerInitializer
file(s), which is responsible for adding a configured Jersey Servlet
to the application.

The above file is present in GlassFish Jersey jersey-gf-server.jar bundle
and also in the WAR's WEB-INF/lib/jersey-server.jar
Since the name does not differ, and GF's web module loads the initializer
based on a (String value) class name, the bundled initializer
is called instead of the bundled one.

Not sure yet how to resolve this. Possible options are:

1) GlassFish web module bug, needs to be fixed there
2) Jersey bug: Jersey needs to at least provide a reasonable error message
3) Unsupported scenario, but there still might be valid cases, when people need to bundle
different Jersey version, than what gets bundled with the container...


vince kraemer added a comment - 13/Jun/11 09:53 AM

Japod, It seems like you are saying that a web app that deploys and executes successfully on 3.0.1 is not compatible with 3.1. While I guess it is possible to say that, it is a bit unexpected....

Forcing folks to repackage their working 3.0.1 apps for 3.1 seems like an impediment to adoption of 3.1.

Forcing folks to repackage apps that are working on Tomcat and the like to be 3.1 compatible seems like a burden, too.


Jakub Podlesak added a comment - 14/Jun/11 09:30 AM

Vince, in terms of executes successfully on 3.0.1 and not compatible with 3.1:
i would be surprised if 3.0.1 did not cause similar issues with this application as 3.1.
Please see above: i was able to deploy and run the application on 3.1 just fine for several times.

Regarding the Tomcat point: Tomcat is not a Java EE 6 compatible container, it does not have
the JAX-RS support. That is why you need to bundle Jersey jars with your application there.
There is no need to bundle Jersey jars with an application to be deployed onto Java EE 6
compliant GlassFish 3.x container. If i wanted to exaggerate: it would be similar to bundling
a Servlet 3 implementation with your application, just in case the container does not have it supported.

Anyway: i am not a magician a can not fix 3.1, that game is over, i can only try to help fixing 3.1+.

So back to the matter: apart from the class ambiguity it seems there is indeed a bug in the GlassFish web module.
The ServletContainerInitializer API contract is broken there, so that unless you set the "org.glassfish.web.parsing"
system property to true, the container initializers are not given a complete list of classes
as promised in:

-8<-

  • @param c the Set of application classes that extend, implement, or
  • have been annotated with the class types specified by the
  • {@link javax.servlet.annotation.HandlesTypes HandlesTypes} annotation,
  • or <tt>null</tt> if there are no matches, or this
  • <tt>ServletContainerInitializer</tt> has not been annotated with
  • <tt>HandlesTypes</tt>
    ->8-

Namely the application classes that extend or implement given types are omitted in the list.
See org.glassfish.web.loader.ServletContainerInitializerUtil class, which has two checkAgainstInterestList
methods. One of them only checks for annotations based on the javadoc. I am going to double check
that and file a new bug against that class.

You might want to try to set the "org.glassfish.web.parsing" system property to true on your container,
restart, and see if the issue is gone.

~Jakub


scatari added a comment - 05/Jul/11 12:42 AM

Fix for the dependent issue, 16872 was integrated into B10.