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