JAX-RPC
La especificación Java API for XML-based RPC (JAX-RPC) permite desarrollar clientes de servicios web y servicios web interoperativos y portátiles basados en SOAP. JAX-RPC 1.1 proporciona API básicas para el desarrollo y el despliegue de servicios web en una plataforma Java™ y es una parte de la plataforma de servicios web para Java EE (Java Platform, Enterprise Edition). La plataforma Java EE permite desarrollar servicios web portátiles.
WebSphere Application Server implementa estándares JAX-RPC 1.1.
El estándar JAX-RPC cubre el modelo de programación y los enlaces para la utilización de WSDL (Web Services Description Language) para servicios web en lenguaje Java. JAX-RPC simplifica el desarrollo de servicios web al protegerle de la complejidad subyacente de la comunicación SOAP.
En la superficie, JAX-RPC parece otra creación de instancias de RMI (Remote Method Invocation). Básicamente, JAX-RPC permite a los clientes acceder a un servicio web como si el servicio web fuera un objeto local correlacionado con el espacio de direcciones del cliente, aunque el proveedor del servicio web se encuentre en otra parte del mundo. JAX-RPC se ejecuta utilizando el protocolo SOAP basado en XML, que se ejecuta normalmente encima de HTTP.
JAX-RPC define las correlaciones entre los tipos de puerto WSDL y las interfaces Java, así como entre el lenguaje Java y los tipos de esquema XML (Extensible Markup Language).
package com.ibm.mybank.ejb;
import java.rmi.RemoteException;
import com.ibm.mybank.exception.InsufficientFundsException;
/**
* Interfaz remota para Enterprise Bean: Transfer
*/
public interface Transfer_SEI extends java.rmi.Remote {
public void transferFunds(int fromAcctId, int toAcctId, float amount)
throws java.rmi.RemoteException;
}
- La interfaz debe ampliar java.rmi.Remote, como RMI.
- Los métodos deben crear java.rmi.RemoteException.
- Los parámetros de método no pueden ser referencias remotas.
- El parámetro de método debe ser uno de los parámetros soportados por la
especificación JAX-RPC. En la siguiente lista se proporcionan ejemplos de los
parámetros de método que están soportados. Si desea ver una lista completa de los
parámetros de método, consulte la especificación JAX-RPC.
- Tipos primitivos: boolean, byte, double, float, short, int y long
- Envoltura de objeto de tipos primitivos: java.lang.Boolean, java.lang.Byte, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang.Short
- java.lang.String
- java.lang.BigDecimal
- java.lang.BigInteger
- java.lang.Calendar
- java.lang.Date
- Los métodos pueden tomar objetos de valor formados por un compuesto de los tres tipos anteriores, además de objetos de valor agregado.
Un cliente crea un stub e invoca métodos en él. El stub actúa como un proxy para el servicio web. Desde el punto de vista del código del cliente, parece una invocación de un método local. No obstante, cada invocación de método se organiza en el servidor remoto. La organización incluye la codificación de la invocación de método en XML, tal como se prescribe en el protocolo SOAP.
- Interfaz de servicio:: Una fábrica de invocación dinámica o de objetos stub y objetos de proxy que se utilizan para invocar métodos.
- Clase ServiceFactory:: Una fábrica de servicios.
- loadService
El método loadService se proporciona en WebSphere Application Server Versión 6.0 para generar el localizador de servicios que necesita la implementación de JAX-RPC. Si recuerda, en las versiones anteriores no existía ninguna forma específica de adquirir el localizador de servicios generado. Para clientes gestionados ha utilizado un método JNDI para obtener el localizador de servicios y para clientes no gestionados, tuvo que crear instancias del localizador de servicios específico de IBM, ServiceLocator service=new ServiceLocator(...);, el cual no se puede migrar. Los parámetros loadService son:
- wsdlDocumentLocation: un URL para la ubicación de documentos WSDL para el servicio o null.
- serviceName: un nombre cualificado para el servicio
- properties: un conjunto de propiedades específicas de la implementación que permiten ubicar la clase de implementación de servicios generada.
- isUserInRoleEl método isUserInRole devuelve un valor booleano que indica si el usuario autenticado de la invocación de método actual en la instancia de punto final se incluye en el rol lógico especificado.
- role: el parámetro role es una serie que especifica el nombre del rol.
- Servicio
- Interfaz de llamada: se utiliza para la invocación dinámica
- Interfaz de stubs: interfaz base de objetos stub
Si utiliza un stub para acceder al proveedor de servicios web, la mayoría de los detalles de la API JAX-RPC están ocultos. El cliente crear una ServiceFactory (java.xml.rpc.ServiceFactory). El cliente crea una instancia de un servicio (java.xml.rpc.Service) a partir de la ServiceFactory. El servicio es un objeto de fábrica que crea el puerto. El puerto es la interfaz de punto final de servicio remoto con el servicio web. En el caso de DII, el objeto de servicio se utiliza para crear los objetos de llamada, que se pueden configurar para que llamen a los métodos en el puerto del servicio web.
Para obtener una lista completa de los estándares y las especificaciones a los que se da soporte, consulte las especificaciones y la documentación de la API de los servicios Web.