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
>

Reply via email to