Jakub,
just noticed that my last mail did not contain the source code that I am
executing. Strange... so I am sending it again.
// Workaround for GFv3: Using getContextResolver
JAXBContext jaxbContext =
this.providers.getContextResolver(JAXBContext.class,
APPLICATION_XML_TYPE).getContext(QuerySchemaDiscovery.class);
StringWriter sw = new StringWriter();
jaxbContext.createMarshaller().marshal(querySchemaDiscovery, sw);
return Response.status(MULTI_STATUS).entity(sw.toString()).build();
That code is working well. So the big question is: If
"providers.getContextResolver" works well, why is the following NOT
working?
// Original Code works well in GFv2
return
Response.status(MULTI_STATUS).entity(querySchemaDiscovery).build();
Again, the code actually works well in GFv2 and standalone, but since
GFv3 I must use the lenghty code above.
Thanks
Markus
From: Jakub Podlesak [mailto:jakub.podlesak_at_oracle.com]
Sent: Dienstag, 12. Juli 2011 17:59
To: users_at_jersey.java.net
Subject: [Jersey] Re: Jersey fails in GFv3.1
Hi Markus,
That is really strange. Given that the very same application
works fine on GFv2 it might be related to some GFv3 class-loading
magic.
Any chance you could isolate a small simple
reproducible test case to share?
The only other option i can think of at the moment is you may try
to re-bundle your application, remove all Jersey jars from it
and try to redeploy. Does the issue reproduce then?
~Jakub
On 07/12/2011 03:01 PM, Markus Karg wrote:
[Crossposted to GlassFish Forum]
Our JAX-RS application is working well standalone (Grizzly) as well as
in GFv2ur2 (Jersey-1.4 bundled in our EAR), but fails in GFv3.1
(Jersey-1.5 is part of GF)!
In particular, we are providing a custom ContextResolver which provides
(besides more) two classes: "QuerySchemaDiscovery" and
"BasicSearchSchema". Within "getContext" we are doing some output to see
what class was requests (for debug purposes).
Our resource method receives a "QuerySchemaDiscovere" instance (i. e.
JAXB can resolve it using our custom ContextResolver), then wants to
return an instance of "BasicSearchSchema". And here is the funny thing:
GFv3.1 says that "BasicSearchSchema" is not part of the JAXB context.
Moreover, there is a log entry found for
"getContext(QuerySchemaDiscovere)" but NOT for
"getContext(BasicSearchSchema)", so obviously is seems GFv3.1 is using a
differen context...
Caused by: javax.xml.bind.JAXBException: class
net.java.dev.webdav.jaxrs.search.xml.elements.BasicSearchSchema nor any
of its super class is known to this context.
at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.
java:611)
at
com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty.serializ
eListBody(ArrayReferenceNodeProperty.java:112)
... 56 more
I cannot believe that it is a bug in my application, as it runs standone
and in GFv2ur2, so I think it is a bug in GFv3.1. Any ideas what to do?
Thanks!
Markus