for what it's worth, this is what happens when I try it on the spring side.
I did check, activemq is listed as an import package in the manifest file
(this happens in both 4.5.1 and 4.5.2 snapshot).
2013-06-30 15:35:44,635 | ERROR | ExtenderThread-1 | ContextLoaderListener
| 82 - org.springframework.osgi.extender - 1.2.1 | Application
context refresh failed
(OsgiBundleXmlApplicationContext(bundle=servicemix-cxf,
config=osgibundle:/META-INF/spring/*.xml))
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected
exception parsing XML document from URL
[bundle://182.0:0/META-INF/spring/camel-cxf.xml]; nested exception is
java.lang.IllegalArgumentException: Could not load property editor:
org.apache.activemq.util.BooleanEditor
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext.loadBeanDefinitions(OsgiBundleXmlApplicationContext.java:164)[79:org.springframework.osgi.core:1.2.1]
at
org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext.loadBeanDefinitions(OsgiBundleXmlApplicationContext.java:136)[79:org.springframework.osgi.core:1.2.1]
at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)[73:org.springframework.context:3.0.7.RELEASE]
at
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)[73:org.springframework.context:3.0.7.RELEASE]
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$800(AbstractDelegatedExecutionApplicationContext.java:69)[79:org.springframework.osgi.core:1.2.1]
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$3.run(AbstractDelegatedExecutionApplicationContext.java:269)[79:org.springframework.osgi.core:1.2.1]
at
org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)[79:org.springframework.osgi.core:1.2.1]
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.startRefresh(AbstractDelegatedExecutionApplicationContext.java:247)[79:org.springframework.osgi.core:1.2.1]
at
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:214)[82:org.springframework.osgi.extender:1.2.1]
at
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:169)[82:org.springframework.osgi.extender:1.2.1]
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)[79:org.springframework.osgi.core:1.2.1]
at
org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:716)[82:org.springframework.osgi.extender:1.2.1]
at java.lang.Thread.run(Thread.java:722)[:1.7.0_21]
Caused by: java.lang.IllegalArgumentException: Could not load property
editor: org.apache.activemq.util.BooleanEditor
at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.createPropertyEditor(XBeanNamespaceHandler.java:469)[84:org.apache.xbean.spring:3.11.1]
at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.getValue(XBeanNamespaceHandler.java:444)[84:org.apache.xbean.spring:3.11.1]
at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.addProperty(XBeanNamespaceHandler.java:415)[84:org.apache.xbean.spring:3.11.1]
at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.addAttributeProperty(XBeanNamespaceHandler.java:404)[84:org.apache.xbean.spring:3.11.1]
at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.addAttributeProperties(XBeanNamespaceHandler.java:337)[84:org.apache.xbean.spring:3.11.1]
at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parseBeanFromExtensionElement(XBeanNamespaceHandler.java:225)[84:org.apache.xbean.spring:3.11.1]
at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parseBeanFromExtensionElement(XBeanNamespaceHandler.java:276)[84:org.apache.xbean.spring:3.11.1]
at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.parse(XBeanNamespaceHandler.java:156)[84:org.apache.xbean.spring:3.11.1]
at
org.apache.xbean.spring.context.v2.XBeanNamespaceHandler.parse(XBeanNamespaceHandler.java:49)[84:org.apache.xbean.spring:3.11.1]
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1338)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1328)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)[71:org.springframework.beans:3.0.7.RELEASE]
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)[71:org.springframework.beans:3.0.7.RELEASE]
... 18 more
Caused by: java.lang.ClassNotFoundException:
org.apache.activemq.util.BooleanEditor not found from bundle
[servicemix-cxf]
at
org.springframework.osgi.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:103)[79:org.springframework.osgi.core:1.2.1]
at
org.springframework.osgi.util.BundleDelegatingClassLoader.loadClass(BundleDelegatingClassLoader.java:156)[79:org.springframework.osgi.core:1.2.1]
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)[:1.7.0_21]
at
org.apache.xbean.spring.context.v2c.XBeanNamespaceHandler.createPropertyEditor(XBeanNamespaceHandler.java:467)[84:org.apache.xbean.spring:3.11.1]
... 32 more
Caused by: java.lang.ClassNotFoundException:
org.apache.activemq.util.BooleanEditor not found by servicemix-cxf [182]
at
org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:812)[org.apache.felix.framework-3.2.2.jar:]
at
org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:72)[org.apache.felix.framework-3.2.2.jar:]
at
org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1807)[org.apache.felix.framework-3.2.2.jar:]
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)[:1.7.0_21]
at
org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java:670)[org.apache.felix.framework-3.2.2.jar:]
at
org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1654)[org.apache.felix.framework-3.2.2.jar:]
at
org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:909)[org.apache.felix.framework-3.2.2.jar:]
at
org.springframework.osgi.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:99)[79:org.springframework.osgi.core:1.2.1]
... 35 more
On Sat, Jun 29, 2013 at 8:10 PM, John D. Ament <[email protected]>wrote:
> So, I'll start by responding to my own email :-)
>
> After digging through some examples this afternoon, I did find one where
> if the result is a static piece of text back to the client based on the web
> service being called. So I started playing with that to see if I could get
> activemq working in it.
>
> The problem I seem to have is around osgi class loading. I created a
> sample project up on github to see what I've done
> https://github.com/johnament/servicemix-cxf
>
> Right now there are two directories, META-INF Is where the spring config
> is located, OSGI-INF for the blueprint files.
>
> I am essentially trying to get a listener on the cxf runtime, but when I
> try running it I get an error:
>
> used by: org.apache.camel.NoSuchBeanException: Found bean: orderEndpoint
> in BlueprintContainer:
> org.apache.aries.blueprint.container.BlueprintContainerImpl@6b6c1329 of
> type: org.apache.cxf.jaxws.EndpointImpl expected type was: class
> org.apache.camel.component.cxf.CxfEndpoint
> at
> org.apache.camel.blueprint.BlueprintContainerRegistry.lookup(BlueprintContainerRegistry.java:62)[99:org.apache.camel.camel-blueprint:2.10.4]
> at
> org.apache.camel.impl.CompositeRegistry.lookup(CompositeRegistry.java:49)[96:org.apache.camel.camel-core:2.10.4]
> at
> org.apache.camel.impl.PropertyPlaceholderDelegateRegistry.lookup(PropertyPlaceholderDelegateRegistry.java:62)[96:org.apache.camel.camel-core:2.10.4]
> at
> org.apache.camel.util.CamelContextHelper.lookup(CamelContextHelper.java:108)[96:org.apache.camel.camel-core:2.10.4]
> at
> org.apache.camel.util.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:128)[96:org.apache.camel.camel-core:2.10.4]
> at
> org.apache.camel.component.cxf.CxfComponent.createEndpoint(CxfComponent.java:70)[172:org.apache.camel.camel-cxf:2.10.4]
> at
> org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:91)[96:org.apache.camel.camel-core:2.10.4]
> at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:461)[96:org.apache.camel.camel-core:2.10.4]
> ... 36 more
> Caused by: java.lang.ClassCastException: Cannot cast
> org.apache.cxf.jaxws.EndpointImpl to
> org.apache.camel.component.cxf.CxfEndpoint
> at java.lang.Class.cast(Class.java:3014)[:1.7.0_21]
> at
> org.apache.camel.blueprint.BlueprintContainerRegistry.lookup(BlueprintContainerRegistry.java:58)[99:org.apache.camel.camel-blueprint:2.10.4]
>
> Any idea how I'm supposed to structure my xml to get a CXFendpoint?
>
> John
>
>
> On Sat, Jun 29, 2013 at 4:38 PM, John D. Ament <[email protected]>wrote:
>
>> So, in my scenario, this is the best I can describe it.
>>
>> I want to deploy a couple of web services to my servicemix instance.
>> These will be consumed by a legacy system that already knows how to talk
>> to these web services. I want to put these requests into a modified format
>> on a JMS queue for working and return immediately back to the client (e.g.
>> don't wait for the JMS listener to process these).
>>
>> On the JMS side, I expect to go through a few different transforms, one
>> reading remote data; another converting it into a common jax-b based
>> structure and then finally sending that JAX-B message to another system for
>> processing.
>>
>> That other system will send a request over when it's done indicating that
>> some data has to go to the first system, which I'm sure will also work fine.
>>
>> Ideally, I think I want my webservice to process things normally, other
>> than having a producer that can put message data on to the queue. Based on
>> how it's structured, I'd prefer to not have anything in the mix in front or
>> behind it, but could hear some arguments on why this might be best. The
>> service has a single method, with the signature:
>>
>> public boolean importData(int sourceId, int targetId, String sourceRepo,
>> String sourceRepoGroup, int dataElementId);
>>
>> which simply returns true as long as the WS Is up (right now, this just
>> dumps a message onto a JMS queue). I can't change the argument structure,
>> but perhaps it can go in a wrap object; not sure.
>>
>> After some reading, I thought my best solution would be to use a producer
>> template, and then the wrapped version. So I threw this into my
>> webservice, just to see if i could get it to log messages:
>>
>> @EndpointInject(uri="log:events")
>> ProducerTemplate producer;
>>
>> and then in the body
>>
>> producer.sendBody("Received sourceRepo as "+sourceRepo);
>>
>> Which (I honestly wasn't surprised here) generated a null pointer
>> exception. So I guess I can't inject this into my webservice endpoint?
>>
>> Is this use case sensible? It's probably not ideal for the ESB, but it
>> kind of keeps things moving in the webservice with minimal changes.
>>
>> Thanks!
>>
>> John
>>
>
>