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&amp;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/

Reply via email to