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
>

Reply via email to