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 <[email protected] <mailto:[email protected]>>
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 <[email protected] <mailto:[email protected]>>
Thanks, will read the blog.
2013/4/2 Freeman Fang <[email protected]
<mailto:[email protected]>>
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/
[2]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://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 <[email protected]
<mailto:[email protected]>>
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://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/
I modified the jre.properties accordingly but I still
get the exact same stack trace.
/Bengt
2013/4/2 Bengt Rodehav <[email protected]
<mailto:[email protected]>>
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 <[email protected]
<mailto:[email protected]>>
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://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.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.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é
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com