Hi
On 25/07/12 11:12, hom wrote:
In order to configure the JSONProvider, I switched to the server approach:
<jaxrs:server id="providerPOXJSON" address="/xyz/json">
<jaxrs:serviceBeans>
<ref component-id="providerAdapter"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref component-id="jsonProvider" />
</jaxrs:providers>
</jaxrs:server>
<bean id="providerAdapter" class="org.xyz.json.ProviderAdapter"/>
<bean id="jsonProvider"
class="org.apache.cxf.jaxrs.provider.JSONProvider">
The complete class name is
"org.apache.cxf.jaxrs.provider.json.JSONProvider" in CXF 2.6.1, I can
see the docs wrongly referring to the old package in a couple of places,
will get that fixed now.
You'll also need to add
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.3.1</version>
</dependency>
Note in Camel you can do
<jaxrs:server id="providerPOXJSON" address="camel://direct:xyzJSON">
I've also seen a cxfrs rsServer component having a <providers> element,
but I haven't tried.
HTH, Sergey
<property name="namespaceMap">
<map>
<entry key="DoItRequest" value="{http://xyz/types}DoItRequest"/>
</map>
</property>
</bean>
When I deploy this I get the following error:
Caused by: java.lang.ClassNotFoundException:
org.apache.cxf.jaxrs.provider.JSONProvider not found by
org.apache.cxf.cxf-rt-frontend-jaxrs [132]
at
org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)[org.apache.felix.framework-3.0.9.jar:]
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)[:1.6.0_24]
at
org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java:645)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.felix.framework.resolver.WireImpl.getClass(WireImpl.java:99)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.felix.framework.ModuleImpl.searchImports(ModuleImpl.java:1390)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:722)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)[org.apache.felix.framework-3.0.9.jar:]
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)[:1.6.0_24]
at
org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java:645)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1619)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:900)[org.apache.felix.framework-3.0.9.jar:]
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.loadClass(BlueprintContainerImpl.java:384)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.BlueprintRepository.loadClass(BlueprintRepository.java:381)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.container.GenericType.parse(GenericType.java:113)[10:org.apache.aries.blueprint:0.3.1]
at
org.apache.aries.blueprint.di.AbstractRecipe.loadType(AbstractRecipe.java:110)[10:org.apache.aries.blueprint:0.3.1]
It seems that cxf-rt-frontend-jaxrs does not have access to the JSONProvider
class. The bundle does not import the required package.
Do you have an idea how to fix that?
--
View this message in context:
http://camel.465427.n5.nabble.com/CXFRS-does-not-process-JSON-tp5716343p5716449.html
Sent from the Camel - Users mailing list archive at Nabble.com.