Provider examples - 8.0

Talend ESB Service Developer Guide

Version
8.0
Language
English
Product
Talend Data Fabric
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
Module
Talend ESB
Talend Runtime
Content
Design and Development
Installation and Upgrade
Last publication date
2023-11-06

The following shows a Provider implementation that works with SOAPMessage objects in message mode.

import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;

@WebServiceProvider(portName="stockQuoteReporterPort" 
   serviceName="stockQuoteReporter")
@ServiceMode(value="Service.Mode.MESSAGE")
public class  stockQuoteReporterProvider implements Provider<SOAPMessage> {
   public stockQuoteReporterProvider() {}

   public SOAPMessage invoke(SOAPMessage request) {
      SOAPBody requestBody = request.getSOAPBody();
      if (requestBody.getElementName.getLocalName.equals("getStockPrice")) {
         MessageFactory mf = MessageFactory.newInstance();
         SOAPFactory sf = SOAPFactory.newInstance();

         SOAPMessage response = mf.createMessage();
         SOAPBody respBody = response.getSOAPBody();
         Name bodyName = sf.createName("getStockPriceResponse");
         respBody.addBodyElement(bodyName);
         SOAPElement respContent = respBody.addChildElement("price");
         respContent.setValue("123.00");
         response.saveChanges();
         return response;
      }
      ...
   }
}

The code does the following:

  1. Specifies that the following class implements a Provider object that implements the service whose wsdl:service element is named stockQuoteReporter and whose wsdl:port element is named stockQuoteReporterPort .

  2. Specifies that this Provider implementation uses message mode.

  3. Provides the required default public constructor.

  4. Provides an implementation of the invoke() method that takes a SOAPMessage object and returns a SOAPMessage object.

  5. Extracts the request message from the body of the incoming SOAP message.

  6. Checks the root element of the request message to determine how to process the request.

  7. Creates the factories needed for building the response.

  8. Builds the SOAP message for the response.

  9. Returns the response as a SOAPMessage object.

The following shows an example of a Provider implementation using DOMSource objects in payload mode.

import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;

@WebServiceProvider(portName="stockQuoteReporterPort" 
   serviceName="stockQuoteReporter")
@ServiceMode(value="Service.Mode.PAYLOAD")
public class stockQuoteReporterProvider implements Provider<DOMSource> {
   public stockQuoteReporterProvider() {}

   public DOMSource invoke(DOMSource request) {
      DOMSource response = new DOMSource();
      ...
      return response;
   }
}

The code does the following:

  1. Specifies that the class implements a Provider object that implements the service whose wsdl:service element is named stockQuoteReporter and whose wsdl:port element is named stockQuoteReporterPort .

  2. Specifies that this Provider implementation uses payload mode.

  3. Provides the required default public constructor.

  4. Provides an implementation of the invoke() method that takes a DOMSource object and returns a DOMSource object.

The following shows a Provider implementation that works with SOAPMessage objects in message mode.

import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;

@WebServiceProvider(portName="stockQuoteReporterPort" 
   serviceName="stockQuoteReporter")
@ServiceMode(value="Service.Mode.MESSAGE")
public class  stockQuoteReporterProvider implements Provider<SOAPMessage> {
   public stockQuoteReporterProvider() {}

   public SOAPMessage invoke(SOAPMessage request) {
      SOAPBody requestBody = request.getSOAPBody();
      if (requestBody.getElementName.getLocalName.equals("getStockPrice")) {
         MessageFactory mf = MessageFactory.newInstance();
         SOAPFactory sf = SOAPFactory.newInstance();

         SOAPMessage response = mf.createMessage();
         SOAPBody respBody = response.getSOAPBody();
         Name bodyName = sf.createName("getStockPriceResponse");
         respBody.addBodyElement(bodyName);
         SOAPElement respContent = respBody.addChildElement("price");
         respContent.setValue("123.00");
         response.saveChanges();
         return response;
      }
      ...
   }
}

The code does the following:

  1. Specifies that the following class implements a Provider object that implements the service whose wsdl:service element is named stockQuoteReporter and whose wsdl:port element is named stockQuoteReporterPort .

  2. Specifies that this Provider implementation uses message mode.

  3. Provides the required default public constructor.

  4. Provides an implementation of the invoke() method that takes a SOAPMessage object and returns a SOAPMessage object.

  5. Extracts the request message from the body of the incoming SOAP message.

  6. Checks the root element of the request message to determine how to process the request.

  7. Creates the factories needed for building the response.

  8. Builds the SOAP message for the response.

  9. Returns the response as a SOAPMessage object.

The following shows an example of a Provider implementation using DOMSource objects in payload mode.

import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;

@WebServiceProvider(portName="stockQuoteReporterPort" 
   serviceName="stockQuoteReporter")
@ServiceMode(value="Service.Mode.PAYLOAD")
public class stockQuoteReporterProvider implements Provider<DOMSource> {
   public stockQuoteReporterProvider() {}

   public DOMSource invoke(DOMSource request) {
      DOMSource response = new DOMSource();
      ...
      return response;
   }
}

The code does the following:

  1. Specifies that the class implements a Provider object that implements the service whose wsdl:service element is named stockQuoteReporter and whose wsdl:port element is named stockQuoteReporterPort .

  2. Specifies that this Provider implementation uses payload mode.

  3. Provides the required default public constructor.

  4. Provides an implementation of the invoke() method that takes a DOMSource object and returns a DOMSource object.