Hi Gaëtan, I had the same problem than you, I have explained how to fix that at http://angelozerr.wordpress.com/2012/05/29/eclipse_spring_dosgi_step1/#serverMock
that's to say: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ It’s very important too to unselect *javax.ws.rs.jsr311-api* (JAX-RS API) and select *org.apache.servicemix.specs.jsr311-api* with *Auto-Start to true *. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Hope it's the same problem than you. Regards Angelo 2012/11/9 Malisetti, Ramanjaneyulu <[email protected]> > We too faced similar problem in OSGi. Setting system property > javax.ws.rs.ext.RuntimeDelegate=org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl, > issue is resolved. > > Regards > Raman > > -----Original Message----- > From: Pitteloud, Gaëtan [mailto:[email protected]] > Sent: Friday, November 09, 2012 7:14 PM > To: [email protected] > Subject: OSGi : fails to load CXF classes > > Hi all, > > I must use CXF (client) within a RCP (eclipse) application. Here's my > config: > - I have defined a plugin project that contains a library with the code > that makes the CXF call (actually uses WebClient). This bundle A imports > org.apache.cxf.bundle-minimal (Require-bundle) and specifies the library in > the Classpath header of the MANIFEST. > - My OSGi runtime contains servicemix's jsr311 bundle, and this bundle is > the only provider of javax.ws.rs.* > - I'm using Gemini blueprint to expose the service defined in the library > of bundle A > - Bundle B (ui bundle) imports service defined in bundle A, also using > Gemini blueprint facilities. > - When invoking the service from B, it tries to create a WebClient to > issue a http request, and I get the following error: > > Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: > com.sun.ws.rs.ext.RuntimeDelegateImpl > at > javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:122) > at > javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:91) > at javax.ws.rs.core.UriBuilder.newInstance(UriBuilder.java:69) > at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:80) > at > org.apache.cxf.jaxrs.client.LocalClientState.<init>(LocalClientState.java:47) > at > org.apache.cxf.jaxrs.client.AbstractClient.<init>(AbstractClient.java:96) > at org.apache.cxf.jaxrs.client.WebClient.<init>(WebClient.java:76) > at org.apache.cxf.jaxrs.client.WebClient.<init>(WebClient.java:72) > at > org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean.createWebClient(JAXRSClientFactoryBean.java:197) > at > org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean.createWebClient(JAXRSClientFactoryBean.java:206) > at org.apache.cxf.jaxrs.client.WebClient.create(WebClient.java:142) > at org.apache.cxf.jaxrs.client.WebClient.create(WebClient.java:115) > ... 43 more > Caused by: java.lang.ClassNotFoundException: > com.sun.ws.rs.ext.RuntimeDelegateImpl > at java.net.URLClassLoader$1.run(URLClassLoader.java:202) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:190) > at java.lang.ClassLoader.loadClass(ClassLoader.java:307) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) > at java.lang.ClassLoader.loadClass(ClassLoader.java:248) > at > org.eclipse.core.runtime.internal.adaptor.ContextFinder.loadClass(ContextFinder.java:131) > at java.lang.ClassLoader.loadClass(ClassLoader.java:248) > at javax.ws.rs.ext.FactoryFinder.newInstance(FactoryFinder.java:37) > at javax.ws.rs.ext.FactoryFinder.find(FactoryFinder.java:143) > at > javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:105) > ... 54 more > > Based on what I know from FactoryFinder, it tries to load a file named > META-INF/services/javax.ws.rs.ext.RuntimeDelegate, that contains the > implementation class name of the RuntimeDelegate to use. If either the file > or the class defined in the file cannot be loaded, it tries to load the > default RuntimeDelegate implementation, which is > com.sun.ws.rs.ext.RuntimeDelegateImpl. Thus getting this exception. > > org.apache.cxf.bundle-minimal contains a file named > META-INF/services/javax.ws.rs.ext.RuntimeDelegate, and this file contains a > class name that exists in cxf bundle, thus I rather suspect some > classloading issues related to bundles since CXF and servicemix jsr311 are > in separate bundles. > > Did anybody already face such an issue ? > Thanks in advance, > -- > Gaëtan >
