See comments inline On 3/9/06, Raffaele Spazzoli <[EMAIL PROTECTED]> wrote: > > I'm developing a binding component using the sericemix-common library > and taking inspiration (i.e. coping :-) )from the jsr181 component.
If you have concerns with the existing component (missing features, bugs...), please raise them. It works and when I generate the wsdl for my deployed service I obtain a > jbi binding: > > <wsdl:binding name="VinciServiceJBIBinding" > type="tns:VinciServicePortType"> > <wsdlsoap:binding style="document" > transport="http://java.sun.com/xml/ns/jbi/binding/service+engine"/> > <wsdl:operation name="vinciOperation"> > <wsdlsoap:operation soapAction=""/> > <wsdl:input name="vinciOperationRequest"> > <wsdlsoap:body use="literal"/> > </wsdl:input> > <wsdl:output name="vinciOperationResponse"> > <wsdlsoap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > <wsdl:service name="VinciService"> > <wsdl:port binding="tns:VinciServiceJBIBinding" > name="VinciServiceJBIPort"> > <wsdlsoap:address > location="jbi://{http://vinci.test.iif.imolinfo.it}VinciService"/> > </wsdl:port> > > For what I understand (and is not much yet) of the jbi specification > this is ok and means that my component is listening on the NMR message > bus. Now I want to expose my service to external clients via SOAP > binding (lets say SOAP over HTTP). > I think this should be possible just configuring a SOAP endpoint to > route the messages it receives to my jbi endpoint. I didn't find a > standard way to do it. Is it possible and how? The servicemix-http component can do this for you. See soap-binding example in the distribution and the test cases for this component. You can deploy WSDL or simple xml describing the endpoints. I hope we can provide some "automatic" way do create a proxy endpoint on a binding component in the future. I was able to exposte my endpoint on a http trasport using the non > standard jbi component provided by service mix adding this configuration > to the servicemix.xml: > > <sm:activationSpec componentName="httpReceiver" > > service="foo:httpBinding" > endpoint="httpReceiver" > destinationService="im:VinciService"> > <sm:component> > <bean class="org.apache.servicemix.components.http.HttpConnector"> > <property name="host" value="localhost"/> > <property name="port" value="8912"/> > </bean> > </sm:component> > </sm:activationSpec> > > The problem is that this work only if I send to this endpoint just the > content of the SOAP body i.e. I must delete the Envelope and the Body > from the message. Probably this is what the jbi bindig requires. If you use the servicemix-http component, you will be able to configure if you want to use soap or not. Else you may want to try the HttpSoapConnector instead. Note that there is no reason why the soap enveloppe should be sent inside the NMR. Soap is a protocol and should be handled by the binding component, not the service engine. The HttpConnector does not care about soap and so will send the whole content of the message in the http request (and same thing the other way), whereas the HttpSoapConnector will add/remove the soap enveloppe. Cheers, Guillaume Nodet thank in advance > Raffaele > > >