On Thu, Apr 14, 2011 at 6:03 PM, Marco Westermann <[email protected]> wrote: > Hi, > > thank you for that link.. I just viewed the webinar xcf with camel for the > 3rd time. My problem is, that all the services he implements are internal > services which provide the route to outer world. There is no use of external > services in his routes, is it? >
And just to be clear, by external service, you mean your application calls an external webservice, hosted somewhere else? To do that its basically just do a .to(uri) where uri is the cxf endpoint uri for the external webservice. > regards, Marco > > > > Am 14.04.2011 16:31, schrieb Claus Ibsen: >> >> You might wanna check Adrians webinar series (3 in total). >> There is one about using webservices (Apache CXF) with Camel, and >> another with ServiceMix >> >> They are here: >> http://fusesource.com/resources/video-archived-webinars/ >> >> >> On Thu, Apr 14, 2011 at 4:19 PM, Marco Westermann<[email protected]> >> wrote: >>> >>> Hi, >>> >>> ok I think I get further.. >>> >>> but it still doesnt seem to work. I get an exception in serviceMix: >>> Caused by: [org.apache.camel.InvalidPayloadException - No body available >>> of >>> type: org.apache.camel.component.cxf.CxfPayload on: Message: [Body is >>> null]. >>> >>> this is my new camel-context: >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <!-- Generated by Apache ServiceMix Archetype --> >>> <beans xmlns="http://www.springframework.org/schema/beans" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns:osgi="http://camel.apache.org/schema/osgi" >>> xmlns:osgix="http://www.springframework.org/schema/osgi-compendium" >>> xmlns:ctx="http://www.springframework.org/schema/context" >>> xmlns:cxf="http://camel.apache.org/schema/cxf" >>> xsi:schemaLocation=" >>> http://camel.apache.org/schema/cxf >>> http://camel.apache.org/schema/cxf/camel-cxf.xsd >>> http://www.springframework.org/schema/beans >>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd >>> http://camel.apache.org/schema/spring >>> http://camel.apache.org/schema/spring/camel-spring.xsd >>> http://camel.apache.org/schema/osgi >>> http://camel.apache.org/schema/osgi/camel-osgi.xsd >>> http://www.springframework.org/schema/osgi-compendium >>> >>> http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd >>> http://www.springframework.org/schema/context >>> http://www.springframework.org/schema/context/spring-context.xsd >>> "> >>> >>> <osgi:camelContext xmlns="http://camel.apache.org/schema/spring"> >>> <route> >>> <from uri="timer://MyTimer?fixedRate=true&period=10000"/> >>> <to >>> uri="cxf:bean:articleService?defaultOperationName=getChangedArticles"/> >>> <to uri="activemq:camel.changedArticles"/> >>> </route> >>> </osgi:camelContext> >>> >>> <bean id="activemq" >>> class="org.apache.activemq.camel.component.ActiveMQComponent"> >>> <property name="brokerURL" value="tcp://localhost:61616"/> >>> </bean> >>> >>> <cxf:cxfEndpoint id="articleService" >>> >>> wsdlURL="http://arche:8080/ArticleService/services/ArticleBAS?wsdl" >>> serviceName="impl:ArticleBASService" >>> endpointName="impl:ArticleBAS" >>> xmlns:impl="http://DefaultNamespace" >>> <cxf:properties> >>> <entry key="dataFormat" value="PAYLOAD"/> >>> </cxf:properties> >>> </cxf:cxfEndpoint> >>> </beans> >>> >>> >>> what is wrong with that? >>> >>> Am 14.04.2011 10:44, schrieb Freeman Fang: >>>> >>>> Hi, >>>> >>>> Yeah, >>>> >>>> The archtypes with >>>> <groupId>org.apache.servicemix.tooling</groupId> >>>> <artifactId>servicemix-camel-osgi-bundle</artifactId> >>>> >>>> You can find it from [1] >>>> >>>> >>>> [1]http://repo2.maven.org/maven2/org/apache/servicemix/tooling/servicemix-camel-osgi-bundle/ >>>> Freeman >>>> On 2011-4-14, at 下午4:12, Marco Westermann wrote: >>>> >>>>> Hi, >>>>> >>>>> ok, I'll try the camel-osgi thing. By the way.. are there already any >>>>> maven archtypes which can be used to generate a maven-osgi project? >>>>> >>>>> regards Marco >>>>> >>>>> Am 13.04.2011 11:36, schrieb Freeman Fang: >>>>>> >>>>>> Hi, >>>>>> >>>>>> My comment inline. >>>>>> On 2011-4-13, at 下午4:31, Marco Westermann wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> Thank you very much for your answers but >>>>>>> I get more and more confused: >>>>>>> >>>>>>> Matt: >>>>>>> >>>>>>> The http component works great as a simple soap client, so you can >>>>>>> use >>>>>>> it w/o using CXF in most cases. >>>>>>> >>>>>>> Freeman: >>>>>>> IMHO, to do a soap based operation, you'd better use cxf bc provider >>>>>>> here, which is more powerful for soap operation. >>>>>>> >>>>>>> My question: what should I use now? >>>>>> >>>>>> I do think you should use cxf bc provider in this case, as it's better >>>>>> soap support. >>>>>>> >>>>>>> Matt: >>>>>>> I recommend looking into using Camel and OSGI packaging on ServiceMix >>>>>>> 4.x, instead of using JBI >>>>>>> >>>>>>> My question: does that mean all the beginner tutorials on the >>>>>>> servicemix-homepage are outdated? Do you have any references how this >>>>>>> combination of camel and osgi-packaging works for serviceMix? >>>>>> >>>>>> We've discussed same issues several times before, JBI component is >>>>>> kind >>>>>> of outdated, so if you're starting a new project please use camel >>>>>> router >>>>>> directly, it's also has good cxf endpoint support so that it's easy >>>>>> for you >>>>>> to call a external webservice. You can take a look at camel-osgi >>>>>> example >>>>>> shipped with Servicemix4.x kit to learn how camel and osgi-packaging >>>>>> works >>>>>> together. >>>>>>> >>>>>>> And I'm not one step further with the implementation of that one >>>>>>> external service. @Freeman: I thought the port do exist in the wsdl, >>>>>>> cause I >>>>>>> copied it from there. You may see yourself. I provided the wsdl in my >>>>>>> last >>>>>>> post. And than again there is the question about how the >>>>>>> soap-operation has >>>>>>> to be named in my project. >>>>>> >>>>>> Notice >>>>>> <http:soap-provider service="impl:ArticleBASService" >>>>>> endpoint="impl:ArticleBASSoapBinding" >>>>>> >>>>>> wsdl="http://arche:8080/ArticleService/services/ArticleBAS?wsdl" /> >>>>>> According to your wsdl, the endpoint should be impl:ArticleBAS, it >>>>>> should be same as the port name in your wsdl. >>>>>> >>>>>> I guess this mismatch which cause soap-operation missing, but again, >>>>>> please use cxf bc provider endpoint for better soap support. >>>>>> >>>>>> Hope this helps. >>>>>> Freeman >>>>>>> >>>>>>> regards, Marco >>>>>>> >>>>>>> Am 13.04.2011 05:05, schrieb Freeman Fang: >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> My comment inline >>>>>>>> On 2011-4-12, at 下午11:07, Marco Westermann wrote: >>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> I fear I need further assistence. What I really miss is a tutorial >>>>>>>>> where an external web service is called. >>>>>>>>> >>>>>>>>> What I have done: >>>>>>>>> >>>>>>>>> I created a http-component-su qbus-article-poll-su (this wrappes >>>>>>>>> the >>>>>>>>> external web service) >>>>>>>>> >>>>>>>>> in the qbus-article-camel-su I implemented a simple camel route >>>>>>>>> where >>>>>>>>> the service should be called and the response is written to a log, >>>>>>>>> so I can >>>>>>>>> see, that the request works. But my problems start when >>>>>>>>> implementing the >>>>>>>>> service-stub. >>>>>>>>> >>>>>>>>> This is my service definion >>>>>>>>> >>>>>>>>> <beans xmlns:http="http://servicemix.apache.org/http/1.0" >>>>>>>>> xmlns:impl="http://DefaultNamespace" >>>>>>>>> xmlns="http://www.springframework.org/schema/beans" >>>>>>>>> xmlns:xsi="http://http://www.w3.org/2001/XMLSchema-instance" >>>>>>>>> xsi:schemaLocation="http://servicemix.apache.org/http/1.0 >>>>>>>>> http://servicemix.apache.org/schema/servicemix-http-3.2.3.xsd >>>>>>>>> http://www.springframework.org/schema/beans >>>>>>>>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> >>>>>>>>> >>>>>>>>> <http:soap-provider service="impl:ArticleBASService" >>>>>>>>> endpoint="impl:ArticleBASSoapBinding" >>>>>>>>> >>>>>>>>> wsdl="http://arche:8080/ArticleService/services/ArticleBAS?wsdl" >>>>>>>>> /> >>>>>>>>> >>>>>>>>> </beans> >>>>>>>>> >>>>>>>>> I think there is still something wrong: First of all I get >>>>>>>>> exceptions >>>>>>>>> in Servicemix: >>>>>>>>> Cound not find port 'impl:ArticleBAS' in wsdl for service >>>>>>>>> '{http://DefaultNamespace}ArticleBASService' >>>>>>>> >>>>>>>> You need check your port name in your wsdl, it need match your http >>>>>>>> endpoint configuration >>>>>>>>> >>>>>>>>> then I miss the reference to the operation I want to call (e.g. >>>>>>>>> getChangedArticles). Do I have to give this in the camel route or >>>>>>>>> in the >>>>>>>>> http-component? >>>>>>>>> >>>>>>>>> May somebody help me with my knowledge gaps? I attached the >>>>>>>>> sourcecode for my servicemix implementation and the wsdl-definition >>>>>>>>> of the >>>>>>>>> external service. >>>>>>>> >>>>>>>> IMHO, to do a soap based operation, you'd better use cxf bc provider >>>>>>>> here, which is more powerful for soap operation. >>>>>>>> We actually have testcase[1] to demonstrate how cxf bc provider >>>>>>>> works >>>>>>>> for several different cases, you may need take a look. >>>>>>>> >>>>>>>> >>>>>>>> [1]https://svn.apache.org/repos/asf/servicemix/components/trunk/bindings/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcProviderTest.java >>>>>>>> >>>>>>>> Freeman >>>>>>>>> >>>>>>>>> Many thanks and best regards, >>>>>>>>> Marco >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Am 08.04.2011 16:45, schrieb Matt Pavlovich: >>>>>>>>>> >>>>>>>>>> Marco- >>>>>>>>>> >>>>>>>>>> Check out XSLT. You can extract data from that XML document and >>>>>>>>>> output it it any variety of formats, not just XML. You'll want to >>>>>>>>>> capture >>>>>>>>>> the exact XML from "service one", so you can test your XSLT's. A >>>>>>>>>> handy tool >>>>>>>>>> to do that is TCP Mon, available as an Eclipse plugin, or a stand >>>>>>>>>> alone >>>>>>>>>> tool. >>>>>>>>>> >>>>>>>>>> XSLT: >>>>>>>>>> http://w3schools.com/xsl/default.asp >>>>>>>>>> >>>>>>>>>> TCPMon: >>>>>>>>>> http://ws.apache.org/commons/tcpmon/download.cgi >>>>>>>>>> >>>>>>>>>> Matt Pavlovich >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Apr 8, 2011, at 9:33 AM, Marco Westermann wrote: >>>>>>>>>> >>>>>>>>>>> Hi, thank you for your response, >>>>>>>>>>> >>>>>>>>>>> in fact there is some transformation needed for the response >>>>>>>>>>> payload of service call one. >>>>>>>>>>> >>>>>>>>>>> The service one wrappes an activeX-Object and returns a string as >>>>>>>>>>> part of a complex type: >>>>>>>>>>> >>>>>>>>>>> <element name="getChangedArticlesResponse"> >>>>>>>>>>> <complexType> >>>>>>>>>>> <sequence> >>>>>>>>>>> <element name="getChangedArticlesReturn" >>>>>>>>>>> type="xsd:string" /> >>>>>>>>>>> </sequence> >>>>>>>>>>> </complexType> >>>>>>>>>>> </element> >>>>>>>>>>> >>>>>>>>>>> the string itself contains exactly the message which has to be >>>>>>>>>>> routed to service 2. Any idea how to make this work? >>>>>>>>>>> >>>>>>>>>>> Thank you! >>>>>>>>>>> >>>>>>>>>>> Marco >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Am 07.04.2011 17:39, schrieb Matt Pavlovich: >>>>>>>>>>>> >>>>>>>>>>>> Hi Marco- >>>>>>>>>>>> >>>>>>>>>>>> You could implement a very simple solution using Camel running >>>>>>>>>>>> in >>>>>>>>>>>> ServiceMix to do that. Look into the timer, or quartz Camel >>>>>>>>>>>> components to >>>>>>>>>>>> start. >>>>>>>>>>>> >>>>>>>>>>>> It would look something like: >>>>>>>>>>>> >>>>>>>>>>>> <route> >>>>>>>>>>>> <from uri="timer.. configure to kick off every 5 mintues" /> >>>>>>>>>>>> <to uri="http://webservice1:8080/call /> >>>>>>>>>>>> <to uri="http://webservice2:8080/call2 /> >>>>>>>>>>>> </route> >>>>>>>>>>>> >>>>>>>>>>>> The response from the webservice1 would be directed as the input >>>>>>>>>>>> to webservice2. As long as the payload is exactly the same, you >>>>>>>>>>>> don't need >>>>>>>>>>>> to do anything. If there are slight changes to the xml, you can >>>>>>>>>>>> insert a >>>>>>>>>>>> XSLT to take the response from webservice1 and send it to >>>>>>>>>>>> webservice2 as the >>>>>>>>>>>> input. >>>>>>>>>>>> >>>>>>>>>>>> Time based invocation: >>>>>>>>>>>> http://camel.apache.org/timer.html >>>>>>>>>>>> http://camel.apache.org/quartz.html >>>>>>>>>>>> >>>>>>>>>>>> Simple web service calls: >>>>>>>>>>>> http://camel.apache.org/http.html >>>>>>>>>>>> >>>>>>>>>>>> Advanced web service: >>>>>>>>>>>> http://camel.apache.org/cxf.html >>>>>>>>>>>> >>>>>>>>>>>> XSLT: >>>>>>>>>>>> http://camel.apache.org/xslt.html >>>>>>>>>>>> >>>>>>>>>>>> Matt Pavlovich >>>>>>>>>>>> >>>>>>>>>>>> On Apr 7, 2011, at 7:59 AM, Marco Westermann wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> I try to implement the following process: >>>>>>>>>>>>> >>>>>>>>>>>>> every 5 minutes I want to call a web Service take the answer >>>>>>>>>>>>> and >>>>>>>>>>>>> call another web service with the return value from the first >>>>>>>>>>>>> call. >>>>>>>>>>>>> using bpel would be nice to do the job (ode?). Is there a >>>>>>>>>>>>> tutorial which does similar tasks? I think I have still an >>>>>>>>>>>>> understanding >>>>>>>>>>>>> problem on how to use serviceMix. >>>>>>>>>>>>> >>>>>>>>>>>>> Thank you for all advice you can give. >>>>>>>>>>>>> >>>>>>>>>>>>> Marco >>>>>>>>>>>> >>>>>>>>>>>> __________ Hinweis von ESET NOD32 Antivirus, >>>>>>>>>>>> Signaturdatenbank-Version 6025 (20110408) __________ >>>>>>>>>>>> >>>>>>>>>>>> E-Mail wurde geprüft mit ESET NOD32 Antivirus. >>>>>>>>>>>> >>>>>>>>>>>> http://www.eset.com >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> __________ Hinweis von ESET NOD32 Antivirus, >>>>>>>>>> Signaturdatenbank-Version 6026 (20110408) __________ >>>>>>>>>> >>>>>>>>>> E-Mail wurde geprüft mit ESET NOD32 Antivirus. >>>>>>>>>> >>>>>>>>>> http://www.eset.com >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> <qbus_01.zip><ArticleBAS.wsdl> >>>>>>>> >>>>>>>> --------------------------------------------- >>>>>>>> Freeman Fang >>>>>>>> >>>>>>>> FuseSource >>>>>>>> Email:[email protected] >>>>>>>> Web: fusesource.com >>>>>>>> Twitter: freemanfang >>>>>>>> Blog: http://freemanfang.blogspot.com >>>>>>>> Connect at CamelOne May 24-26 >>>>>>>> The Open Source Integration Conference >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> __________ Hinweis von ESET NOD32 Antivirus, >>>>>>>> Signaturdatenbank-Version >>>>>>>> 6037 (20110412) __________ >>>>>>>> >>>>>>>> E-Mail wurde gepr�ft mit ESET NOD32 Antivirus. >>>>>>>> >>>>>>>> http://www.eset.com >>>>>>>> >>>>>>>> >>>>>> --------------------------------------------- >>>>>> Freeman Fang >>>>>> >>>>>> FuseSource >>>>>> Email:[email protected] >>>>>> Web: fusesource.com >>>>>> Twitter: freemanfang >>>>>> Blog: http://freemanfang.blogspot.com >>>>>> Connect at CamelOne May 24-26 >>>>>> The Open Source Integration Conference >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> __________ Hinweis von ESET NOD32 Antivirus, Signaturdatenbank-Version >>>>>> 6037 (20110412) __________ >>>>>> >>>>>> E-Mail wurde gepr�ft mit ESET NOD32 Antivirus. >>>>>> >>>>>> http://www.eset.com >>>>>> >>>>>> >>>> --------------------------------------------- >>>> Freeman Fang >>>> >>>> FuseSource >>>> Email:[email protected] >>>> Web: fusesource.com >>>> Twitter: freemanfang >>>> Blog: http://freemanfang.blogspot.com >>>> Connect at CamelOne May 24-26 >>>> The Open Source Integration Conference >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> __________ Hinweis von ESET NOD32 Antivirus, Signaturdatenbank-Version >>>> 6039 (20110413) __________ >>>> >>>> E-Mail wurde gepr�ft mit ESET NOD32 Antivirus. >>>> >>>> http://www.eset.com >>>> >>>> >>> >> >> > > -- Claus Ibsen ----------------- FuseSource Email: [email protected] Web: http://fusesource.com CamelOne 2011: http://fusesource.com/camelone2011/ Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/
