On 3/13/06, Raffaele Spazzoli <[EMAIL PROTECTED]> wrote: > > I did as you said and it worked, thanks. > There are still a couple of issue that I'd like to understand: > 1. the SOAP-Http proxy service doesn't provide a wsdl. Do you think that > could be possible to take the wsdl of the proxied service strip the jbi > binding and put a SOAP-http binding?
Done. You should give it a try. It does not currenly generate the binding informations, only the http or soap address for the endpoint. 2. I configured the routing using the xbean file: > <http:endpoint service="im:VinciService" > endpoint="imhttp:VinciService" > role="consumer" > locationURI="http://localhost:8192/Service/VinciService" > defaultMep="http://www.w3.org/2004/08/wsdl/in-out" > soap="true" /> > I'd like to do the same using the standard connection definitions of the > jbi deployment descriptor of the service assembly. Does it make sense > and is it supported in serivicemix? Connections are now fully supported, but I'm not really sure how you could use them. They have been rewritten last week. A connection defines that when a component will send a message to the consumer endpoint (or interface), it will be routed to the given provider endpoint. The main goal is to be able to define service units that are independant of the provider endpoints. These endpoints are thus defined in the service assembly with connections. <connection> > <consumer endpoint-name="im:VinciServiceHttpPort" > service-name="im:VinciService"> > </consumer> > <provider endpoint-name="im:VinciServiceJBIPort" > service-name="im:VinciService"> > </provider> > </connection> > > If I try to do it servicemix complains that it can't find the cosumer > service (the proxy), I believe it does is because the proxy service > doesn't register a wsdl, so back to the previous point. > > About the service-common library I found it useful but not much > documented, it took me a couple of days of code reading to understand > what it could do for me. Yeah, i know. I will try to put write some doc in the following weeks. Last thing I suggest to add to the maven-servicemix-plugin a couple of goal > to help the deploy of install zip and service assemblies. > supposing to have a directory structure that mirrors the service assembly, > I did the following scripts that could be a start: > > <goal name="jbi:install" prereqs="jbi:jbi" description="install > installer in deploy directory of esb"> > > <ant:echo>installing installer</ant:echo> > <ant:delete file="${maven.jbi.esb.dir}/install/${maven.jbi.final.name > }"/> > <ant:copy file="${maven.build.dir}/${maven.jbi.final.name}" todir="${ > maven.jbi.esb.dir}/install" /> > > </goal> > > <goal name="jbi:deploy" > prereqs="jbi:create-sa" > description="deploy the serice assembies"> > > <ant:echo>deploying sa</ant:echo> > <ant:delete file="${maven.jbi.esb.dir}/deploy/${jbi.assembly.name > }.zip"/> > <ant:copy file="${basedir}/target/${jbi.assembly.name}.zip" todir="${ > maven.jbi.esb.dir}/deploy" /> > > </goal> > > <goal name="jbi:create-sa" description="create the service assembly"> > <j:set var="saname" value="${jbi.assembly.name}" /> > <j:set var="keysaname" value="jbi.assembly.unitname.${saname}" /> > <util:tokenize var="sus" delim=",">${context.getVariable > (keysaname)}</util:tokenize> > <ant:mkdir dir="${basedir}/target/jbi_sa_${saname}" /> > <j:forEach var="su" items="${sus}"> > <log:info>generate service unit zip file for ${su}</log:info> > <ant:zip > destfile="${basedir}/target/jbi_sa_${saname}/${su}.zip" > basedir="${jbi.assembly.dir}/${ > jbi.assembly.name}/${su}"/> > </j:forEach> > > <ant:zip destfile="${basedir}/target/${ > jbi.assembly.name}.zip"> > <ant:zipfileset dir="${jbi.assembly.dir > }/${jbi.assembly.name}/META-INF" prefix="META-INF"/> > <ant:zipfileset dir="${basedir}/target/jbi_sa_${saname}" > includes="*.zip"/> > </ant:zip> > </goal> Good idea. Thanks for the goals definitions ... Cheers, Guillaume Nodet bye > Raffaele > > > On Thu, 2006-03-09 at 12:22 +0100, Guillaume Nodet wrote: > > 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 > > > > > > > > > > >