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/
