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 16:21:16 GMT
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


Mime
View raw message