Backend
JAX-WS
Conceptos clave
- API Java™ para crear y consumir servicios web basados en XML.
- Java API para XML (integrado dentro del stack de tecnologías Java EE/Jakarta EE).
- Modelo orientado a RPC sobre SOAP, soportando también estilos document/literal.
- Soporte para asincronía mediante callbacks o polling.
- Basado en anotaciones (@WebService, @WebMethod, @WebParam, etc.).
- Generación automática de artefactos:
wsimport: genera clases cliente a partir del WSDL.wsgen: genera WSDL y stubs desde clases Java.
- Permite despliegue tanto en servidores Java EE como en aplicaciones standalone.
- Interoperabilidad con otros stacks SOAP (.NET, PHP-SOAP, IBM, Oracle…).
- Seguridad extensible (WS-Security, firma, cifrado, tokens).
- Binding XML–Java mediante JAXB (mapeo automático entre objetos Java y estructuras XML).
- Manejo de handlers para interceptar mensajes SOAP.
- Soporte para transporte HTTP/HTTPS y extensiones a otros protocolos.
Arquitectura y flujo general
- Componentes:
- Servicios (
@WebService) - Endpoints (publicación del servicio)
- WSDL (descripción del servicio)
- Artefactos generados (stubs, bindings)
- Servicios (
- Flujo:
- Un cliente invoca un método → se genera un mensaje SOAP → se envía al endpoint → el servidor procesa y responde con otro SOAP → se transforma de vuelta en objetos Java mediante JAXB.
Migración y estado actual
- JAX-WS fue estándar central en Java EE hasta Java 10.
- A partir de Java 11 dejó de incluirse en el JDK; ahora se usa como dependencia externa (Jakarta XML Web Services).
- Para entornos modernos basados en JSON suele preferirse REST/HTTP o frameworks como Web Services RESTful, pero SOAP sigue siendo clave en entornos corporativos.
Ventajas
- Alta interoperabilidad con infraestructuras empresariales basadas en SOAP.
- Contratos estrictos mediante WSDL.
- Tipado fuerte vía JAXB.
- Facilidad de uso mediante anotaciones.
Limitaciones
- Verborrea y complejidad del estándar SOAP.
- Menor flexibilidad frente a servicios REST.
- Dependencia de herramientas externas en Java 11+.
Herramientas habituales
- wsimport
Genera artefactos cliente a partir de un WSDL. - wsgen
Genera WSDL y clases auxiliares desde código Java. - JAXB
Mapea XML ↔ objetos Java. - Handlers
Extienden el procesamiento de mensajes.
Ejemplo: declaración básica de un servicio
Código
import javax.jws.WebService;
@WebService
public class HolaService {
public String saludar(String nombre) {
return "Hola " + nombre;
}
}
`
Publicación de un endpoint (standalone)
Código
import javax.xml.ws.Endpoint;
public class Publicador {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8080/hola", new HolaService());
}
}
Ejemplo de cliente generado con wsimport
Código
wsimport -s src -p com.ejemplo.hola http://localhost:8080/hola?wsdl
Recursos y documentación
¿Te gusta este contenido? Suscríbete vía RSS