JAX-WS es una API estandarizada para crear y consumir servicios web SOAP en Java. En este artículo, aprenderemos cómo descargar y usar el archivo jaxws-rt.jar, que es el paquete de tiempo de ejecución JAX-WS que contiene las clases de implementación y dependencias de la API JAX-WS.
Antes de descargar y usar el archivo jaxws-rt.jar, vamos a entender lo que es y lo que contiene.
JAX-WS significa API de Java para servicios web XML. Es un conjunto de interfaces y anotaciones que definen cómo crear y consumir servicios web SOAP en Java. Es parte de la plataforma Java estándar desde Java SE 6.
JAX-WS RI significa Implementación de Referencia JAX-WS. Es un proyecto de código abierto que proporciona una implementación completa y compatible de la API JAX-WS. También incluye algunas extensiones y herramientas para desarrollar servicios web, como wsimport, wsgen, wsdlc, etc.
El archivo jaxws-rt.jar es el paquete de tiempo de ejecución JAX-WS que contiene las clases de implementación y dependencias de la API JAX-WS y RI. Incluye los siguientes paquetes:
Hay diferentes formas de descargar el archivo jaxws-rt.jar. Estas son algunas de ellas:
Si está usando Maven como su herramienta de compilación, puede agregar la siguiente dependencia a su archivo pom.xml:
<dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws -rt</artifactId> <version>3.0.0</version> </dependency>
Esto descargará el archivo jaxws-rt.jar y sus dependencias transitivas desde el Repositorio Maven Central.
Si no está usando Maven, puede descargar el archivo jaxws-rt.jar desde el sitio web de Java2s. Este sitio web proporciona una colección de bibliotecas y recursos Java para diversos fines. Puede buscar jaxws-rt.jar en el cuadro de búsqueda y descargar la última versión o cualquier versión anterior que necesite.
Otra opción para descargar el archivo jaxws-rt.jar es utilizar las páginas GitHub del proyecto JAX-WS RI. Este proyecto aloja el código fuente y las versiones del JAX-WS RI. Puede navegar por la página de versiones y descargar el archivo jaxws-rt.jar desde el archivo zip o tar.gz correspondiente.
Para crear un servicio web SOAP usando JAX-WS, necesita hacer dos cosas: definir la interfaz de servicio e implementar la clase de servicio.
El enfoque ascendente es comenzar con la clase de servicio y usar anotaciones para definir la interfaz de servicio. Por ejemplo, supongamos que desea crear un servicio web de calculadora simple que pueda realizar operaciones de adición, resta, multiplicación y división. Puede escribir la clase de servicio de la siguiente manera:
import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; @WebService public class CalculatorService @WebMethod public double add(@WebParam(name = "x") double x, @WebParam(name = "y") double y) return x + y; @WebMethod public double subtract(@WebParam(name = "x") double x, @WebParam(name = "y") double y) return x - y; @WebMethod public double multiply(@WebParam(name = "x") double x, @WebParam(name = ") double y) return x * y @WebMethod public double divide(@WebParam(name = "x") double x, @WebParam(name = "y") double y) return x / y;
La anotación @WebService indica que esta clase es un punto final de servicio web. La anotación @WebMethod indica que cada método es una operación de servicio web. La anotación @WebParam indica el nombre de cada parámetro en el mensaje SOAP.
Para generar la interfaz de servicio (también conocida como SEI o Service Endpoint Interfaz) y el archivo WSDL (Web Service Description Language) de esta clase, puede usar la herramienta wsgen que viene con el archivo jaxws-rt.jar. Por ejemplo, puede ejecutar el siguiente comando en su terminal:
wsgen -cp . -d output -keep CalculatorService
El enfoque de arriba hacia abajo es comenzar con el archivo WSDL y usarlo para generar la interfaz de servicio y la clase. Por ejemplo, supongamos que tiene un archivo WSDL que define un servicio web de calculadora de la siguiente manera:
Para generar la interfaz de servicio y la clase desde este archivo WSDL, puede usar la herramienta wsimport que viene con el archivo jaxws-rt.jar. Por ejemplo, puede ejecutar el siguiente comando en su terminal:
wsimport -d output -keep CalculatorService.wsdl
Esto creará un archivo CalculatorService.class y un archivo CalculatorServiceSEI.class en el directorio de salida. El archivo CalculatorService.class es la clase de servicio que extiende la clase javax.xml.ws.Service y proporciona métodos para obtener el puerto del servicio web. El archivo CalculatorServiceSEI.class es la interfaz de servicio que define los métodos y anotaciones del servicio web.
Para consumir un servicio web SOAP usando JAX-WS, necesita hacer dos cosas: generar los recibos del cliente e invocar los métodos del servicio.
Los talones de cliente son las clases que actúan como proxies para el servicio web. Ocultan los detalles de la comunicación SOAP y le permiten invocar los métodos de servicio web como si fueran métodos locales. Para generar los talones de cliente, necesita tener el archivo WSDL del servicio web. Puede usar la herramienta wsimport para generar los stubs de cliente desde el archivo WSDL. Por ejemplo, si tiene el archivo CalculatorService.wsdl, puede ejecutar el siguiente comando en su terminal:
wsimport -d output -keep CalculatorService.wsdl
Una vez que tenga los talones del cliente, puede usarlos para invocar los métodos del servicio web. Necesita crear una instancia de la clase de servicio y obtener el puerto del servicio web. Luego, puede llamar a los métodos del puerto como si fueran métodos locales. Por ejemplo, si desea utilizar el servicio web de la calculadora, puede escribir el siguiente código:
import javax.xml.ws.WebServiceRef; clase pública CalculatorClient @WebServiceRef(wsdlLocation = "CalculatorService.wsdl") private static CalculatorService; public static void main(String[] args) try // Obtener el puerto del servicio web CalculatorServiceSEI port = service.getCalculatorServicePort(); // Invocar los métodos de servicio web double x = 10.0; double y = 5.0; doble resultado = 0.0; resultado = port.add(x, y); System.out.println("Adición: " + x + " + " + y + " = " + resultado); resultado = port.subtract(x, y); System.out.println("Subtraction: " + x + " - + + y + " resultado); result = port.multiply(x, y); System.out.println("Multiplication: " + x + " * + y + " = " + result); result = port.divide(x, y); System.out.println("Division: " + x + " + y + " = " result); catch (Exception e) e.printStackTrace(); Este código imprimirá la siguiente salida:
Suma: 10.0 + 5.0 = 15.0 Resta: 10.0 - 5.0 = 5.0 Multiplicación: 10.0 * 5.0 = 50.0 División: 10.0 / 5.0 = 2.0
JAX-WS es una API potente y fácil de usar para desarrollar y consumir servicios web SOAP en Java. Proporciona una forma estándar y portátil de crear e invocar servicios web en diferentes plataformas y tecnologías.