No, all soap requests are sent using POST method. This is the expected behavior.
On Mon, Feb 2, 2009 at 10:34, liav ezer <[email protected]> wrote: > Hi Guillaume, > > I debugged the process() method in HttpProviderEndpoint class & looked at > the value of the http exchange when its being sent: > > > getConnectionPool().send(*httpEx*); > > The value is: > > httpexcha...@1663347=*post* > //drorav02:8080/ForecasterService/services/ForecastWeatherImp#0 > > i also see that the *_requestContent* data member is a > *ByteArrayBuffer*type & has this value: > > <soap:Envelope xmlns:soap=" > http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><getForcastPerLocation<http://schemas.xmlsoap.org/soap/envelope/%22%3E%3Csoap:Body%3E%3CgetForcastPerLocation>xmlns=" > http://service.app.esb.abc.liav.com" xmlns:soapenv=" > http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd=" > http://www.w3.org/2001/XMLSchema" xmlns:xsi=" > http://www.w3.org/2001/XMLSchema-instance"><location>Ashdod</location></getForcastPerLocation></soap:Body></soap:Envelope<http://www.w3.org/2001/XMLSchema-instance%22%3E%3Clocation%3EAshdod%3C/location%3E%3C/getForcastPerLocation%3E%3C/soap:Body%3E%3C/soap:Envelope> >> > > It seems that the contecnt is soap but it's sent as POST. Can you see the > problem? > Thanks. > ---------- Forwarded message ---------- > From: liav ezer <[email protected]> > Date: Mon, Feb 2, 2009 at 10:48 AM > Subject: Re: Http consumer end-point question > To: [email protected] > > > It seems that the transmission to my service via my soap-provider isn't > soap. I used a sniffer and seen that the request is POST over HTTP. > > That's why i get a fault response specifying that there isn't any SOAPAction > header... > > I suspected that the camel API (producerTemplate.send()) is messing my > requset so i changed my router do a from().to() routing as follows: > > > from*(* > *"jbi:service:**http://oxp/oXpInternalService").to("jbi:service: > http://prd/ForecastWeatherImpService");* > > & i still get this fault. It seems like it is related to the provider > end-point. Do you see something wrong in its configuration? > > Thanks > > On Mon, Feb 2, 2009 at 10:20 AM, Guillaume Nodet <[email protected]> wrote: > >> The message you see in the NMR won't be the SOAP envelope. The soap >> envelope is put when the HTTP request is sent and removed when the >> response is received. >> You should check what happens on the other side of the consumer in >> your ForcastWeatherImp service. It seems to send back a fault for >> some reason. >> >> On Mon, Feb 2, 2009 at 09:11, liav ezer <[email protected]> wrote: >> > Ok. >> > >> > I followed your advise & used the following soap-provider end-point: >> > >> > <?xml version="1.0" encoding="UTF-8"?> >> > <beans xmlns:http="http://servicemix.apache.org/http/1.0" xmlns:prd=" >> > http://prd"> >> > <http:*soap-provider* service="prd:ForecastWeatherImpService" >> > endpoint="ForecastWeatherImp" >> > locationURI=" >> > http://localhost:8080/ForecasterService/services/ForecastWeatherImp" >> > wsdl="classpath:ForecastWeatherImp.wsdl" >> > useJbiWrapper="false"/> >> > </beans> >> > >> > but i get an error which i don't understand its origin: >> > >> > DEBUG - HttpComponent - Received exchange: status: >> Active, >> > role: provider >> > DEBUG - HttpComponent - Retrieved correlation id: null >> > DEBUG - DefaultHttpProviderMarshaler - Using default request encoding >> in >> > provider marshaller. >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.interceptors.jbi.JbiOutInterceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.interceptors.jbi.JbiOutWsdl1Interceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.interceptors.xml.StaxOutInterceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.bindings.soap.interceptors.SoapOutInterceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.interceptors.xml.BodyOutInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor org.apache.servicemix.soap.interceptors.jbi.JbiOutInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor >> > org.apache.servicemix.soap.interceptors.jbi.JbiOutWsdl1Interceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor >> > org.apache.servicemix.soap.interceptors.mime.AttachmentsOutInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor >> org.apache.servicemix.soap.interceptors.xml.StaxOutInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor >> > org.apache.servicemix.soap.bindings.soap.interceptors.SoapOutInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor >> org.apache.servicemix.soap.interceptors.xml.BodyOutInterceptor >> > DEBUG - DefaultHttpProviderMarshaler - Using default response encoding >> in >> > provider marshaller. >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.interceptors.mime.AttachmentsInInterceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.interceptors.xml.StaxInInterceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.bindings.soap.interceptors.SoapInInterceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > >> org.apache.servicemix.soap.bindings.soap.interceptors.SoapFaultInInterceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.interceptors.jbi.JbiInWsdl1Interceptor >> > DEBUG - PhaseInterceptorChain - Adding interceptor >> > org.apache.servicemix.soap.interceptors.jbi.JbiInInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor >> > org.apache.servicemix.soap.interceptors.mime.AttachmentsInInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor org.apache.servicemix.soap.interceptors.xml.StaxInInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor >> > org.apache.servicemix.soap.bindings.soap.interceptors.SoapInInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor >> > >> org.apache.servicemix.soap.bindings.soap.interceptors.SoapFaultInInterceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor >> > org.apache.servicemix.soap.interceptors.jbi.JbiInWsdl1Interceptor >> > DEBUG - PhaseInterceptorChain - Invoking handleMessage on >> > interceptor org.apache.servicemix.soap.interceptors.jbi.JbiInInterceptor >> > DEBUG - DeliveryChannelImpl - Send >> > ID:10.236.11.194-11f35e61a07-2:0 in DeliveryChannel{servicemix-http} >> > DEBUG - SecuredBroker - send exchange with secure broker >> > DEBUG - SedaFlow - Called Flow send >> > DEBUG - SedaQueue - >> > org.apache.servicemix.jbi.nmr.flow.seda.sedaqueu...@120a5d7 dequeued >> > exchange: InOut[ >> > id: ID:10.236.11.194-11f35e61a07-2:0 >> > status: Active >> > role: consumer >> > service: {http://prd}ForecastWeatherImpService >> > endpoint: ForecastWeatherImp >> > in: <?xml version="1.0" encoding="UTF-8"?><getForcastPerLocation xmlns=" >> > http://service.app.esb.abc.liav.com" xmlns:soapenv=" >> > http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd >> > ="http://www.w3.org/2001/XMLSchema" xmlns:xsi=" >> > http://www.w3.org/2001/XMLSchema-instance >> "><location>Ashdod</location></getForcastPerLocation< >> http://www.w3.org/2001/XMLSchema-instance%22%3E%3Clocation%3EAshdod%3C/location%3E%3C/getForcastPerLocation >> > >> >> >> > *fault: <?xml version="1.0" encoding="UTF-8"?><ns2:hostname >> xmlns:ns2="** >> > http://xml.apache.org/axis/">LIAVE02</ns2:hostname*< >> http://xml.apache.org/axis/%22%3ELIAVE02%3C/ns2:hostname> >> > *>* >> > >> > You can see that the in part isn't wrapped with either jbi wrapper or >> soap >> > envelope & i guess this is the cause of the problem. >> > >> > Jbi wrapper i don't need, how can i cause the request to be wraaped in >> > <soapenv> tags? >> > >> > This is the way i invoke the endpoint: >> > >> > ProducerTemplate<Exchange> serviceProducer = >> > exchange.getContext().createProducerTemplate(); >> > String targetEndpoint = "jbi:service: >> http://prd/ForecastWeatherImpService >> > "; >> > Endpoint serviceProviderEP = >> > exchange.getContext().getEndpoint(targetEndpoint); >> > Exchange serviceProviderExchange = >> > serviceProviderEP.createExchange(ExchangePattern.InOut); >> > >> > serviceProviderExchange.setIn(exchange.getIn()); >> > Exchange serviceResultExchange = >> *serviceProducer.send(serviceProviderEP, >> > serviceProviderExchange); >> > * >> > //reply yo the consumer >> > exchange.getOut().setBody(serviceResultExchange.getOut().getBody()); >> > >> > Thanks. >> > >> > On Mon, Feb 2, 2009 at 9:59 AM, Guillaume Nodet <[email protected]> >> wrote: >> > >> >> The soap-consumer and soap-provider will support SOAP while the other >> >> ones don't (they just pass the request and won't do any soap related >> >> processing). If your endpoint is meant to provide access to a web >> >> services using SOAP, you should use a soap endpoint (either consumer >> >> or provider). >> >> If you use REST, the best way would be to create your own http >> >> marshaler and not use the soap endpoints. >> >> >> >> On Mon, Feb 2, 2009 at 08:52, liav ezer <[email protected]> wrote: >> >> > What is the actual difference between the <http consumer> & the <http >> >> > soap-consumer>? Does the second one support REST services as well? >> >> > >> >> > And, do i need to keep a match between the consumer type to the >> provider >> >> > type? It seems like a logical thing to do... >> >> > >> >> > Thanks. >> >> > >> >> > On Mon, Feb 2, 2009 at 9:35 AM, Guillaume Nodet <[email protected]> >> >> wrote: >> >> > >> >> >> Have you tried using the soap provider endpoint ? It will >> >> >> automatically set the right value for the soap action based on the >> >> >> wsdl. >> >> >> >> >> >> <http:soap-provider ... /> >> >> >> >> >> >> On Sat, Jan 31, 2009 at 20:11, Liav Ezer <[email protected]> >> wrote: >> >> >> > >> >> >> > Hi, >> >> >> > >> >> >> > Thanks for your reply. I use an old http provider & i guess it was >> the >> >> >> > origin for those methods. Therefore, i replaced it now with a new >> http >> >> >> > provider as follows: >> >> >> > >> >> >> > <beans xmlns:http="http://servicemix.apache.org/http/1.0" >> >> >> > xmlns:prd="http://prd"> >> >> >> > <http:provider service="prd:ForecastWeatherImpService" >> >> >> > endpoint="prd:ForecastWeatherImpService" >> >> >> > >> >> >> > locationURI=" >> >> >> http://localhost:8080/ForecasterService/services/ForecastWeatherImp" >> >> >> > /> >> >> >> > </beans> >> >> >> > >> >> >> > & i get the following error in the SMX log: >> >> >> > >> >> >> > fault: <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope >> >> >> > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >> >> >> > xmlns:xsd="http://www.w3.org/2001/XMLSchema" >> >> >> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> >> >> >> > <soapenv:Body> >> >> >> > <soapenv:Fault> >> >> >> > <faultcode >> >> >> > xmlns:ns1="http://xml.apache.org/axis/ >> >> >> ">ns1:Client.NoSOAPAction</faultcode> >> >> >> > <faultstring>no SOAPAction header!</faultstring> >> >> >> > <detail> >> >> >> > <ns2:hostname >> >> >> > xmlns:ns2="http://xml.apache.org/axis/">LIAVE02</ns2:hostname> >> >> >> > </detail> >> >> >> > </soapenv:Fault> >> >> >> > </soapenv:Body> >> >> >> > </soapenv:Envelope> >> >> >> > >> >> >> > I also valued the soapAction attribute in the wsdl to be: >> >> >> > soapAction="no_params" with no change. >> >> >> > >> >> >> > Can you suggest on a solution? Can you also advise if i can use an >> old >> >> >> > provider & a new consumer? >> >> >> > >> >> >> > Thanks. >> >> >> > >> >> >> > gnodet wrote: >> >> >> >> >> >> >> >> Not sure to understand. >> >> >> >> SoapMarshaler and SoapWriter and not used with the new endpoints, >> >> they >> >> >> >> are only used with the old <http:endpoint/> one. >> >> >> >> >> >> >> >> On Fri, Jan 30, 2009 at 14:53, Liav Ezer <[email protected]> >> >> wrote: >> >> >> >>> >> >> >> >>> Hi, >> >> >> >>> >> >> >> >>> I want to use the NEW http consumer endpoint (<http:consumer../>) >> in >> >> >> >>> order >> >> >> >>> to attach a marshaller. >> >> >> >>> >> >> >> >>> My problem is that i see that the exchange is identified as a >> soap >> >> >> >>> request, >> >> >> >>> hence it is wraped in "<env:" envelope & body tags in addition to >> >> it's >> >> >> >>> actual wrapper which is via soapenv: tags. >> >> >> >>> >> >> >> >>> This causes an exception. >> >> >> >>> >> >> >> >>> I debugged it & found out that if i convert the following boolean >> to >> >> >> >>> false >> >> >> >>> everything is working without this <env> wrapper. >> >> >> >>> >> >> >> >>> public class SoapMarshaler { >> >> >> >>> ... >> >> >> >>> protected boolean soap = true; >> >> >> >>> ... >> >> >> >>> public boolean isSoap() { >> >> >> >>> return soap; >> >> >> >>> } >> >> >> >>> } >> >> >> >>> >> >> >> >>> This is called from SoapWriter class: >> >> >> >>> >> >> >> >>> if (marshaler.isSoap()) { >> >> >> >>> writeSoapEnvelope(writer); >> >> >> >>> } >> >> >> >>> >> >> >> >>> & indeed writeSoapEnvelope does the following wrapper: >> >> >> >>> >> >> >> >>> public void writeSoapEnvelope(XMLStreamWriter writer) throws >> >> Exception >> >> >> { >> >> >> >>> QName envelope = getEnvelopeName(); >> >> >> >>> String soapUri = envelope.getNamespaceURI(); >> >> >> >>> String soapPrefix = envelope.getPrefix(); >> >> >> >>> writer.setPrefix(soapPrefix, soapUri); >> >> >> >>> writer.writeStartElement(soapPrefix, >> SoapMarshaler.ENVELOPE, >> >> >> >>> soapUri); >> >> >> >>> >> >> >> >>> My question is: >> >> >> >>> >> >> >> >>> How do i control the exchange from the new http consumer so it >> won't >> >> be >> >> >> >>> recognized as soap or will not be wrapped as described? I know >> the >> >> http >> >> >> >>> soap-consumer endpoint wrapps the exchange with jbi & you can >> >> control >> >> >> it >> >> >> >>> via >> >> >> >>> the useJbiWrapper attribute in the xbean. Is there a solotion for >> >> this >> >> >> >>> also? >> >> >> >>> >> >> >> >>> Here is my xbean: >> >> >> >>> <?xml version="1.0" encoding="UTF-8"?> >> >> >> >>> <beans xmlns:http="http://servicemix.apache.org/http/1.0" >> >> >> >>> xmlns:con="http://service.app.esb.abc.liav.com" >> >> >> >>> xmlns:abc="http://abc"> >> >> >> >>> <http:consumer service="con:PublicForecastWeatherService" >> >> >> >>> endpoint="PublicForecastWeather" >> >> >> >>> >> >> >> >>> locationURI=" >> >> >> http://localhost:8192/abc/services/internal/forecastWeather?in-out" >> >> >> >>> defaultMep=" >> http://www.w3.org/2004/08/wsdl/in-out" >> >> >> >>> targetService="abc:abcInternalService" >> >> >> >>> marshaler="#marshaler" /> >> >> >> >>> <bean id="marshaler" >> >> >> class="org.apache.servicemix.jbi.HTTPMarshaler" >> >> >> >>> /> >> >> >> >>> </beans> >> >> >> >>> >> >> >> >>> Thanks in advance, >> >> >> >>> >> >> >> >>> Liav. >> >> >> >>> -- >> >> >> >>> View this message in context: >> >> >> >>> >> >> >> >> >> >> http://www.nabble.com/Http-consumer-end-point-question-tp21747567p21747567.html >> >> >> >>> Sent from the ServiceMix - User mailing list archive at >> Nabble.com. >> >> >> >>> >> >> >> >>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> >> >> Cheers, >> >> >> >> Guillaume Nodet >> >> >> >> ------------------------ >> >> >> >> Blog: http://gnodet.blogspot.com/ >> >> >> >> ------------------------ >> >> >> >> Open Source SOA >> >> >> >> http://fusesource.com >> >> >> >> >> >> >> >> >> >> >> > >> >> >> > -- >> >> >> > View this message in context: >> >> >> >> >> >> http://www.nabble.com/Http-consumer-end-point-question-tp21747567p21767145.html >> >> >> > Sent from the ServiceMix - User mailing list archive at Nabble.com. >> >> >> > >> >> >> > >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> >> Cheers, >> >> >> Guillaume Nodet >> >> >> ------------------------ >> >> >> Blog: http://gnodet.blogspot.com/ >> >> >> ------------------------ >> >> >> Open Source SOA >> >> >> http://fusesource.com >> >> >> >> >> > >> >> >> >> >> >> >> >> -- >> >> Cheers, >> >> Guillaume Nodet >> >> ------------------------ >> >> Blog: http://gnodet.blogspot.com/ >> >> ------------------------ >> >> Open Source SOA >> >> http://fusesource.com >> >> >> > >> >> >> >> -- >> Cheers, >> Guillaume Nodet >> ------------------------ >> Blog: http://gnodet.blogspot.com/ >> ------------------------ >> Open Source SOA >> http://fusesource.com >> > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com
