Java 17 SOAP client example

Max 99 Published: 11/09/2024

Java 17 SOAP client example

Here is a basic Java 17 SOAP client example using the JAX-WS API:

First, you need to have the jaxws-api and javax.xml.ws libraries in your classpath. If you're using Maven, you can add the following dependencies to your pom.xml file:


com.sun.xml.ws

jaxws-ri

2.3.1

Next, create a Java class that will send the SOAP request:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import javax.xml.soap.SOAPException;

import javax.xml.ws.Dispatch;

import javax.xml.ws.Service;

import javax.xml.ws.SOAPMessageContext;

public class SoapClient {

public static void main(String[] args) {

// Create the service

Service service = Service.create(SOAPMessageContext.class, "http://localhost:8080/soap/services");

// Get the port

Dispatch dispatch = service.getPort(Dispatch.class);

// Send the request

try (BufferedReader reader = new BufferedReader(new InputStreamReader(dispatch.invoke("http://localhost:8080/soap/services", "HelloWorldSoapServicePort")));) {

String line;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

} catch (SOAPException e) {

System.out.println(e.getMessage());

}

}

}

This example is very basic. In a real-world scenario, you would want to handle errors better and possibly send headers with your request.

Note: The Service class should be created by the Java compiler based on the WSDL file for your SOAP service. You can generate this class using the wsimport tool from the Oracle WebLogic Server SDK:

wsimport -jndi .wsdl

This will create a directory structure that you should use as-is for your project.

Java soap tutorial wsdl

Here's a Java Soap Tutorial with WSDL:

What is SOAP?

Simple Object Access Protocol (SOAP) is a protocol for exchanging structured information in the implementation of web services. It uses XML (Extensible Markup Language) to define the structure and content of the data sent between systems.

What is WSDL?

Web Service Description Language (WSDL) is an XML-based language used to describe the functionality offered by a Web service. It defines the interface, or contract, between two applications communicating over the web. In other words, WSDL is an XML file that describes the methods available in a SOAP web service.

Creating a SOAP Web Service with Java

To create a SOAP web service using Java, you need to follow these steps:

Create a new Maven project: Create a new Maven project in your favorite IDE (e.g., Eclipse, IntelliJ IDEA). Make sure that the project has the following dependencies: wsdl4j: This is a Java library for creating and processing WSDL files. jax-ws-rt: This is a JAX-WS Runtime Environment that provides the functionality needed to create and consume SOAP-based web services. Create a WSDL file: Create a new XML file named MyService.wsdl (or any other name you prefer). In this file, define your web service using the following elements: wsdl:definitions: This element defines the namespace of your web service. wsdl:service: This element defines the name and port number of your web service. wsdl:portType: This element defines the operations (methods) available in your web service.

Here's an example WSDL file:


<definitions

targetNamespace="http://my.service.com/"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

name="MyService"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

Create a Java class for your web service: Create a new Java class named MyService.java that extends the WebService class. In this class, define the methods (operations) available in your web service using the following annotation: @WebMethod: This annotation defines the method name and its corresponding XML elements.

Here's an example Java class:

package my.service.com;

import javax.jws.WebService;

import javax.jws.WebMethod;

import javax.xml.ws.*;

public class MyService {

public String sayHello(String name) {

return "Hello, " + name + "!";

}

}

Compile your Java class: Compile your Java class to generate the necessary WSDL and service files. Deploy your web service: Deploy your web service using a web server (e.g., Apache Tomcat).

Consuming the SOAP Web Service

To consume the SOAP web service, you need to follow these steps:

Create a new Maven project: Create a new Maven project in your favorite IDE. Add the necessary dependencies: Add the following dependencies to your project: wsdl4j: This is a Java library for creating and processing WSDL files. jax-ws-rt: This is a JAX-WS Runtime Environment that provides the functionality needed to create and consume SOAP-based web services. Create a new XML file: Create a new XML file named consumeService.xml (or any other name you prefer). In this file, define your client using the following elements: wsdl:client: This element defines the namespace of your web service. Compile your XML file: Compile your XML file to generate the necessary Java files. Call the SOAP web service: Use the generated Java files to call the SOAP web service.

Conclusion

In this tutorial, we learned how to create a SOAP web service using Java and WSDL. We also learned how to consume the web service using another Java program. With these steps, you can now create your own SOAP-based web services and clients using Java.

Additional Resources

For more information on creating SOAP-based web services and clients with Java, check out the following resources:

Oracle's JAX-WS tutorial: https://docs.oracle.com/javase/tutorial/jaxws/. IBM's Web Services tutorial: https://www.ibm.com/developerworks/webservices/。 W3C's SOAP tutorial: https://www.w3.org/TR/soap11-part1/.