Client Implementation Code - 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

About this task

This example shows the Java code that implements the HelloWorld client. In summary, the client connects to the SoapPort port on the SOAPService service and then proceeds to invoke each of the operations supported by the Greeter port type.

package demo.hw.client;

import java.io.File;
import java.net.URL;
import javax.xml.namespace.QName;
import org.apache.hello_world_soap_http.Greeter;
import org.apache.hello_world_soap_http.PingMeFault;
import org.apche.hello_world_soap_http.SOAPService;

public final class Client {

   private static final QName SERVICE_NAME = 
      new QName("http://apache.org/hello_world_soap_http", 
      "SOAPService");

   private Client() {}

   public static void main(String args[]) throws Exception {
      if (args.length == 0) {
         System.out.println("please specify wsdl");
         System.exit(1);
      }

      URL wsdlURL;
      File wsdlFile = new File(args[0]);
      if (wsdlFile.exists()) {
         wsdlURL = wsdlFile.toURL();
      } else {
         wsdlURL = new URL(args[0]);
      }

      System.out.println(wsdlURL);
      SOAPService ss = new SOAPService(wsdlURL, SERVICE_NAME);
      Greeter port = ss.getSoapPort();
      String resp;

      System.out.println("Invoking sayHi...");
      resp = port.sayHi();
      System.out.println("Server responded with: " + resp);
      System.out.println();

      System.out.println("Invoking greetMe...");
      resp = port.greetMe(System.getProperty("user.name"));
      System.out.println("Server responded with: " + resp);
      System.out.println();

      System.out.println("Invoking greetMeOneWay...");
      port.greetMeOneWay(System.getProperty("user.name"));
      System.out.println("No response from server as method is OneWay");
      System.out.println();
 
      try {
         System.out.println("Invoking pingMe, expecting exception...");
         port.pingMe();
      } catch (PingMeFault ex) {
         System.out.println(
            "Expected exception: PingMeFault has occurred.");
         System.out.println(ex.toString());
      }
      System.exit(0);
   }
}

The Client.main() function from the above example proceeds as follows:

Procedure

  1. The CXF runtime is implicitly initialized - that is, provided the CXF runtime classes are loaded. Hence, there is no need to call a special function in order to initialize CXF.
  2. The client expects a single string argument that gives the location of the WSDL contract for HelloWorld. The WSDL location is stored in wsdlURL .
  3. A new port object (which enables you to access the remote server endpoint) is created in two steps, as shown in the following code fragment:
    SOAPService ss = new SOAPService(wsdlURL, SERVICE_NAME);
    Greeter port = ss.getSoapPort();
    To create a new port object, you first create a service object (passing in the WSDL location and service name) and then call the appropriate get PortName () method to obtain an instance of the particular port you need. In this case, the SOAPService service supports only the SoapPort port, which is of Greeter type.
  4. The client proceeds to call each of the methods supported by the Greeter service endpoint interface.
  5. In the case of the pingMe() operation, the example code shows how to catch the PingMeFault fault exception.