Hi,

My comment inline.
On 2010-10-23, at 上午7:43, Kurt Westerfeld wrote:

Hello, I'm just beginning to look into porting some SMX 3 JBI components to SMX 4, after the great talk at DC yesterday by the FUSE team. I was encouraged to simply try out the SMX4 from FUSE, because it's got it's JBI layer going and all. So, gave it a try.

What I'm finding is that certain implicit library dependencies that were present in SMX3 are no longer there. The first I found was log4j, which while seemingly "supported", isn't provided (literally, the provided scope from maven is what we're using) any longer for servicemix-cxf-se SUs. That was an easy fix, but it led to the next occurrence of the same issue.
SMX4 now use pax-logging[1] to leverage all logging stuff.
[1]http://wiki.ops4j.org/display/paxlogging/Pax+Logging

The servicemix-cxf-bc components we have all use spring configuration to configure the CXF bus. At first glance, it does not seem to be the case any longer that an xbean.xml deployment descriptor for these components has access to the spring schemas for base CXF configuration.

Simple example fragment we include for all our binding components:



<beans xmlns="http://www.springframework.org/schema/beans";
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
      xmlns:cxf="http://cxf.apache.org/core";
      xsi:schemaLocation="
         http://www.springframework.org/schema/beans           
http://www.springframework.org/schema/beans/spring-beans.xsd
         http://cxf.apache.org/core                            
http://cxf.apache.org/schemas/core.xsd
         ">
   <cxf:bus>
       <cxf:features>
           <cxf:logging/>

(etc etc all of our interceptor configuration omitted)

where we use "busCfg=" on the binding component:


   <cxfbc:consumer
    wsdl="classpath:Some.wsdl"
locationURI="http://${HttpDefaultHost}:${HttpDefaultPort}/ SomeEndPoint"
    targetService="somens:SomeService"
    targetInterface="somens:SomeService"
    busCfg="/identity-server-bus-beans.xml" />

So this is no longer working.  An example stacktrace is here:



18:59:58,461 | ERROR | rint Extender: 2 | ServiceAssemblyInstaller | er.impl.ServiceAssemblyInstaller 212 | 93 - org.apache.servicemix.jbi.deployer - 1.3.0.fuse-01-00 | Error deploying SU submit-process-binding javax.jbi.management.DeploymentException: java.lang.RuntimeException: org.springframework.context.ApplicationContextException: Failed to load configuration /identity-server-bus-beans.xml at org .apache.servicemix.cxfbc.CxfBcConsumer.validate(CxfBcConsumer.java: 561)[140:servicemix-cxf-bc:2010.02.0.fuse-01-00] at org .apache .servicemix.common.AbstractDeployer.validate(AbstractDeployer.java: 58)[90:servicemix-common:2010.02.0.fuse-01-00] at org .apache .servicemix .common.xbean.BaseXBeanDeployer.validate(BaseXBeanDeployer.java:55) [90:servicemix-common:2010.02.0.fuse-01-00] at org .apache .servicemix .common .xbean.AbstractXBeanDeployer.deploy(AbstractXBeanDeployer.java:98) [90:servicemix-common:2010.02.0.fuse-01-00] at org .apache .servicemix .common.BaseServiceUnitManager.doDeploy(BaseServiceUnitManager.java: 88)[90:servicemix-common:2010.02.0.fuse-01-00] at org .apache .servicemix .common.BaseServiceUnitManager.deploy(BaseServiceUnitManager.java:69) [90:servicemix-common:2010.02.0.fuse-01-00] at org .apache .servicemix .jbi.deployer.artifacts.ServiceUnitImpl.deploy(ServiceUnitImpl.java: 104)[93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi .deployer .impl .ServiceAssemblyInstaller.deploySUs(ServiceAssemblyInstaller.java: 207)[93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi .deployer .impl.ServiceAssemblyInstaller.install(ServiceAssemblyInstaller.java: 85)[93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi.deployer.impl.Deployer.checkPendingInstallers(Deployer.java:558) [93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi.deployer.impl.Deployer.lifeCycleChanged(Deployer.java:608) [93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi .deployer .artifacts .AbstractLifecycleJbiArtifact .fireEvent(AbstractLifecycleJbiArtifact.java:102) [93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi .deployer .artifacts .AbstractLifecycleJbiArtifact .fireEvent(AbstractLifecycleJbiArtifact.java:92) [93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org.apache.servicemix.jbi.deployer.artifacts.ComponentImpl $ComponentWrapper.init(ComponentImpl.java:250) [93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi .runtime .impl.ComponentRegistryImpl.doRegister(ComponentRegistryImpl.java:89) [91:org.apache.servicemix.jbi.runtime:1.3.0.fuse-01-00] at org .apache .servicemix .jbi .runtime .impl.ComponentRegistryImpl.doRegister(ComponentRegistryImpl.java:38) [91:org.apache.servicemix.jbi.runtime:1.3.0.fuse-01-00] at org .apache .servicemix .nmr.core.ServiceRegistryImpl.register(ServiceRegistryImpl.java:47) [81:org.apache.servicemix.nmr.core:1.3.0.fuse-01-00] at org .apache .servicemix .nmr .osgi .OsgiServiceRegistryTracker .addingService(OsgiServiceRegistryTracker.java:78) [82:org.apache.servicemix.nmr.osgi:1.3.0.fuse-01-00] at org.osgi.util.tracker.ServiceTracker $Tracked.customizerAdding(ServiceTracker.java:896) [osgi-3.6.0.v20100517.jar:] at org .osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java: 261)[osgi-3.6.0.v20100517.jar:] at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java: 233)[osgi-3.6.0.v20100517.jar:] at org.osgi.util.tracker.ServiceTracker $Tracked.serviceChanged(ServiceTracker.java:840) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .FilteredServiceListener.serviceChanged(FilteredServiceListener.java: 104)[osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .framework .internal .core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .framework .eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java: 149)[osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java: 756)[osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .ServiceRegistry.publishServiceEvent(ServiceRegistry.java:711) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .ServiceRegistry.registerService(ServiceRegistry.java:206) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .framework .internal .core.BundleContextImpl.registerService(BundleContextImpl.java:507) [osgi-3.6.0.v20100517.jar:] at org .apache .servicemix.jbi.deployer.impl.Deployer.registerService(Deployer.java: 762)[93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi.deployer.impl.Deployer.registerComponent(Deployer.java:418) [93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi .deployer .impl.ComponentInstaller.initComponent(ComponentInstaller.java:424) [93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi .deployer.impl.ComponentInstaller.install(ComponentInstaller.java: 150)[93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org .apache .servicemix .jbi.deployer.impl.Deployer.registerDeployedComponent(Deployer.java: 657)[93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org.apache.servicemix.jbi.deployer.impl.Deployer $1.addingService(Deployer.java:222) [93:org.apache.servicemix.jbi.deployer:1.3.0.fuse-01-00] at org.osgi.util.tracker.ServiceTracker $Tracked.customizerAdding(ServiceTracker.java:896) [osgi-3.6.0.v20100517.jar:] at org .osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java: 261)[osgi-3.6.0.v20100517.jar:] at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java: 233)[osgi-3.6.0.v20100517.jar:] at org.osgi.util.tracker.ServiceTracker $Tracked.serviceChanged(ServiceTracker.java:840) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .FilteredServiceListener.serviceChanged(FilteredServiceListener.java: 104)[osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .framework .internal .core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .framework .eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java: 149)[osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java: 756)[osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .ServiceRegistry.publishServiceEvent(ServiceRegistry.java:711) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .internal .serviceregistry .ServiceRegistry.registerService(ServiceRegistry.java:206) [osgi-3.6.0.v20100517.jar:] at org .eclipse .osgi .framework .internal .core.BundleContextImpl.registerService(BundleContextImpl.java:507) [osgi-3.6.0.v20100517.jar:] at org .apache .aries .blueprint .container .BlueprintContainerImpl.registerService(BlueprintContainerImpl.java: 388)[7:org.apache.aries.blueprint:0.2.0.incubating] at org .apache .aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java: 166)[7:org.apache.aries.blueprint:0.2.0.incubating] at org .apache .aries .blueprint .container .BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java: 646)[7:org.apache.aries.blueprint:0.2.0.incubating] at org .apache .aries .blueprint .container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java: 314)[7:org.apache.aries.blueprint:0.2.0.incubating] at org .apache .aries .blueprint .container.BlueprintContainerImpl.run(BlueprintContainerImpl.java: 213)[7:org.apache.aries.blueprint:0.2.0.incubating] at java.util.concurrent.Executors $RunnableAdapter.call(Executors.java:441)[:1.6.0_18] at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) [:1.6.0_18]
at java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_18]
at java.util.concurrent.ScheduledThreadPoolExecutor $ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98) [:1.6.0_18] at java.util.concurrent.ScheduledThreadPoolExecutor $ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)[: 1.6.0_18] at java.util.concurrent.ThreadPoolExecutor $Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_18] at java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_18]
at java.lang.Thread.run(Thread.java:619)[:1.6.0_18]
Caused by: java.lang.RuntimeException: org.springframework.context.ApplicationContextException: Failed to load configuration /identity-server-bus-beans.xml at org .apache .cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:96) [138:org.apache.cxf.bundle:2.2.10.fuse-00-00] at org .apache .cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:88) [138:org.apache.cxf.bundle:2.2.10.fuse-00-00] at org .apache .cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:64) [138:org.apache.cxf.bundle:2.2.10.fuse-00-00] at org.apache.servicemix.cxfbc.CxfBcConsumer.getBus(CxfBcConsumer.java: 677)[140:servicemix-cxf-bc:2010.02.0.fuse-01-00] at org .apache .servicemix.cxfbc.CxfBcConsumer.retrieveWSDL(CxfBcConsumer.java:658) [140:servicemix-cxf-bc:2010.02.0.fuse-01-00] at org .apache.servicemix.cxfbc.CxfBcConsumer.validate(CxfBcConsumer.java: 430)[140:servicemix-cxf-bc:2010.02.0.fuse-01-00]
... 62 more
Caused by: org.springframework.context.ApplicationContextException: Failed to load configuration /identity-server-bus-beans.xml at org .apache .cxf .bus .spring .BusApplicationContext.getConfigResources(BusApplicationContext.java: 152)[138:org.apache.cxf.bundle:2.2.10.fuse-00-00] at org .springframework .context .support .AbstractXmlApplicationContext .loadBeanDefinitions(AbstractXmlApplicationContext.java:120) [62:org.springframework.context:3.0.3.RELEASE] at org .apache .cxf .bus .spring .BusApplicationContext .loadBeanDefinitions(BusApplicationContext.java:262) [138:org.apache.cxf.bundle:2.2.10.fuse-00-00] at org .springframework .context .support .AbstractRefreshableApplicationContext .refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) [62:org.springframework.context:3.0.3.RELEASE] at org .springframework .context .support .AbstractApplicationContext .obtainFreshBeanFactory(AbstractApplicationContext.java:467) [62:org.springframework.context:3.0.3.RELEASE] at org .springframework .context .support .AbstractApplicationContext.refresh(AbstractApplicationContext.java: 397)[62:org.springframework.context:3.0.3.RELEASE] at org .apache .cxf .bus.spring.BusApplicationContext.<init>(BusApplicationContext.java: 91)[138:org.apache.cxf.bundle:2.2.10.fuse-00-00] at org .apache .cxf .bus .spring .SpringBusFactory.createApplicationContext(SpringBusFactory.java:110) [138:org.apache.cxf.bundle:2.2.10.fuse-00-00] at org .apache .cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:93) [138:org.apache.cxf.bundle:2.2.10.fuse-00-00]
... 67 more

This leads me to believe that perhaps the servicemix-cxf-bc component, as well as the servicemix-cxf-se component, are no longer providing the same libs as SMX3 while running in SMX4.
About using cxf bus in smx-cxf component, take a look at discussion in SMXCOMP-688[2]

[2]https://issues.apache.org/activemq/browse/SMXCOMP-688

So, I wonder how I could solve this if I don't want to go down the route to rebuild all of our components as OSGi bundles? I would like to think that the same library underpinnings, apart from version #s, would be provided for these components.

If you're using JBI pakcaging, then there's no big difference between SMX3 and SMX4, you can take a look at cxf-wsdl-fisrt example we shipped with smx4 kit, it's pretty much same as it's counterpart in smx3. :-)

Freeman
Any thoughts?


--
Freeman Fang

------------------------
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Open Source SOA: http://fusesource.com
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org

Reply via email to