build() method of javax.ws.rs.core.Response throwing java.lang.ClassNotFoundException: Unable to load class 'org.apache.cxf.jaxrs.impl.ResponseImpl in Fuse Fabric
Issue
- We are trying to build
javax.ws.rs.core.Responseobject using below code throwingjava.lang.ClassNotFoundExceptionafter deploying to Fuse using Fabric. Working fine when tested from local camel context.
public void buildResponse(Exchange exchange) {
log.info("in buildResponse method");
String httpResponseCode = (String)exchange.getIn().getHeader("httpResponseCode");
Response httpResponseCodeWithBody = Response.status(Integer.parseInt(httpResponseCode)).entity(exchange.getIn().getBody()).build();
exchange.getOut().setBody(httpResponseCodeWithBody);
}
Here is the exception stack trace:
Exception stack trace :
Caused by: java.lang.NoClassDefFoundError: org/apache/cxf/jaxrs/impl/ResponseImpl
at org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl.createResponseBuilder(RuntimeDelegateImpl.java:87)[org.apache.cxf:cxf-rt-frontend-jaxrs:3.1.5.redhat-630187]
at javax.ws.rs.core.Response$ResponseBuilder.newInstance(Response.java:848)[org.apache.servicemix.specs:org.apache.servicemix.specs.jsr339-api-2.0.1:2.7.0 javax.ws.rs:javax.ws.rs-api:2.0.1 org.apache.servicemix.specs:org.apache.servicemix.specs.locator:2.7.0]
at javax.ws.rs.core.Response.status(Response.java:613)[org.apache.servicemix.specs:org.apache.servicemix.specs.jsr339-api-2.0.1:2.7.0 javax.ws.rs:javax.ws.rs-api:2.0.1 org.apache.servicemix.specs:org.apache.servicemix.specs.locator:2.7.0]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_101]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_101]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_101]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_101]
at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:408)[org.apache.camel:camel-core:2.17.0.redhat-630187 com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2]
at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:279)[org.apache.camel:camel-core:2.17.0.redhat-630187 com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2]
at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:252)[org.apache.camel:camel-core:2.17.0.redhat-630187 com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2]
... 69 more
Caused by: java.lang.ClassNotFoundException: Unable to load class 'org.apache.cxf.jaxrs.impl.ResponseImpl' because the bundle wiring for org.apache.cxf.cxf-rt-frontend-jaxrs is no longer valid.
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1521)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_101]
- In our application, we are able to see the package by running the below command.
JBossFuse:admin@child> packages:exports | grep org.apache.cxf.jaxrs.impl
221 org.apache.cxf.jaxrs.impl; version=3.1.5
221 org.apache.cxf.jaxrs.impl.tl; version=3.1.5
Environment
- Red Hat JBoss Fuse
- 6.2.x
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
