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 >
