JAX-RPC
La spécification JAX-RPC (Java API for XML-based RPC) permet de développer des services Web et des clients de service Web interopérables et transférables et qui utilisent le protocole SOAP. JAX-RPC 1.1 fournit des API de base pour le développement et le déploiement de services Web sur une plateforme Java™ et constitue un élément des services Web pour une plateforme Java EE (Java Platform, Enterprise Edition). La plateforme Java EE permet le développement de services Web portables.
WebSphere Application Server implémente les normes JAX-RPC 1.1.
La norme JAX-RPC traite du modèle de programmation et des liaisons permettant l'utilisation de WSDL (Web Services Description Language) pour les services Web en langage Java. JAX-RPC simplifie le développement des services Web en vous épargnant la complexité des communications SOAP sous-jacentes.
En surface, JAX-RPC ressemble à une instanciation de l'appel de méthode à distance (RMI). En fait, JAX-RPC permet à des clients d'accéder à un service Web comme s'il s'agissait d'un objet local mappé vers l'espace d'adressage du client même si le fournisseur du service Web est très éloigné de ces clients. JAX-RPC utilise le protocole SOAP (basé sur XML) qui s'exécute en général sur HTTP.
JAX-RPC définit les mappages entre les types de port WSDL et les interfaces Java ainsi que les mappages entre le langage Java et les types de schéma XML (Extensible Markup Language).
package com.ibm.mybank.ejb;
import java.rmi.RemoteException;
import com.ibm.mybank.exception.InsufficientFundsException;
/**
* Interface distante pour bean enterprise : Transfer
*/
public interface Transfer_SEI extends java.rmi.Remote {
public void transferFunds(int fromAcctId, int toAcctId, float amount)
throws java.rmi.RemoteException;
}
- L'interface doit étendre java.rmi.Remote de la même façon que l'appel RMI.
- Les méthodes doivent créer java.rmi.RemoteException.
- Les paramètres de méthode ne peuvent pas être des références distantes.
- Un paramètre de méthode doit être pris en charge par la spécification JAX-RPC. La liste suivante indique des exemples de paramètres de méthode pris en charge. Pour obtenir la liste complète de ces paramètres, voir la spécification JAX-RPC.
- Types primitifs : boolean, byte, double, float, short, int et long
- Encapsuleurs d'objet de type primitif : 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
- Une méthode peut accepter des objets Value, qui sont une combinaison des types précités, ainsi que des objets Aggregate Value.
Un client crée un raccord et appelle des méthodes sur ce raccord. Le raccord sert de proxy pour le service Web. Du point de vue du code du client, cela ressemble à un appel de méthode locale. En réalité, chaque appel de méthode est sérialisé sur le serveur distant. La sérialisation consiste à encoder l'appel de méthode en XML selon les prescriptions du protocole SOAP.
- Interface de service : fabrique de raccords ou d'appel dynamique et objets proxy utilisés pour appeler des méthodes.
- Classe ServiceFactory : fabrique de services.
- loadService
La méthode loadService fournie par WebSphere Application Server Version 6.0 permet de générer le localisateur de service requis par une implémentation JAX-RPC. Les versions précédentes de WAS n'offraient aucun moyen spécifique d'acquérir un localisateur de service généré. Pour des clients gérés, vous utilisiez une méthode JNDI afin d'obtenir le localisateur de service et, pour des clients non gérés, vous deviez instancier le localisateur de service spécifique d'IBM, ServiceLocator service=new ServiceLocator(...) qui n'offre pas la portabilité. Les paramètres loadService sont les suivants :
- wsdlDocumentLocation : URL de l'emplacement du document WSDL pour le service ou null.
- serviceName : nom qualifié du service ;
- properties : ensemble de propriétés spécifiques de l'implémentation qui permet de localiser la classe d'implémentation du service généré.
- isUserInRoleLa méthode isUserInRole renvoie un booléen qui indique si l'utilisateur authentifié pour l'appel de méthode en cours sur l'instance de noeud final est inclus dans le rôle logique spécifié.
- role : le paramètre Role est une chaîne qui définit le nom du rôle.
- Service
- Interface d'appel : utilisée pour les appels dynamiques
- Interface de raccord : interface de base pour les raccords
Si vous utilisez un raccord pour accéder au fournisseur de services Web, la plupart des détails de l'API JAX-RPC vous sont invisibles. Le client crée une classe ServiceFactory (java.xml.rpc.ServiceFactory). Le client instancie un service (java.xml.rpc.Service) à partir de cette classe. Le service est un objet Factory qui crée le port. Le port est l'interface de noeud final de service distant qui permet d'accéder au service Web. Dans le cas de DII, l'objet Service permet de créer des objets Call que vous pouvez configurer pour appeler des méthodes sur le port du service Web.
Pour obtenir la liste complète des normes et spécifications prises en charge, voir les spécifications des services Web et la documentation des API.