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 >
