Soap action forwarding should work with a pair of CXF consumer /
provider or a pair of HTTP endpoint using <http:soap-consumer/> and
<http:soap-provider />.
Both will require the WSDL to be set on the consumer and provider, but
you can deploy those in a single service unit.   Proxy support has
been added recently on the <http:soap-provider/> endpoint so if you
want to use those, I'd suggest you use a snapshot version of
servicemix-http.

Soap actions for the <http:endpoint/> only work by hard setting the
soap action, so as you said, it won't work for multiple web methods.

On Fri, Sep 5, 2008 at 8:40 AM, Ward, Lyall <[EMAIL PROTECTED]> wrote:
> Hi again, I'm still having some trouble.
>
> It seems I either have the choice of proxy support (from 3.3-SNAPSHOT)
> or the promised (but untested) ability to have soapActions forwarded
> through to the external service. Is there anyway I can have both? Proxy
> support for the servicemix-http (via jmx consolse configuration) is
> available in 3.2.2 why is it no available in 3.2.3?
>
> Also I have been able to find a method of storing then providing the
> wsdl from the conusmer. I have found two versions that work, both
> storing a modified wsdl file as a resource in the consumer
> <http:endpoint/> and using the  wsdResource property. The wsdl I have
> stored here has to be modified and the modifications need to be either:
> - Remove all services and bindings. Also remove all porttypes aside from
> the soap porttype.
> - Remove all services aside from the soap one and set its
> service/portname to match the service/endpoint.
>
> When I do either of these I am able to add ?wsdl to the endpoint url and
> fetch a wsdl file. However in both cases the bindings are lost, losing
> the soapAction information along with other parts of the binding
> information. Even if I leave the binding in the file servicemix appears
> to remove it and replace it with a very minimal one that is not able to
> be used for my requirements.
>
> Is there a way to prevent this modificaiton?
>
> Thanks for your help so far,
> Cheers,
> Lyall.
>
> -----Original Message-----
> From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, 26 August 2008 5:53 PM
> To: [email protected]
> Subject: [JUNK]Re: Soap action and wsdl forwarding.
>
> Proxy support for the <http:provider/> and <http:soap-provider/>
> endpoints is available since yesterday.
> You need to download / build the latest components (or grab a snapshot
> of 3.3) and use the following:
>
>  <http:provider proxyHost="xxx" proxyPort="80" ...
>
> On Tue, Aug 26, 2008 at 8:00 AM, Ward, Lyall <[EMAIL PROTECTED]> wrote:
>> Gert,
>>
>> Thank you for your reply, I am still having trouble.
>>
>> I have changed my provider to match the wsdl service/endpoint nameing.
>> ### new provider xbean.xml
>> <?xml version='1.0' encoding='UTF-8'?>
>> <beans xmlns:http='http://servicemix.apache.org/http/1.0'
>>       xmlns:svcns='http://www.webserviceX.NET'>
>>  <http:soap-provider service='svcns:UKLocation'
>>                 endpoint='UKLocationSoap'
>>
>> locationURI='http://www.webservicex.com/uklocation.asmx'
>>                 wsdl='http://www.webservicex.com/uklocation.asmx?WSDL'
>>                 validateWsdl="false"
>>                 useJbiWrapper="false"
>>                 />
>> </beans>
>>
>> I've also upgraded to apache-servicemix-3.2.3-20080825.225502-19 and
>> switched my provider to a <http:soap-provider/> as you suggested.
>> Service assembly compiles and deploys fine, however it still fails to
>> discover the wsdl from the provider. Show the folloing in the debug
>> ### Debug
>> DEBUG - ConsumerProcessor              - Receiving HTTP request: GET
>> /ukLocation-3700af92-6ef7-4a42-9d61-4d241515f715/main.wsdl HTTP/1.1
>> Host: bned50077171a.dhcp.bne.sap.corp:8192
>> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB;
> rv:1.8.1.16)
>> Gecko/20080702 Firefox/2.0.0.16
>> Accept:
>>
> text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai
>> n;q=0.8,image/png,*/*;q=0.5
>> Accept-Language: en-gb,en;q=0.5
>> Accept-Encoding: gzip,deflate
>> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>> Keep-Alive: 300
>> Connection: keep-alive
>>
>>
>> DEBUG - HttpComponent                  - Retrieving proxied endpoint
>> definition
>> DEBUG - EIPComponent                   - Querying service description
>> for
>>
> ServiceEndpoint[service={http://www.webserviceX.NET}wireTap,endpoint=370
>> 0af92-6ef7-4a42-9d61-4d241515f715]
>> DEBUG - HttpComponent                  - PortType for
>> targetService/targetEndpoint could not be found
>>
>> It does not appear to have tried to get the wsdl from the provider at
>> all now.
>>
>> Finally the assembly no longer works as it appears the
>> <http:soap-provider/> is not using the proxy settings which I have
> given
>> the servicemix-http component which are required for me to access the
>> external service. I'm unsure if the saopaction code is working or not
>> because of this.
>>
>> Thanks,
>> Lyall.
>>
>>
>>
>> -----Original Message-----
>> From: Gert Vanthienen [mailto:[EMAIL PROTECTED]
>> Sent: Friday, 22 August 2008 3:03 PM
>> To: [email protected]
>> Subject: [JUNK]Re: Soap action and wsdl forwarding.
>>
>> Lyall,
>>
>> If the information can not be retrieved from the WSDL, this usually
>> means that there is a mismatch between the service/endpoint name and
> the
>>
>> service/port names in the wsdl.  The two should match for the
>> http:endpoint to find what it needs.
>>
>> For the SOAPAction, could you try replacing your <http:endpoint/> with
>> <http:soap-provider/> with a ServiceMix 3.2.3-SNAPSHOT (available at
>>
> http://people.apache.org/repo/m2-snapshot-repository/org/apache/servicem
>> ix/apache-servicemix/3.2.3-SNAPSHOT/).
>> I have just yesterday committed a few fixes that might get this issue
>> resolved.
>>
>> Regards,
>>
>> Gert
>>
>> Ward, Lyall wrote:
>>> Hi,
>>>
>>> I am attempting to setup what appears to be a very simple web service
>>> proxy using servicemix. I'm using servicemix version 3.2.2 standalone
>>> (though eventually tomcat integration would be nice) on jvm
>> 1.5.0_14_b03
>>> on windows vista. The configuration I am attempting to use is using
>>> consumer and provider binding component with a wiretap in the middle
>>> sending a copy of the message to a metering engine.
>>>
>>> I have a configuration of these component that works for forwarding
>> the
>>> soap requests to the external service and causing the metering to be
>>> executed. However there are 2 issues I've not been able to solve.
>>>
>>> I am unable to use the enpoint I created to provide the wsdl file of
>> the
>>> service, and I am unable to have the soapaction header from the
>> original
>>> request forwarded to the external service. I have worked around this
>>> with a static definition of the soap action, but for services that
>>> provide multiple methods this will not work and it is not desireable
>> to
>>> have a provider binding component for each method.
>>>
>>> When I deploy the component and also when I attempt to fetch the wsdl
>> I
>>> can see an http component attempting to access the wsdl (appears that
>>> way to me at least) but with no success, the debug is as follows.
>>>
>>> Is there something in the defintion of the components I am missing? I
>>> have a binding component and jsr181 service assembly also and the
> wsdl
>>> generation and fetching automaticlly works in that case.
>>>
>>> Thanks in advance,
>>> Lyall.
>>>
>>> ### on startup of the provier
>>> DEBUG - HttpComponent                  - Port for service/endpoint
>> could
>>> not be found
>>>
>>> ### on request of the wsdl
>>> DEBUG - ConsumerProcessor              - Receiving HTTP request: GET
>>> /UKLocation/main.wsdl HTTP/1.1
>>> Host: mymachine.network.com:8192
>>> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB;
>> rv:1.8.1.16)
>>> Gecko/20080702 Firefox/2.0.0.16
>>> Accept:
>>>
>>
> text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai
>>> n;q=0.8,image/png,*/*;q=0.5
>>> Accept-Language: en-gb,en;q=0.5
>>> Accept-Encoding: gzip,deflate
>>> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>>> Keep-Alive: 300
>>> Connection: keep-alive
>>>
>>>
>>> DEBUG - HttpComponent                  - Retrieving proxied endpoint
>>> definition
>>> DEBUG - EIPComponent                   - Querying service description
>>> for
>>>
>>
> ServiceEndpoint[service={http://www.webserviceX.NET}wireTap,endpoint=end
>>> point]
>>> DEBUG - EIPComponent                   - No description found for
>>> {http://www.webserviceX.NET}wireTap:endpoint
>>> DEBUG - JettyContextManager            - Dispatching job:
>>> [EMAIL PROTECTED],io=1,w=true,b=false|false]
>>> DEBUG - JettyContextManager            - Dispatching job:
>>> [EMAIL PROTECTED],io=1,w=true,b=false|false]
>>>
>>>
>>> ### CONSUMER XBEAN.XML
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <beans xmlns:http="http://servicemix.apache.org/http/1.0";
>>>        xmlns:ukl="http://www.webserviceX.NET";>
>>>
>>>   <http:endpoint service="ukl:UKLocationIn"
>>>                  endpoint="soap"
>>>                  targetService="ukl:wireTap"
>>>                  targetEndpoint="endpoint"
>>>                  locationURI="http://0.0.0.0:8192/UKLocation/";
>>>                  defaultMep="http://www.w3.org/2004/08/wsdl/in-out";
>>>                  role="consumer"
>>>                  soap="true"
>>>                  />
>>> </beans>
>>>
>>> ### WIRE TAP XBEAN.XML
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <beans xmlns:eip="http://servicemix.apache.org/eip/1.0";
>>>        xmlns:ukl="http://www.webserviceX.NET";>
>>>
>>> <eip:wire-tap service="ukl:wireTap" endpoint="endpoint">
>>>   <eip:target>
>>>     <eip:exchange-target service="ukl:UKLocation" endpoint="Soap"/>
>>>   </eip:target>
>>>   <eip:inListener>
>>>     <eip:exchange-target service="ukl:events" endpoint="endpoint" />
>>>   </eip:inListener>
>>> </eip:wire-tap>
>>>
>>> </beans>
>>>
>>> ### PROVIDER XBEAN.XML
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <beans xmlns:http="http://servicemix.apache.org/http/1.0";
>>>        xmlns:ukl="http://www.webserviceX.NET";>
>>>   <http:endpoint service="ukl:UKLocation"
>>>             endpoint="Soap"
>>>             role="provider"
>>>             soapAction="http://www.webserviceX.NET/ValidateUKAddress";
>>>             locationURI="http://www.webservicex.com/uklocation.asmx";
>>>             defaultMep="http://www.w3.org/2004/08/wsdl/in-out";
>>>             soap="true"
>>>               soapVersion="1.1"
>>>
>>> wsdlResource="http://www.webservicex.net/uklocation.asmx?wsdl";
>>>               />
>>> </beans>
>>>
>>>
>>>
>>
>>
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/

Reply via email to