Could you give some hints on what the sniffer sees ? On Mon, Feb 2, 2009 at 11:37, liav ezer <[email protected]> wrote: > Right, i saw the fixed getter: > > @Override > > public String getMethod() { > > return HttpMethods.POST; > > } > > Can you suggest why my provider (as follows) doesn't send the http request > in XML format? (sniffer clearly shows that it's plain http & not http/xml)? > > This is my providers xbean: > > <?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://drorav02:8080/ForecasterService/services/ForecastWeatherImp" > wsdl="classpath:ForecastWeatherImp.wsdl" > useJbiWrapper="false"/> > </beans> > > Attached is the wsdl file. > > Thanks in advcane. > > On Mon, Feb 2, 2009 at 11:36 AM, Guillaume Nodet <[email protected]> wrote: >> >> 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 > >
-- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com
