3 Replies Latest reply on Dec 13, 2007 7:02 PM by Guillaume Nodet

    Does components such as Drools or Saxon have a WSDL?

    unknown user Newbie

      Howdy,

       

      Does any of the SMX container components such as SAXON have a WSDL that describes the abstract portions of the service itself?

        • 1. Re: Does components such as Drools or Saxon have a WSDL?
          Torsten Mielke Apprentice

          There is no WSDL used internally by ServiceMix when invoking on a Drools components. All required runtime information is in the normalized message. Have you checked out the loan-broker-bpel demo already? It uses Drools.

          • 2. Re: Does components such as Drools or Saxon have a WSDL?
            unknown user Newbie

            This is more of a generic question led on by the JBI spec in which is says things like "all services are defined by a WSDL".  This is a bit misleading.  This was the expected answer.

             

            In reality only JSR-181's (webservice) or CXF (webservice or just service) services are really represented by a WSDL.

            • 3. Re: Does components such as Drools or Saxon have a WSDL?
              Guillaume Nodet Newbie

              The JBI specification is not very clear in mandating a WSDL for each service inside the bus.  Anyway, the ServiceMix JBI container will not reject an endpoint activation if there is no associated WSDL, nor will it check the validity of the WSDL.  I suppose this may be debatable ...  Anyway, the thing is that it is not a requirement for ServiceMix.

               

              That said, all JBI endpoints can usually be created so that they are associated with a WSDL.  But it will be up to the user to write it and specify it on the endpoint configuration (if this is not doable, then this is a bug).  There are a few exceptions though: servicemix-jsr181 and servicemix-cxf-se are able to generate a WSDL because they use the deployed POJO and use a java to wsdl tool.  In such a case, the generated WSDL will be used and associated to the activated endpoint.   Another exception is the servicemix-http (and some eip patterns) that will look for the WSDL of their defined target and expose it for their own endpoint.  For example the HTTP BC will grab the wsdl from the servicemix-jsr181, add the needed informations (relative to soap) and expose that WSDL over http.

               

              But in general, such things are not possible, so the only rule is to write a WSDL and configure it (if you really need / want one for a given endpoint).  For drools or saxon, there is not way to generate a wsdl and it would depend on the rules defined or on the xslt deployed.  But in SOA terms, I'd think that you would first write the WSDL to describe the service, then choose a technology to implement it (rules engine, xslt stylesheet, or whatever)....