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