Just checked the feature descriptor for Cxf 2.7.3. It still includes the 2.2 api's. I wonder if anyone has gotten this to work on Karaf 2.3.1 and, if so, how they did it.
/Bengt 2013/4/2 Bengt Rodehav <be...@rodehav.com> > Another observation. > > In Cxf 2.6.3 feature descriptor, the feature cxf-specs include, among > others, 2.2 versions of jaxb-api and jaxws-api. Since the corresponding > api's are only on 2.1 level in Karaf 2.3.0 lib\endorsed, the bundles are > used instead. But, Karaf 2.3.1 has updated the endorsed libraries to > version 2.2 which means that they are now used by Cxf instead of the > bundles listed in the cxf-spec feature. > > In other words, the Cxf feature descriptor must (or should) be changed in > order to work under Karaf 2.3.1. Perhaps this has been done in later > versions of Cxf - I haven't checked. > > Even if I fix this I'm still not done since I don't know how to get the > endorsed versions to work with Cxf. Hopefully someone knows how to get that > to work. > > /Bengt > > > 2013/4/2 Bengt Rodehav <be...@rodehav.com> > >> No, I did not update the Cxf version. I use Cxf 2.6.3 in both cases. >> >> I wonder why the cxf-api bundle imports the org.apache.cxf.jaxws.spi >> package. Maybe it's been done by "accident" but it still is what makes it >> work under Karaf 2.3.0... >> >> I'm currently looking at the source code for the FactoryFinder class that >> does the actual loading of the factory class. It does seem like it uses the >> TCCL. Do you know if I'm supposed to set the TCCL manually? What is the >> actual usage pattern here? >> >> /Bengt >> >> >> 2013/4/2 Jean-Baptiste Onofré <j...@nanthrax.net> >> >>> Hi Bengt, >>> >>> it can but it doesn't come from Karaf. I guess that you updated the CXF >>> version as well ? >>> >>> Regards >>> JB >>> >>> >>> On 04/02/2013 02:01 PM, Bengt Rodehav wrote: >>> >>>> I compared Karaf 2.3.0 with 2.3.1 and noticed that (with my >>>> configuration) in Karaf 2.3.0, the org.apache.cxf.cxf-api bundle imports >>>> the org.apache.cxf.jaxws.spi package from the cxf-rt-frontend bundle. >>>> This does not happen in Karaf 2.3.1. Could this cause the problem? >>>> >>>> /Bengt >>>> >>>> >>>> >>>> >>>> 2013/4/2 Bengt Rodehav <be...@rodehav.com <mailto:be...@rodehav.com>> >>>> >>>> >>>> I read the blog but it didn't go into details regarding how the >>>> implementation classes are found - I guess I'll have to look in the >>>> code. >>>> >>>> One observation regarding my problem: What gives me an exception is >>>> when blueprint attempts to instantiate my class. In my class >>>> constructor I try to create the web service proxy. I did try to >>>> import the org.apache.cxf.jaxws.spi package to the bundle that >>>> contains the class that cannot be instantiated. I can see in runtime >>>> that the bundle does indeed import the org.apache.cxf.jaxws.spi >>>> package from the cxf-rt-frontend bundle. But I still get the >>>> exception indicating that it cannot find the >>>> org.apache.cxf.jaxws.spi.**ProviderImpl class. >>>> >>>> Thus, putting the ProviderImpl class in my bundle's classpath >>>> doesn't help. It seems like it has to be in the system bundle's >>>> classpath. I really don't know how that mechanism is supposed to >>>> work - but it did work in Karaf 2.3.0. Does the new blueprint >>>> version do some classloading magic? >>>> >>>> /Bengt >>>> >>>> >>>> 2013/4/2 Bengt Rodehav <be...@rodehav.com <mailto:be...@rodehav.com >>>> >> >>>> >>>> >>>> Thanks, will read the blog. >>>> >>>> >>>> 2013/4/2 Freeman Fang <freeman.f...@gmail.com >>>> <mailto:freeman.f...@gmail.com**>> >>>> >>>> >>>> Hi, >>>> Good question, yeah, the traditional JAVA SPI mechanism >>>> generally doesn't work in OSGi container. >>>> So Servicemix Specs project[1] use "OSGi locator" to resolve >>>> this problem, Guillaume has a blog about it years ago[2] >>>> >>>> [1]https://svn.apache.org/**repos/asf/servicemix/smx4/** >>>> specs/trunk/<https://svn.apache.org/repos/asf/servicemix/smx4/specs/trunk/> >>>> [2]http://gnodet.blogspot.com/** >>>> 2008/05/jee-specs-in-osgi.html<http://gnodet.blogspot.com/2008/05/jee-specs-in-osgi.html> >>>> >>>> ------------- >>>> Freeman(Yue) Fang >>>> >>>> Red Hat, Inc. >>>> FuseSource is now part of Red Hat >>>> Web: http://fusesource.com | http://www.redhat.com/ >>>> Twitter: freemanfang >>>> Blog: >>>> http://freemanfang.blogspot.**com<http://freemanfang.blogspot.com> >>>> >>>> http://blog.sina.com.cn/u/**1473905042<http://blog.sina.com.cn/u/1473905042> >>>> weibo: @Freeman小屋 >>>> >>>> On 2013-4-2, at 下午5:07, Bengt Rodehav wrote: >>>> >>>> I'll see if I can get a test case done for this although >>>>> it might take a while. Meanwhile, can you explain what >>>>> mechanism is used for resolving the implementation >>>>> classes. I mean, how is the system bundle supposed to >>>>> resolve a class that resides in another bundle? (In this >>>>> case the cxf-rt-frontend). >>>>> >>>>> /Bengt >>>>> >>>>> >>>>> 2013/4/2 Freeman Fang <freeman.f...@gmail.com >>>>> <mailto:freeman.f...@gmail.com**>> >>>>> >>>>> >>>>> Hi, >>>>> >>>>> No, that blog is a little bit out of data and not >>>>> applicable for Karaf 2.3.x anymore. >>>>> >>>>> With Karaf 2.3.x we endorse specs(like jaxws/jaxb) >>>>> jars, so we need export those packages from system >>>>> bundle 0, so don't comment it out >>>>> >>>>> and those endorsed specs jars can load jaxws impl >>>>> bundle(cxf jaxws frontend bundle in this case) during >>>>> runtime OOTB. >>>>> >>>>> No concrete idea why it doesn't work for you(also I >>>>> don't think there's any real difference between karaf >>>>> 2.3 and karaf 2.3.1 in terms of jaxws loading >>>>> mechanism), that's why I ask a test case, it's >>>>> definitely very helpful to resolve the issue faster. >>>>> >>>>> >>>>> ------------- >>>>> Freeman(Yue) Fang >>>>> >>>>> Red Hat, Inc. >>>>> FuseSource is now part of Red Hat >>>>> Web: http://fusesource.com <http://fusesource.com/> | >>>>> >>>>> http://www.redhat.com/ >>>>> Twitter: freemanfang >>>>> Blog: >>>>> http://freemanfang.blogspot.**com<http://freemanfang.blogspot.com> >>>>> >>>>> <http://freemanfang.blogspot.**com/<http://freemanfang.blogspot.com/> >>>>> > >>>>> >>>>> >>>>> http://blog.sina.com.cn/u/**1473905042<http://blog.sina.com.cn/u/1473905042> >>>>> weibo: @Freeman小屋 >>>>> >>>>> On 2013-4-2, at 下午4:38, Bengt Rodehav wrote: >>>>> >>>>> I found this blog post by Dan Kulp: >>>>>> http://www.dankulp.com/blog/** >>>>>> 2011/11/apache-cxf-in-osgi/<http://www.dankulp.com/blog/2011/11/apache-cxf-in-osgi/> >>>>>> >>>>>> I modified the jre.properties accordingly but I still >>>>>> get the exact same stack trace. >>>>>> >>>>>> /Bengt >>>>>> >>>>>> >>>>>> 2013/4/2 Bengt Rodehav <be...@rodehav.com >>>>>> <mailto:be...@rodehav.com>> >>>>>> >>>>>> >>>>>> Hello Freeman, >>>>>> >>>>>> It would be a lot of work for me to narrow down >>>>>> my application to a simple test case. I'd really >>>>>> like to try other possibilities first, like: >>>>>> >>>>>> - Understanding how the factory pattern is >>>>>> supposed to work, espcially for Cxf >>>>>> - What has been changed in Karaf 2.3.1. that >>>>>> could affect this >>>>>> >>>>>> /Bengt >>>>>> >>>>>> >>>>>> 2013/4/2 Freeman Fang <freeman.f...@gmail.com >>>>>> <mailto:freeman.f...@gmail.com**>> >>>>>> >>>>>> >>>>>> Hi, >>>>>> >>>>>> No concrete idea now, could you please append >>>>>> a test case which we can build and reproduce >>>>>> it? >>>>>> Thanks >>>>>> ------------- >>>>>> Freeman(Yue) Fang >>>>>> >>>>>> Red Hat, Inc. >>>>>> FuseSource is now part of Red Hat >>>>>> Web: http://fusesource.com >>>>>> <http://fusesource.com/> | >>>>>> http://www.redhat.com/ >>>>>> >>>>>> Twitter: freemanfang >>>>>> Blog: >>>>>> http://freemanfang.blogspot.**com<http://freemanfang.blogspot.com> >>>>>> >>>>>> <http://freemanfang.blogspot.**com/<http://freemanfang.blogspot.com/> >>>>>> > >>>>>> >>>>>> >>>>>> http://blog.sina.com.cn/u/**1473905042<http://blog.sina.com.cn/u/1473905042> >>>>>> weibo: @Freeman小屋 >>>>>> >>>>>> On 2013-4-2, at 下午3:30, Bengt Rodehav wrote: >>>>>> >>>>>> I've been using Karaf 2.3.0 for a while. I >>>>>>> now tried to upgrade to Karaf 2.3.1 but ran >>>>>>> into problems with CXF. >>>>>>> >>>>>>> I use cxf-codegen-plugin to generate code >>>>>>> from a WSDL file so that I can call the web >>>>>>> service via a proxy. However, after >>>>>>> upgrading to Karaf 2.3.1 I get the following >>>>>>> exception: >>>>>>> >>>>>>> 2013-04-02 09:19:03,317 | ERROR | rint >>>>>>> Extender: 3 | BlueprintContainerImpl >>>>>>> | container.**BlueprintContainerImpl 393 >>>>>>> | >>>>>>> Unable to start blueprint container for >>>>>>> bundle >>>>>>> se.digia.connect.services.** >>>>>>> iso20022.iws-client >>>>>>> org.osgi.service.blueprint.**container.** >>>>>>> ComponentDefinitionException: >>>>>>> Error when instantiating bean iwsService of >>>>>>> class class >>>>>>> se.digia.connect.iso20022.**iwsclient.Client >>>>>>> at >>>>>>> org.apache.aries.blueprint.** >>>>>>> container.BeanRecipe.**getInstance(BeanRecipe.java:** >>>>>>> 333)[7:org.apache.aries.**blueprint.core:1.1.0] >>>>>>> at >>>>>>> org.apache.aries.blueprint.** >>>>>>> container.BeanRecipe.**internalCreate2(BeanRecipe.** >>>>>>> java:806)[7:org.apache.aries.**blueprint.core:1.1.0] >>>>>>> at >>>>>>> org.apache.aries.blueprint.** >>>>>>> container.BeanRecipe.**internalCreate(BeanRecipe.** >>>>>>> java:787)[7:org.apache.aries.**blueprint.core:1.1.0] >>>>>>> at >>>>>>> org.apache.aries.blueprint.di.** >>>>>>> AbstractRecipe$1.call(**AbstractRecipe.java:79)[7:org.** >>>>>>> apache.aries.blueprint.core:1.**1.0] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> FutureTask$Sync.innerRun(**FutureTask.java:303)[:1.6.0_**32] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> FutureTask.run(FutureTask.**java:138)[:1.6.0_32] >>>>>>> at >>>>>>> org.apache.aries.blueprint.di.** >>>>>>> AbstractRecipe.create(**AbstractRecipe.java:88)[7:org.** >>>>>>> apache.aries.blueprint.core:1.**1.0] >>>>>>> at >>>>>>> org.apache.aries.blueprint.** >>>>>>> container.BlueprintRepository.**createInstances(** >>>>>>> BlueprintRepository.java:245)[**7:org.apache.aries.blueprint.** >>>>>>> core:1.1.0] >>>>>>> at >>>>>>> org.apache.aries.blueprint.** >>>>>>> container.BlueprintRepository.**createAll(BlueprintRepository.** >>>>>>> java:183)[7:org.apache.aries.**blueprint.core:1.1.0] >>>>>>> at >>>>>>> org.apache.aries.blueprint.**container.** >>>>>>> BlueprintContainerImpl.**instantiateEagerComponents(** >>>>>>> BlueprintContainerImpl.java:**668)[7:org.apache.aries.** >>>>>>> blueprint.core:1.1.0] >>>>>>> at >>>>>>> org.apache.aries.blueprint.**container.** >>>>>>> BlueprintContainerImpl.doRun(**BlueprintContainerImpl.java:** >>>>>>> 370)[7:org.apache.aries.**blueprint.core:1.1.0] >>>>>>> at >>>>>>> org.apache.aries.blueprint.**container.** >>>>>>> BlueprintContainerImpl.run(**BlueprintContainerImpl.java:** >>>>>>> 261)[7:org.apache.aries.**blueprint.core:1.1.0] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> Executors$RunnableAdapter.**call(Executors.java:441)[:1.6.**0_32] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> FutureTask$Sync.innerRun(**FutureTask.java:303)[:1.6.0_**32] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> FutureTask.run(FutureTask.**java:138)[:1.6.0_32] >>>>>>> at >>>>>>> org.apache.aries.blueprint.**container.** >>>>>>> ExecutorServiceWrapper.run(**ExecutorServiceWrapper.java:** >>>>>>> 106)[7:org.apache.aries.**blueprint.core:1.1.0] >>>>>>> at >>>>>>> org.apache.aries.blueprint.** >>>>>>> utils.threading.impl.**DiscardableRunnable.run(** >>>>>>> DiscardableRunnable.java:48)[**7:org.apache.aries.blueprint.** >>>>>>> core:1.1.0] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> Executors$RunnableAdapter.**call(Executors.java:441)[:1.6.**0_32] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> FutureTask$Sync.innerRun(**FutureTask.java:303)[:1.6.0_**32] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> FutureTask.run(FutureTask.**java:138)[:1.6.0_32] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> ScheduledThreadPoolExecutor$**ScheduledFutureTask.access$**301(** >>>>>>> ScheduledThreadPoolExecutor.**java:98)[:1.6.0_32] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> ScheduledThreadPoolExecutor$**ScheduledFutureTask.run(** >>>>>>> ScheduledThreadPoolExecutor.**java:206)[:1.6.0_32] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> ThreadPoolExecutor$Worker.**runTask(ThreadPoolExecutor.** >>>>>>> java:886)[:1.6.0_32] >>>>>>> at >>>>>>> java.util.concurrent.** >>>>>>> ThreadPoolExecutor$Worker.run(**ThreadPoolExecutor.java:908)[:** >>>>>>> 1.6.0_32] >>>>>>> at >>>>>>> java.lang.Thread.run(Thread.** >>>>>>> java:662)[:1.6.0_32] >>>>>>> Caused by: >>>>>>> javax.xml.ws.spi.**FactoryFinder$** >>>>>>> ConfigurationError: >>>>>>> Provider >>>>>>> org.apache.cxf.jaxws.spi.**ProviderImpl not >>>>>>> found >>>>>>> at >>>>>>> javax.xml.ws.spi.**FactoryFinder$2.run(** >>>>>>> FactoryFinder.java:130) >>>>>>> at >>>>>>> javax.xml.ws.spi.** >>>>>>> FactoryFinder.doPrivileged(**FactoryFinder.java:229)[:1.6.**0_32] >>>>>>> at >>>>>>> javax.xml.ws.spi.** >>>>>>> FactoryFinder.newInstance(**FactoryFinder.java:124)[:1.6.**0_32] >>>>>>> at >>>>>>> javax.xml.ws.spi.**FactoryFinder.access$200( >>>>>>> **FactoryFinder.java:44)[:1.6.0_**32] >>>>>>> at >>>>>>> javax.xml.ws.spi.**FactoryFinder$3.run(** >>>>>>> FactoryFinder.java:220) >>>>>>> at >>>>>>> javax.xml.ws.spi.** >>>>>>> FactoryFinder.doPrivileged(**FactoryFinder.java:229)[:1.6.**0_32] >>>>>>> at >>>>>>> javax.xml.ws.spi.**FactoryFinder.find(** >>>>>>> FactoryFinder.java:160)[:1.6.**0_32] >>>>>>> at >>>>>>> javax.xml.ws.spi.Provider.** >>>>>>> provider(Provider.java:43)[:1.**6.0_32] >>>>>>> at >>>>>>> javax.xml.ws.Service.<init>(** >>>>>>> Service.java:35)[:1.6.0_32] >>>>>>> at >>>>>>> se.digia.connect.iso20022.**iwsclient.iws.** >>>>>>> IntegrationWebService.<init>(**IntegrationWebService.java:30) >>>>>>> at >>>>>>> se.digia.connect.iso20022.** >>>>>>> iwsclient.Client.createProxy(**Client.java:198) >>>>>>> at >>>>>>> se.digia.connect.iso20022.** >>>>>>> iwsclient.Client.<init>(**Client.java:35) >>>>>>> at >>>>>>> sun.reflect.**NativeConstructorAccessorImpl. >>>>>>> **newInstance0(Native >>>>>>> Method)[:1.6.0_32] >>>>>>> at >>>>>>> sun.reflect.**NativeConstructorAccessorImpl. >>>>>>> **newInstance(**NativeConstructorAccessorImpl.**java:39)[:1.6.0_32] >>>>>>> at >>>>>>> sun.reflect.**DelegatingConstructorAccessorI >>>>>>> **mpl.newInstance(**DelegatingConstructorAccessorI** >>>>>>> mpl.java:27)[:1.6.0_32] >>>>>>> at >>>>>>> java.lang.reflect.Constructor.** >>>>>>> newInstance(Constructor.java:**513)[:1.6.0_32] >>>>>>> at >>>>>>> org.apache.aries.blueprint.** >>>>>>> utils.ReflectionUtils.**newInstance(ReflectionUtils.**java:329) >>>>>>> at >>>>>>> org.apache.aries.blueprint.** >>>>>>> container.BeanRecipe.**newInstance(BeanRecipe.java:**962) >>>>>>> at >>>>>>> org.apache.aries.blueprint.** >>>>>>> container.BeanRecipe.**getInstance(BeanRecipe.java:**331) >>>>>>> ... 24 more >>>>>>> >>>>>>> Has anything changed in Karaf 2.3.1 that >>>>>>> could cause this? My main reason for >>>>>>> upgrading to Karaf 2.3.1 is the fixes that >>>>>>> has been done to Aries blueprint - could it >>>>>>> cause this? >>>>>>> >>>>>>> /Bengt >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> >>> -- >>> Jean-Baptiste Onofré >>> jbono...@apache.org >>> http://blog.nanthrax.net >>> Talend - http://www.talend.com >>> >> >> >