users@jersey.java.net

Re: [Jersey] Conflict when using Jersey and Jackson json

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Thu, 22 Apr 2010 12:45:03 +0200

Hi Beatriz,

Thanks for the test case. The solution is simple, but would have been
hard to diagnose without it.

In the sun-web.xml set class loader delegation to false:

<sun-web-app error-url="">
   <context-root>/sample-web</context-root>
   <class-loader delegate="false"/>
   <jsp-config>
     <property name="keepgenerated" value="true">
       <description>Keep a copy of the generated servlet class' java
code.</description>
     </property>
   </jsp-config>
</sun-web-app>

then your integration test will pass, including the test using the
Jersey client.

BTW nice use of the GF plugin here. I noticed it seems to take quite a
while for deployment to occur, i wonder if that is a bug in GF embedded?

Paul.

On Apr 20, 2010, at 1:59 PM, Beatriz Nombela wrote:

> Hi,
>
> Sorry for the delay. I've attached a sample application with my
> problem. There is a maven project with two modules: war and tests.
> Tests are in a separate module as they are integration tests that run
> against an embedded Glassfish with my war deployed. All the dependency
> versions are in the parent pom.
> In the tests module, you will see two tests that perform a GET HTTP
> method but with different libraries: jersey-client and http-client.
> This is to prove that without jersey-client (and without any
> dependency of Jackson in tests), the error does continue.
> The application works in a Glassfish v3.
> To execute the tests, type from the parent directory: mvn -Pit
> clean install
>
> Before I was getting this errors, when I des/serialized with JAXB
> instead of Jackson, the tests were executed correctly.
>
> Thanks for your help.
>
>
>
> On Tue, Apr 20, 2010 at 1:17 PM, Franz Wong <franzwong_at_gmail.com>
> wrote:
>> It would be easier for us to trace if you can provide the content
>> of pom.xml
>> about the dependencies of jersey and jackson.
>>
>> Franz
>>
>> On Tue, Apr 20, 2010 at 5:43 PM, Beatriz Nombela <beaotx_at_gmail.com>
>> wrote:
>>>
>>> Hi,
>>>
>>> I'm using the glassfish-embedded-all that ships with
>>> maven-embedded-glassfish-plugin, version 3.0. As you've said, that
>>> GF
>>> ships with Jersey (1.1.4.1), accordingly it comes with the Jackson
>>> core library. I specified the Jersey dependency as provided, but
>>> it's
>>> the same.
>>>
>>> Thanks for your attention.
>>>
>>>
>>>
>>> On Tue, Apr 20, 2010 at 11:29 AM, Paul Sandoz
>>> <Paul.Sandoz_at_sun.com> wrote:
>>>> Hi,
>>>>
>>>> What is your pom? a simple test executable test case may help.
>>>>
>>>> If you are using the jersey-test-framework then it does declare
>>>> some
>>>> unwanted dependencies (this has been fixed for 1.2-SNAPSHOT).
>>>>
>>>> What version of embedded GF are you using? Jersey is shipped with
>>>> GF v3
>>>> and
>>>> GF v3 embedded and that does ship with jersey json stuff which in
>>>> turn
>>>> ships
>>>> with the jackson core library.
>>>>
>>>> Paul.
>>>>
>>>> On Apr 20, 2010, at 11:18 AM, Beatriz Nombela wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Thanks for your answers. I've specified version 1.5 of Jackson
>>>>> with my
>>>>> tests, but I'm getting the same error. Also, I've looked through
>>>>> the
>>>>> output maven with -X parameter, but I don't see any other
>>>>> version of
>>>>> Jackson as 1.5.
>>>>>
>>>>> I've changed Jackson version to the previous that I was using,
>>>>> 1.4.3.
>>>>> If in my test I do a GET to a resource, it works, but doing a
>>>>> POST I
>>>>> get the following error:
>>>>>
>>>>> java.lang.NoSuchMethodError:
>>>>> org.codehaus.jackson.type.JavaType.isConcrete()Z
>>>>> at
>>>>>
>>>>> org
>>>>> .codehaus
>>>>> .jackson
>>>>> .map
>>>>> .deser
>>>>> .BeanDeserializerFactory
>>>>> .createBeanDeserializer(BeanDeserializerFactory.java:80)
>>>>> at
>>>>>
>>>>> org
>>>>> .codehaus
>>>>> .jackson
>>>>> .map
>>>>> .deser
>>>>> .StdDeserializerProvider
>>>>> ._createDeserializer(StdDeserializerProvider.java:315)
>>>>> at
>>>>>
>>>>> org
>>>>> .codehaus
>>>>> .jackson
>>>>> .map
>>>>> .deser
>>>>> .StdDeserializerProvider
>>>>> ._createAndCache2(StdDeserializerProvider.java:246)
>>>>> at
>>>>>
>>>>> org
>>>>> .codehaus
>>>>> .jackson
>>>>> .map
>>>>> .deser
>>>>> .StdDeserializerProvider
>>>>> ._createAndCacheValueDeserializer(StdDeserializerProvider.java:
>>>>> 226)
>>>>> at
>>>>>
>>>>> org
>>>>> .codehaus
>>>>> .jackson
>>>>> .map
>>>>> .deser
>>>>> .StdDeserializerProvider
>>>>> .findValueDeserializer(StdDeserializerProvider.java:110)
>>>>> at
>>>>>
>>>>> org
>>>>> .codehaus
>>>>> .jackson
>>>>> .map.ObjectMapper._findRootDeserializer(ObjectMapper.java:1349)
>>>>> at
>>>>>
>>>>> org
>>>>> .codehaus
>>>>> .jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1282)
>>>>> at
>>>>> org
>>>>> .codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:
>>>>> 927)
>>>>> ......
>>>>>
>>>>> I don't understand what's going on, maybe the embedded Glassfish
>>>>> overrides any library? I'll continue with it.
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Apr 20, 2010 at 1:21 AM, Franz Wong <franzwong_at_gmail.com>
>>>>> wrote:
>>>>>>
>>>>>> I used maven 's -X parameter to trace for dependency resolving.
>>>>>> That
>>>>>> may
>>>>>> be
>>>>>> useful.
>>>>>> Franz
>>>>>> On Tue, Apr 20, 2010 at 6:55 AM, Tatu Saloranta <tsaloranta_at_gmail.com
>>>>>> >
>>>>>> wrote:
>>>>>>>
>>>>>>> On Mon, Apr 19, 2010 at 3:51 PM, Beatriz Nombela <beaotx_at_gmail.com
>>>>>>> >
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> I'm having the same error:
>>>>>>>>
>>>>>>>> java.lang.VerifyError: (class:
>>>>>>>> org/codehaus/jackson/map/ObjectMapper,
>>>>>>>> method: writeValueAsBytes signature: (Ljava/lang/Object;)[B)…
>>>>>>>>
>>>>>>>> I have an .ear application, with a war module that uses
>>>>>>>> Jersey (v.
>>>>>>>> 1.1.5.1). I'm des/serializing with Jackson (v. 1.5.1),
>>>>>>>> registering
>>>>>>>> the
>>>>>>>> JacksonJsonProviders provided with jackson-jaxrs in my class
>>>>>>>> extending
>>>>>>>> javax.ws.rs.Application. I have a @Provider class that
>>>>>>>> configures
>>>>>>>> ObjectMapper for that purpose. If I deploy my .ear in a
>>>>>>>> Glassfish
>>>>>>>> v3,
>>>>>>>> my application works perferctly, but when I execute my tests
>>>>>>>> in an
>>>>>>>> embedded Glassfish (through maven-embedded-glassfish-plugin),
>>>>>>>> I get
>>>>>>>> the VeriryError exception. The error occurs just when I try to
>>>>>>>> instantiate ObjectMapper in the provider.
>>>>>>>>
>>>>>>>> My tests are executed with jersey-client, but I've runned
>>>>>>>> them with
>>>>>>>> http-client to see if there was a conflict with jersey-client's
>>>>>>>> jackson version. Anyway, I get the same error.
>>>>>>>>
>>>>>>>> Do you know what happens? Why my application fails only in
>>>>>>>> tests
>>>>>>>> phase?
>>>>>>>
>>>>>>> It sounds like test-only maven dependencies are resolved
>>>>>>> differently
>>>>>>> from compile/runtime dependencies. Specifically, compilation
>>>>>>> seems to
>>>>>>> refer to newer version: writeValueAsBytes was added in Jackson
>>>>>>> 1.5,
>>>>>>> and for some reason tests are running with an earlier version
>>>>>>> that do
>>>>>>> not include this method. It is bit odd that exception does claim
>>>>>>> there
>>>>>>> is a missing method.
>>>>>>>
>>>>>>> I don't know what is the right way to override test
>>>>>>> dependencies, but
>>>>>>> using 1.5 version for tests should resolve the issue.
>>>>>>>
>>>>>>> -+ Tatu +-
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Beatriz Nombela Escobar
>>>>> beaotx_at_gmail.com
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Beatriz Nombela Escobar
>>> beaotx_at_gmail.com
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>
>>
>>
>
>
>
> --
> Beatriz Nombela Escobar
> beaotx_at_gmail.com
> <sample-
> parent
> .zip
> >---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net