cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sbery...@progress.com>
Subject Re: JAXB and JAX-RS under CXF
Date Fri, 22 Jan 2010 16:46:33 GMT
Excellent, thanks. Please ping the Felix team, and I'll play with this project too...

cheers, Sergey

----- Original Message ----- 
From: "Daniel Bimschas" <bimschas@itm.uni-luebeck.de>
To: <dev@cxf.apache.org>
Sent: Friday, January 22, 2010 4:43 PM
Subject: Re: JAXB and JAX-RS under CXF


Sergey,

I'm unsure if that is something that can be fixed at DOSGi level. I just made a demo project
and attached it to this mail. I will 
also send it to the Apache Felix guys who hopefully can inspect the issue (if they care) :D
because felix's the framework that 
doesn't work.

Regards,
Daniel




--------------------------------------------------------------------------------



Am 22.01.2010 um 17:21 schrieb Sergey Beryozkin:

> Ok, great it started working for you... Do you reckon that something can actually be
fixed at the DOSGI level ? If yes then 
> indeed, please open a DOSGI issue and attach a project. But it looks like it is a container-specific
issue ? Which one were you 
> using originally, before switching to Equinox ?
>
> thanks, Sergey
>
>
> ----- Original Message ----- From: "Daniel Bimschas" <bimschas@itm.uni-luebeck.de>
> To: <dev@cxf.apache.org>
> Sent: Friday, January 22, 2010 4:13 PM
> Subject: Re: JAXB and JAX-RS under CXF
>
>
> Damnit. I just changed the Pax-Runner configuration to only use Equinox and now the tests
pass, everything seems fine. Are you 
> interested in a tiny Maven-based project demonstrating the issue?
>
> Am 22.01.2010 um 16:58 schrieb Sergey Beryozkin:
>
>> Hi,
>>
>> please see more comments inline
>>
>> <snip/>
>>
>>> just one more question. I converted a plain (non-OSGi) JAX-RS project to DOSGi-based
CXF. Now, for some of my JAXB annotated 
>>> classes I get the error message:
>>>
>>> com.sun.istack.internal.SAXException2: unable to marshal type "a.b.c.X" as an
element because it is missing an @XmlRootElement 
>>> annotation
>>>
>>> S.B : Do those objects actually have @XmlRootElement ?
>>
>> Yes, they do.
>>
>>>
>>> I use Pax Exam to set up a test case that marshalls the object to a byte[] and
unmarshalls it afterwards from it.
>>>
>>> Do you know that error?
>>>
>>> S.B : yes, usually it is to do with @XmlRootElement being not present or, in
OSGI case, being 'lost' at runtime, due to a 
>>> missing import package value...You can condigure DOSGI RI to not require @XmlRootElement
for JAXRS services...
>>
>> I checked the packaged bundle. It definitely has the JAXB annotation packages imported
(which is no wonder as I'm using 
>> maven-bundle-plugin with bnd to generate the Manifest).
>>
>>> S.B : for some reasons there're still invisible to the JAXB runtime. One of users
reported a similar issue the other day, JAXB 
>>> classes have been moved to a bundle separate from the application one. I don't
recall what the fix was,  it is just a visibility 
>>> issue which can be solved at the OSGI level. Please attach a sample bundle if
it won't work...
>>
>> How can I configure it for use without annotations?
>>
>>> S.B : You'll need to register a custom JAXBElementProvider as a MessageBodyReader
and MessageBodyWriter OSGI service and set a 
>>> property on it (marshalAsJaxbElement). One will be able to do the same from Spring
DM context once we fix the issue of 
>>> discovering well-known spring beans...
>>
>>>
>>> Why is CXF behaving different than "plain" JAXB?
>>>
>>> S.B : what exactly is different ?
>>
>> Just that plain works, and OSGi-based fails because of the errors mentioned above.
But I guess that's "misconfiguration".
>>
>>> S.B : yes, it's an OSGI configuration  issue. DOSGI can't help on its own...At
the last resort try DynamicImport...
>>
>> cheers, Sergey
>>
>>>
>>> Is it using a different JAXB implementation at all? And if yes, is it possible
to switch to the implementation included in the 
>>> JVM?
>>>
>>> Kind regards,
>>> Daniel
>>>
>>> Am 21.01.2010 um 13:01 schrieb Sergey Beryozkin:
>>>
>>>> Hi
>>>>
>>>> Please see a comment with S.B
>>>>
>>>> ----- Original Message ----- From: "Daniel Bimschas" <bimschas@itm.uni-luebeck.de>
>>>> To: <dev@cxf.apache.org>
>>>> Sent: Wednesday, January 20, 2010 6:07 PM
>>>> Subject: Re: JAXB and JAX-RS under CXF
>>>>
>>>>
>>>> Oh great thing Sergey,
>>>>
>>>> thanks for that answer. I just tried and it works just fine. In fact, documentation
was either misleading or I misread. The 
>>>> documentation says
>>>>
>>>> "This property has a limited value for JAXRS services as JAXB is supported
by default, the only supported value is 'aegis' and 
>>>> it is a shortcut for registering an Aegis provider [...]"
>>>>
>>>> which is a little hard to understand. One the one hand it says JAXB is supported,
but on the other hand 'aegis' is the only 
>>>> value you're allowed to use. So this confused me.
>>>>
>>>>> S.B : it kind of does not makse sense, now that I read it again. (CXF)
JAXRS do not use (CXF)databindings as often as they use 
>>>>> 'providers', technically both terms are probably identical, but I wanted
to not require users to set this property given that 
>>>>> they will probably want to register say a DataBindingProvider provider
delegating to CXF Aegis as OSGI service, with some 
>>>>> custom configuration, etc...That said, for simple cases, letting users
just to do "org.apache.cxf.rs.databinding=atom" would 
>>>>> also make sense...
>>>>
>>>> JAXB will be supported with or without "org.apache.cxf.rs.databinding=jaxb"
but I'll look into simplifying the documentation 
>>>> and enhancing a bit the way this org.apache.cxf.rs.databinding property is
handled...
>>>>
>>>> thanks, Sergey
>>>>
>>>>
>>>> Thanks for the clarification and the impressively fast response!
>>>>
>>>> Regards,
>>>> Daniel
>>>>
>>>> Am 20.01.2010 um 18:20 schrieb Sergey Beryozkin:
>>>>
>>>>> Hi
>>>>>
>>>>> It is possible. It has to work, you do not even has to enable it for
JAXRS; for DOSGI-RI/JAX-RS it is a default databinding 
>>>>> given that the JAXRS spec requires the JAXB support OTB so I thought
asking users to explictly add 
>>>>> org.apache.cxf.rs.databinding=jaxb just to enable JAXB would be too much...
>>>>> Are you seeing any issues ? I'm thinking may be I've just done another
piece of the documentation which is confusing ? One 
>>>>> thing I'm saying there is that if you do not want to have your bundle
modified for JAXB be supported at runtime as well as to 
>>>>> explicitly annotate beans with @XmlRootElement and friends (that is,
to import JAXB packages) then if it is JAX-RS only you 
>>>>> can register a custom (CXF JAXRS) JAXBElementProvider and tell it to
use JAXBElement internally and that is it...
>>>>>
>>>>> cheers, Sergey
>>>>>
>>>>> ----- Original Message ----- From: "Daniel Bimschas" <bimschas@itm.uni-luebeck.de>
>>>>> To: <dev@cxf.apache.org>
>>>>> Sent: Wednesday, January 20, 2010 5:07 PM
>>>>> Subject: JAXB and JAX-RS under CXF
>>>>>
>>>>>
>>>>> Hi list,
>>>>>
>>>>> following the DOSGi reference [1] I see that it's not possible to use
JAXB under JAX-RS but with JAX-WS. Is that correct? And 
>>>>> what is the reason for it?
>>>>>
>>>>> Kind regards,
>>>>> Daniel
>>>>>
>>>>> [1] http://cxf.apache.org/distributed-osgi-reference.html
>>>>
>>>> -- 
>>>> M.Sc. Daniel Bimschas
>>>> Institute of Telematics, University of Lübeck
>>>> http://www.itm.uni-luebeck.de/users/bimschas
>>>> Ratzeburger Allee 160, 23538 Lübeck, Germany
>>>> Phone: +49 451 500 5389
>>>>
>>>>
>>>
>>> -- 
>>> M.Sc. Daniel Bimschas
>>> Institute of Telematics, University of Lübeck
>>> http://www.itm.uni-luebeck.de/users/bimschas
>>> Ratzeburger Allee 160, 23538 Lübeck, Germany
>>> Phone: +49 451 500 5389
>>>
>>>
>>
>> -- 
>> M.Sc. Daniel Bimschas
>> Institute of Telematics, University of Lübeck
>> http://www.itm.uni-luebeck.de/users/bimschas
>> Ratzeburger Allee 160, 23538 Lübeck, Germany
>> Phone: +49 451 500 5389
>>
>>
>
> -- 
> M.Sc. Daniel Bimschas
> Institute of Telematics, University of Lübeck
> http://www.itm.uni-luebeck.de/users/bimschas
> Ratzeburger Allee 160, 23538 Lübeck, Germany
> Phone: +49 451 500 5389
>
>

-- 
M.Sc. Daniel Bimschas
Institute of Telematics, University of Lübeck
http://www.itm.uni-luebeck.de/users/bimschas
Ratzeburger Allee 160, 23538 Lübeck, Germany
Phone: +49 451 500 5389



Mime
View raw message