I'm developing a binding component using the sericemix-common library and taking inspiration (i.e. coping :-) )from the jsr181 component. 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? 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. thank in advance Raffaele
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="http://vinci.test.iif.imolinfo.it" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://vinci.test.iif.imolinfo.it"> <wsdl:types> <xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://vinci.test.iif.imolinfo.it"> <xsd:complexType name="VinciOutputBean"> <xsd:sequence> <xsd:element minOccurs="0" name="binStrlen" nillable="true" type="xsd:int"/> <xsd:element minOccurs="0" name="compStrlen" nillable="true" type="xsd:decimal"/> <xsd:element minOccurs="0" name="inputString" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="plusZonedStrlen" nillable="true" type="xsd:decimal"/> <xsd:element minOccurs="0" name="signedZonedStrlen" nillable="true" type="xsd:decimal"/> <xsd:element minOccurs="0" name="strlen" nillable="true" type="xsd:decimal"/> <xsd:element minOccurs="0" name="zonedStrlen" nillable="true" type="xsd:decimal"/> </xsd:sequence> </xsd:complexType> <xsd:element name="vinciOperation"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="tns:VinciOutputBean"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="vinciOperationResponse"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="tns:VinciOutputBean"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="vinciOperationRequest"> <wsdl:part element="tns:vinciOperation" name="parameters"/> </wsdl:message> <wsdl:message name="vinciOperationResponse"> <wsdl:part element="tns:vinciOperationResponse" name="parameters"/> </wsdl:message> <wsdl:portType name="VinciServicePortType"> <wsdl:operation name="vinciOperation"> <wsdl:input message="tns:vinciOperationRequest" name="vinciOperationRequest"/> <wsdl:output message="tns:vinciOperationResponse" name="vinciOperationResponse"/> </wsdl:operation> </wsdl:portType> <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> </wsdl:service> </wsdl:definitions>