cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Bimschas <bimsc...@itm.uni-luebeck.de>
Subject Re: DOSGi and JSON responses
Date Fri, 05 Feb 2010 10:09:57 GMT
Sergey,

I'm currently on it. Just one thing that I stumbled over: the manifest for the cxf-singlebundle-distribution
doesn't export version numbers of the javax.xml.bind.* packages. Is that intentionally?

If I extend JSONProvider I'll have to add the dependency to my POM. Then, the manifest generated
by maven-bundle-plugin will contain version 2.1.0 of javax.xml.bind.* which can't be resolved
at runtime since boot delegation exports version "0.0.0" and DOSGI doesn't export a version.
Do you know a nice way around this issue? If I hard encode the JREs JAXB version I couldn't
be sure version's correct when run on a different JRE...

Thanks and regards,
Daniel

Am 27.01.2010 um 18:53 schrieb Sergey Beryozkin:

> This is strange...Hmm... Is it only JSON responses which are empty ?  Can you try extending
 the default JSON provider and just overwrite its writeTo and delegate, just to check, before
doing the delegation, if it is actually invoked or if it has some real data passed in ? Also,
can you please try "org.apache.cxf.rs.httpservice.context" instead of "org.apache.cxf.rs.address",
say,
> 
> org.apache.cxf.rs.httpservice.context="/persons" ?
> 
> cheers, Sergey
> 
> ----- Original Message ----- From: "Daniel Bimschas" <bimschas@itm.uni-luebeck.de>
> To: <users@cxf.apache.org>
> Sent: Wednesday, January 27, 2010 3:28 PM
> Subject: Re: DOSGi and JSON responses
> 
> 
> I tried both the ServiceMix bundle and the Jettison 1.2 bundle but both still deliver
empty output. Debug output looks fine as far as I can see (it selects org.apache.cxf.jaxrs.provider.JSONProvider
for output):
> 
> ...
> 
> [btpool3-0] DEBUG org.apache.cxf.phase.PhaseInterceptorChain - Invoking handleMessage
on interceptor org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor@46cfd5ee
> [btpool3-0] DEBUG org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor - Response content
type is: application/json
> [btpool3-0] DEBUG org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor - Response EntityProvider
is: org.apache.cxf.jaxrs.provider.JSONProvider
> [btpool3-0] DEBUG org.apache.cxf.phase.PhaseInterceptorChain - Invoking handleMessage
on interceptor org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor@4d0155fb
> [btpool3-0] DEBUG org.apache.cxf.transport.http_jetty.JettyHTTPDestination - Finished
servicing http request on thread: Thread[btpool3-0,5,main]
> 
> ...
> 
> Any idea? Just to be sure my configuration is correct, here's my serviceComponents.xml:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
>   <scr:component enabled="true" immediate="true" name="VzServiceRestComponent">
>       <implementation class="de.uniluebeck.itm.soapraktikum.ws0910.persons.vz.impl.PersonResource"/>
>       <service servicefactory="false">
>           <provide interface="de.uniluebeck.itm.soapraktikum.ws0910.persons.vz.impl.PersonResource"/>
>       </service>
>       <property name="service.exported.interfaces" type="String" value="*"/>
>       <property name="service.exported.configs" type="String" value="org.apache.cxf.rs"/>
>       <property name="service.exported.intents" type="String" value="HTTP"/>
>       <property name="org.apache.cxf.rs.address" type="String" value="http://localhost:9090/persons/"/>
>       <property name="org.apache.cxf.rs.databinding" type="String">
>           org.apache.cxf.jaxrs.provider.JAXBProvider
>           org.apache.cxf.jaxrs.provider.JSONProvider
>       </property>
>       <property name="service.pid" value="VzServiceRestComponent"/>
>       <reference name="vzService" interface="de.uniluebeck.itm.soapraktikum.ws0910.persons.vz.VzService"
cardinality="1..1" policy="static" bind="bindVzService" unbind="unbindVzService"/>
>   </scr:component>
> </components>
> 
> Am 27.01.2010 um 16:03 schrieb Daniel Bimschas:
> 
>> Would DOSGi RI 1.1 work with http://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.2/jettison-1.2.jar
or is there any reason it would not?
>> 
>> Am 27.01.2010 um 15:49 schrieb Sergey Beryozkin:
>> 
>>> Hi
>>> 
>>> if you use "org.apache.cxf.rs.provider" string property then it's a comma-separated
list of class names, if using declarative services then you need to have a space separated
list of class names listed on separate lines, as shown in the section I linked to.
>>> As we discussed eralier on, there's also an "org.apache.cxf.rs.databinding" property
which is of limited value to JAXRS services at the moment (can have "aegis" or "jaxb" values).
I'm thinking of adding more supported values to it so that one can say : "org.apache.cxf.rs.databinding"="jaxb,json"
instead of typing class names when setting a "org.apache.cxf.rs.provider".
>>> 
>>> Oh, I forgot...DOSGI RI does not ship Jettison (ServiceMix would install it as
part of cxf jaxrs feature), perhaps it should. So if you'd like to use a default CXF JSON
provider (which is Jettison-based) then install either Jettison 1.1 bundle [1] or Jettison
1.2, CXF 2.2.4 (which depends on Jettison 1.1) should accept it too, there's no version range
in the CXF Import-Package for jettison packages
>>> 
>>> Sergey
>>> 
>>> [1] http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.jettison/1.0.1_2/
>>> [2] http://docs.codehaus.org/display/JETTISON/2010/01/18/Jettison+1.2+released
>>> 
>>> ----- Original Message ----- From: "Daniel Bimschas" <bimschas@itm.uni-luebeck.de>
>>> To: <users@cxf.apache.org>
>>> Sent: Wednesday, January 27, 2010 2:11 PM
>>> Subject: Re: DOSGi and JSON responses
>>> 
>>> 
>>> Sorry, accidentally sent the last before I finished writing it :)
>>> 
>>> I used maven-scr-plugin to generate the properties of the registered service,
therefore the syntax should be ok now. However, it doesn't seem to work. I keep getting empty
JSON files :( I'll now check out to do it on the greeter_rest sample, see if it works there!
>>> 
>>> Am 27.01.2010 um 10:47 schrieb Sergey Beryozkin:
>>> 
>>>> Hi Daniel
>>>> 
>>>> Please see "Registering custom JAXRS providers" in [1].
>>>> There's a couple of options. One is to to use an "org.apache.cxf.rs.provider"
property which accepts a list of class names, so you can list the provider you need, ex, "org.apache.cxf.jaxrs.provider.JSONProvider",
etc. The other option is to register an instance of say JSONProvider as an OSGI service, this
option is the only way at the moment to have a provider instance configured with some custom
properties...
>>>> 
>>>> To simplify things a bit, I'll probably need to intoduce "json", "atom",
"xbeans", etc for org.apache.cxf.rs.databinding so that users can avoid having to specify
classnames like "org.apache.cxf.jaxrs.provider.JSONProvider" directly...For more advanced
cases we will need to recognize providers configured in Spring (as an alternative to registering
them as OSGI services)...
>>>> 
>>>> cheers, Sergey
>>>> 
>>>> 
>>>> 
>>>> [1] http://cxf.apache.org/distributed-osgi-reference.html#DistributedOSGiReference-ServiceProviderpropertiesForConfiguringRESTfulJAXRSbasedendpointsandconsumers
>>>> 
>>>> ----- Original Message ----- From: "Daniel Bimschas" <bimschas@itm.uni-luebeck.de>
>>>> To: <users@cxf.apache.org>
>>>> Sent: Tuesday, January 26, 2010 9:59 PM
>>>> Subject: DOSGi and JSON responses
>>>> 
>>>> 
>>>> Hi List!
>>>> 
>>>> I've now successfully developed a project that additionally exposes its interfaces
over the DOSGi based JAX-RS implementation as RESTful service. Therefore I've used the JAXB-Binding
which worked fine. However, I couldn't find any information about how to get the JSON responses
working (they are always empty, i.e. 0 bytes of payload). Can somebody help me here and point
me to the right documentation?
>>>> 
>>>> Kind regards,
>>>> Daniel=
>>> 
>>> -- 
>>> 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