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 17:47:21 GMT
Sergey,

I'll look into that on monday. Gotta hit the weekend now, it's already late enough!

Thanks for all,
Daniel

Am 05.02.2010 um 18:40 schrieb Sergey Beryozkin:

> 
> Sure, I'll try to to look into it.
> 
> However I'd appreciate if you could confirm first :
> 
> - did you explicitly add an "org.apache.cxf.jaxrs.provider"  value to your
> bundle's Import-Package ? You haven't told me if you tried it
> 
> - what is the story with the LinkageError you mentioned earlier ? Looked
> like to me it was to do with the fact there were multiple xml apis floating
> around in the container. Did you try either of the options suggested ? If
> you have JAXB working then why does not that LinkageError interfere, does
> not make sense ? 
> 
> thanks, Sergey
> 
> 
> Daniel Bimschas-2 wrote:
>> 
>> Sergey,
>> 
>> this ping pong game we're playing here seems a little ineffective.
>> Therefore, I wrote a minimal Hello, World project [1] that reflects my
>> project layout. There's a run.sh inside that uses Pax Runner to start up.
>> I hope this helps and you find the time to take a look inside.
>> 
>> Thanks a million,
>> Daniel
>> 
>> [1]
>> http://www.itm.uni-luebeck.de/users/bimschas/projects/playground.cxf-jaxrs-issue.tar.gz
>> 
>> Am 05.02.2010 um 15:48 schrieb Sergey Beryozkin:
>> 
>>> Hi
>>> 
>>> Please see comments with S.B.
>>> 
>>> ----- Original Message ----- From: "Daniel Bimschas"
>>> <bimschas@itm.uni-luebeck.de>
>>> To: <users@cxf.apache.org>
>>> Sent: Friday, February 05, 2010 2:16 PM
>>> Subject: Re: DOSGi and JSON responses
>>> 
>>> 
>>> Ah, damnit. I forgot to mention that I took out my self-written
>>> JSONProvider extending class in order to be sure that doing this doesn't
>>> get in the way of something. Therefore, Import-Package doesn't contain
>>> "org.apache.cxf.jaxrs.provider.*" but that should be okay.
>>> 
>>>> S.B You do not need to extend the CXF provider to the Import-Package
>>>> including "org.apache.cxf.jaxrs.provider.*", can you make sure please it
>>>> is explicitly  imported ? I'm not sure how you build your own bundle but
>>>> there's usually a way to provide the Import-Package at build time - but
>>>> if it is cumbersome to do for some reasons then indeed, just have a
>>>> custom provider extending the cxf one and doing nothing else but
>>>> indirectly ensuring  Import-Package contains the right value...Otherwise
>>>> i won't work, given that DOSGi uses the bundle activator of the custom
>>>> bundle to load the providers. That said, I'll update the CXF JAXRS
>>>> handler to try the dswContext (which is CXF aware) when the loading
>>>> exception occur...
>>> 
>>> 
>>> I investigated further. If I use the following properties in my DS
>>> component:
>>> 
>>> <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:8081/verzeichnis/"/>
>>> <property name="org.apache.cxf.rs.databinding" type="String"
>>> value="jaxb"/>
>>> 
>>> there are no exceptions (but also no JSON support).
>>> 
>>> S.B> : It is either "org.apache.cxf.rs.databinding" or
>>> "org.apache.cxf.rs.provider", otherwise what to do if the former declares
>>> jaxb and the latter declares some other XML aware provider ? Also there's
>>> no need to specify JAXBElementProvider (JAXB is supported OTB), only of
>>> you need to configure it somehow...
>>> 
>>> Using the following properties
>>> 
>>> <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:8081/verzeichnis/"/>
>>> <property name="org.apache.cxf.rs.provider" type="String">
>>> org.apache.cxf.jaxrs.provider.JAXBElementProvider
>>> org.apache.cxf.jaxrs.provider.JSONProvider
>>> </property>
>>> 
>>> I get the CNFEs mentioned before.
>>> 
>>>> S.B : please update Import-Package in your bundle
>>> 
>>> Changing the "org.apache.cxf.rs.address" property to
>>> "org.apache.cxf.rs.httpservice.context" as you proposed before doesn't
>>> change anything too (but that seems just logically).
>>> 
>>> The strange thing is that I only get those exceptions when the bundle
>>> starts up. The applications runs fine nevertheless and when I do HTTP
>>> requests there are no more exceptions.
>>> 
>>>> except that LinkageError ?
>>> 
>>> cheers, Sergey
>>> 
>>> Is this maybe a fallback to the default "jaxb" that could lead to this
>>> behaviour?
>>> 
>>> cheers,
>>> Daniel
>>> 
>>> 
>>> 
>>> Am 05.02.2010 um 14:45 schrieb Sergey Beryozkin:
>>> 
>>>> I'm wondering, is the problem here to do with the fact that DOSGI is
>>>> trying to use the BundelContext/Bundle of the application bundle to load
>>>> the providers ? It should work if the providers's code is indeed inside
>>>> a given app bundle but looks like it causes issues if the provider's
>>>> code is actually located elsewhere.
>>>> 
>>>> That said, if you own bundle imports the org.apache.cxf.jaxrs.provider.*
>>>> then surely the OSGI loader has to be capable to find the classes
>>>> available elsewhere in the container, especially given that CXF minimal
>>>> bundle is exporting org.apache.cxf.jaxrs.provider ?
>>>> 
>>>> Can you please check that your own bundle Import-Packag(es) the
>>>> org.apache.cxf.jaxrs.provider.* ?
>>>> 
>>>> thanks, Sergey
>>>> 
>>>> ----- Original Message ----- From: "Daniel Bimschas"
>>>> <bimschas@itm.uni-luebeck.de>
>>>> To: <users@cxf.apache.org>
>>>> Sent: Friday, February 05, 2010 1:34 PM
>>>> Subject: Re: DOSGi and JSON responses
>>>> 
>>>> 
>>>> Maybe the full debugging output including stack trace can help more:
>>>> 
>>>> INFO: Creating a
>>>> de.uniluebeck.itm.soapraktikum.ws0910.persons.vz.rest.PersonResource
>>>> endpoint from CXF PublishHook, address is
>>>> http://localhost:8081/verzeichnis/
>>>> java.lang.ClassNotFoundException:
>>>> org.apache.cxf.jaxrs.provider.JAXBElementProvider
>>>> at
>>>> org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:744)
>>>> at org.apache.felix.framework.ModuleImpl.access$100(ModuleImpl.java:61)
>>>> at
>>>> org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1656)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
>>>> at
>>>> org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java:604)
>>>> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1487)
>>>> at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:897)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils.loadProviders(JaxRSUtils.java:112)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils.getProviders(JaxRSUtils.java:67)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.handlers.JaxRSPojoConfigurationTypeHandler.createServer(JaxRSPojoConfigurationTypeHandler.java:119)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.hooks.ServiceHookUtils.createServer(ServiceHookUtils.java:86)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.createServer(CxfPublishHook.java:106)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.publishEndpoint(CxfPublishHook.java:80)
>>>> at org.apache.cxf.dosgi.dsw.Activator$1.run(Activator.java:164)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>> at java.lang.Thread.run(Thread.java:637)
>>>> 05.02.2010 14:32:16 org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils
>>>> loadProviders
>>>> WARNUNG: JAXRS Provider
>>>> org.apache.cxf.jaxrs.provider.JAXBElementProvider can not be loaded or
>>>> created
>>>> java.lang.ClassNotFoundException:
>>>> org.apache.cxf.jaxrs.provider.JSONProvider
>>>> at
>>>> org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:744)
>>>> at org.apache.felix.framework.ModuleImpl.access$100(ModuleImpl.java:61)
>>>> at
>>>> org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1656)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
>>>> at
>>>> org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java:604)
>>>> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1487)
>>>> at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:897)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils.loadProviders(JaxRSUtils.java:112)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils.getProviders(JaxRSUtils.java:67)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.handlers.JaxRSPojoConfigurationTypeHandler.createServer(JaxRSPojoConfigurationTypeHandler.java:119)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.hooks.ServiceHookUtils.createServer(ServiceHookUtils.java:86)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.createServer(CxfPublishHook.java:106)
>>>> at
>>>> org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.publishEndpoint(CxfPublishHook.java:80)
>>>> at org.apache.cxf.dosgi.dsw.Activator$1.run(Activator.java:164)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>> at java.lang.Thread.run(Thread.java:637)
>>>> 05.02.2010 14:32:16 org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils
>>>> loadProviders
>>>> 
>>>> 
>>>> Am 05.02.2010 um 14:22 schrieb Daniel Bimschas:
>>>> 
>>>>> It's Felix over Pax Runner in my case. If I take the
>>>>> "sun.*,com.sun.*,javax.xml.bind,javax.xml.bind.*" packages out of the
>>>>> bootdelegation classpath the following errors will occur:
>>>>> 
>>>>> java.lang.ClassNotFoundException:
>>>>> org.apache.cxf.jaxrs.provider.JAXBElementProvider
>>>>> java.lang.ClassNotFoundException:
>>>>> org.apache.cxf.jaxrs.provider.JSONProvider
>>>>> 
>>>>> For me, currently that doesn't make sense since the DOSGI bundle is
>>>>> fully resolved and all classes should be loadable. I'll further
>>>>> investigate this...
>>>>> 
>>>>> Am 05.02.2010 um 13:29 schrieb Sergey Beryozkin:
>>>>> 
>>>>>>> S.B : Is it a single bundle distro ? Yes, it ships the stax api
>>>>>>> bundle I think...Hmm...Will it work if you try the multibundle
distro
>>>>>>> and omit the stax-api bundle ? Or perhaps updating the Equinox
config
>>>>>>> to block the stax api from the system ?
>>>>> 
>>>>> -- 
>>>>> 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
>> 
>> 
>> 
>> 
> 
> -- 
> View this message in context: http://old.nabble.com/DOSGi-and-JSON-responses-tp27330507p27471408.html
> Sent from the cxf-user mailing list archive at Nabble.com.
> 

-- 
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