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

Reply via email to