El API JAX-RPC
Introducción
EL API Java para RPC basado en XML (JAX-RPC) hace posible escribir
aplicaciones Java que usen XML para hacer llamadas a procedimientos remotos (RPC).
El lenguaje Java ya tiene dos APIs para hacer llamadas a procedimientoa remotos, Java IDL
y Java RMI. Los tres tienen un API para empaquetar/desempaquetar argumentos y para
transmitir y recibir llamadas a procedimientos. La diferencia es que
JAX-RPC está basado en XML y está dirigido a servicios Web. Java IDL
está basado en la arquitectura CORBA y usa el "Object Management Groups Interface
Definition Language" (OMG IDL). RMI está basado en RPC donde ámbos métodos, el llamador y
el llamado están escritos en lenguaje Java--aunque con RMI sobre IIOP, los métodos
invocados podrían estár en otro lenguaje. Sun continuará soportando CORBA y RMI además de
desarrollar JAX-RPC, ya que cada uno sirve a distintas necesidades y
tiene su propio conjunto de usuarios.
Todas las variedades de RPC son bastante complejas, implicando el mapeo y el mapeo inverso
de los tipos de datos y el empaquetado y desempaquetado de los argumentos. Sin embargo,
estos tienen lugar detrás de la escena y no son visibles para el usuario.
JAX-RPC continúa este modelo, lo que significa que un cliente que está
usando RPC basado en XML desde el lenguaje Java no necesita trabajar con XML o hacer
ningún mapeo directamente.
Usar JAX-RPC
JAX-RPC hace sencillo el uso de servicios web, y también facilita el
desarrollo de servicios web, especialmente si usamos la plataforma J2EE. Un servicio Web
basado en RPC básicamente es una colección de procedimientos que pueden ser llamados por
un cliente remoto desde Internet. El propio servicio es una aplciación servidora
desarrollada sobre un contenedor del lado del servidor que implementa procedimientos que
está disponibles para llamadas de clientes. Por ejemplo, un típico servicio Web basado en
RPC es un servicio de consulta de stocks que toma una peticion SOAP paar el precio de
un material especificado y devuelve el precio mediante SOAP.
Un servicio Web necesita estar disponible para clientes potenciales, lo que puede hacer,
por ejemplo, describiéndose a sí mismo usando el "Web Services Description Language"
(WSDL). Un consumidor (un cliente Web) puede entonces buscar el documento WSDL para
acceder al servicio. Un consumidor usando el lenguaje Java usa
JAX-RPC para enviar su petición al servicio, que podría o no, estar
desarrollado en una plataforma Java. La inversa también es posible, es decir, un cliente
usando otro lenguaje de programación puede enviar su petición a un servicio que ha
sido definido y desarrollado sobre una plataforma Java.
Aunque JAX-RPC implementa una llamada a procedimiento remoto como una
petición y una respuesta de mensaje SOAP, un usuario JAX-RPC está aislado
de este nivel de detalle. Por eso, bajo la superficie, JAX-RPC
realmente es una forma especializada de mensajería SOAP. Por el contrario, JAXM
es una forma robusta de mensajería SOAP, proporcionando al desarrollador toda su riqueza. La
siguiente lista incluye todas las características que JAXM puede
proporcionar y que RPC, incluyendo JAX-RPC,
generalmente no proporcionan:
- Mensajería asíncrona.
- Enrutar un mensaje a más de una parte.
- Realizar mensajería con características como la entrega garantizada.
JAX-RPC es la mejor elección para aplicaciones que desean evitar
la complejidad de la mensajería SOAP y donde la comunicación usando el modelo RPC es
una buena idea. Lo importante es que siempre que usemos JAXM o
JAX-RPC, podremos hacer mensajería XML de forma conveniente usando
el lenguaje de programación Java.