Web services 如何使用ApacheCamel和cxf componnet调用第三方Web服务
我在ApacheCamel网站和camel in action上浏览了这个示例,两个示例都着重于公开Web服务。我在网上找到的唯一一个例子不起作用 我正在尝试访问第三方Web服务wsdl- 此服务具有计算货币汇率的操作/方法。操作名称为“ConversionRate” 我是这样定义路线的-Web services 如何使用ApacheCamel和cxf componnet调用第三方Web服务,web-services,apache,wsdl,apache-camel,Web Services,Apache,Wsdl,Apache Camel,我在ApacheCamel网站和camel in action上浏览了这个示例,两个示例都着重于公开Web服务。我在网上找到的唯一一个例子不起作用 我正在尝试访问第三方Web服务wsdl- 此服务具有计算货币汇率的操作/方法。操作名称为“ConversionRate” 我是这样定义路线的- <?xml version="1.0" encoding="UTF-8"?> <!-- Configures the Camel Context--> <beans
<?xml version="1.0" encoding="UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:cxf="http://camel.apache.org/schema/cxf"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<description>here is a sample which processes the input files
(leaving them in place - see the 'noop' flag)
then performs content based routing on the message using XPath</description>
<from uri="file:src/data/order?noop=true"/>
<log message="${body}"/>
<to uri="cxf://http://www.webservicex.net/CurrencyConvertor.asmx?wsdlURL=http://www.webservicex.net/CurrencyConvertor.asmx?wsdl&serviceName=CurrencyConvertor&portName=http://www.webserviceX.NET/tns:CurrencyConvertorSoap&dataFormat=MESSAGE"/>
<log message="${body}"/>
</route>
</camelContext>
</beans>
下面是一个处理输入文件的示例
(将其留在原位-参见“noop”标志)
然后使用XPath对消息执行基于内容的路由
我已将示例有效负载xml定义为-
<order>
<Id>1</Id>
<Price>10.00</Price>
<Quantity>2</Quantity>
</order>
1.
10
2.
当我运行这个示例时,我遇到了这个错误
Error occurred while running main from: org.apache.camel.spring.Main
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.camel.maven.RunMojo$1.run(RunMojo.java:440)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.camel.FailedToCreateProducerException: Failed to create Producer for endpoint: Endpoint[cxf://http://www.webservicex.net/CurrencyConvertor.asmx?dataFormat=MESSAGE&portName=http%3A%2F%2Fwww.webserviceX.NET%2Ftns%3ACurrencyConvertorSoap&serviceName=CurrencyConvertor&wsdlURL=http%3A%2F%2Fwww.webservicex.net%2FCurrencyConvertor.asmx%3Fwsdl]. Reason: org.apache.cxf.service.factory.ServiceConstructionException: Could not find definition for service CurrencyConvertor.
at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:395)
at org.apache.camel.impl.ProducerCache.acquireProducer(ProducerCache.java:114)
at org.apache.camel.impl.ProducerCache.startProducer(ProducerCache.java:145)
at org.apache.camel.processor.SendProcessor.doStart(SendProcessor.java:175)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
at org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
at org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
at org.apache.camel.processor.interceptor.TraceInterceptor.doStart(TraceInterceptor.java:358)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.processor.WrapProcessor.doStart(WrapProcessor.java:52)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
at org.apache.camel.processor.RedeliveryErrorHandler.doStart(RedeliveryErrorHandler.java:1064)
at org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:41)
at org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:28)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
at org.apache.camel.processor.interceptor.DefaultChannel.doStart(DefaultChannel.java:153)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:85)
at org.apache.camel.processor.MulticastProcessor.doStart(MulticastProcessor.java:938)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
at org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
at org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
at org.apache.camel.processor.UnitOfWorkProcessor.doStart(UnitOfWorkProcessor.java:88)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
at org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
at org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.impl.RouteService.startChildService(RouteService.java:322)
at org.apache.camel.impl.RouteService.warmUp(RouteService.java:151)
at org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:2000)
at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1928)
at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:1716)
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1597)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1453)
at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:179)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1421)
at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:228)
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:118)
at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:283)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:327)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:941)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:475)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
at org.apache.camel.spring.Main.createDefaultApplicationContext(Main.java:186)
at org.apache.camel.spring.Main.doStart(Main.java:140)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.main.MainSupport.run(MainSupport.java:141)
at org.apache.camel.main.MainSupport.run(MainSupport.java:332)
at org.apache.camel.spring.Main.main(Main.java:73)
... 6 more
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Could not find definition for service CurrencyConvertor.
at org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:139)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:412)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:534)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:248)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90)
at org.apache.camel.component.cxf.CxfEndpoint.createClient(CxfEndpoint.java:527)
at org.apache.camel.component.cxf.CxfProducer.doStart(CxfProducer.java:76)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
at org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:393)
... 88 more
*************************************.
从org.apache.camel.spring.main运行main时出错
java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.apache.camel.maven.RunMojo$1.run(RunMojo.java:440)
运行(Thread.java:744)
原因:org.apache.camel.FailedToCreateProducerException:未能为端点创建生产者:端点[cxf://http://www.webservicex.net/CurrencyConvertor.asmx?dataFormat=MESSAGE&portName=http%3A%2F%2Fwww.webserviceX.NET%2Ftns%3ACurrencyConvertorSoap&serviceName=CurrencyConvertor&wsdlURL=http%3A%2F%2Fwww.webservicex.net%2FCurrencyConvertor.asmx%3Fwsdl].Reason:org.apache.cxf.service.factory.ServiceConstructionException:找不到service CurrencyConvertor的定义。
位于org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:395)
位于org.apache.camel.impl.ProducerCache.acquireProducer(ProducerCache.java:114)
位于org.apache.camel.impl.ProducerCache.startProducer(ProducerCache.java:145)
位于org.apache.camel.processor.SendProcessor.doStart(SendProcessor.java:175)
位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
位于org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
位于org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
位于org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
位于org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
位于org.apache.camel.processor.interceptor.TraceInterceptor.doStart(TraceInterceptor.java:358)
位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
位于org.apache.camel.processor.WrapProcessor.doStart(WrapProcessor.java:52)
位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
位于org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
位于org.apache.camel.processor.RedeliveryRorHandler.doStart(RedeliveryRorHandler.java:1064)
位于org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:41)
位于org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:28)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
位于org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
位于org.apache.camel.processor.interceptor.DefaultChannel.doStart(DefaultChannel.java:153)
位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
位于org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:85)
位于org.apache.camel.processor.MulticastProcessor.doStart(MulticastProcessor.java:938)
位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
位于org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
位于org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
位于org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:73)
位于org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:78)
位于org.apache.camel.processor.UnitOfWorkProcessor.doStart(UnitOfWorkProcessor.java:88)
位于org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
位于org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:52)
位于org.apache.camel.util.ServiceHelper.startServices(ServiceHe