Les Services Web
[20 mn 阅读 - 发表时间 10/10/2003 - 对象 : Confirmé]
|
   
|
作者
VI - Les Services Web avec UDDI
Pour publier ou rechercher des Services Web, les développeurs font appel à la technologie Universal Description, Discovery and Integration. La découverte de Services Web nécessite la connexion à un annuaire UDDI. Certaines entreprises mettent publiquement à disposition de tels annuaires. On pourra ainsi utiliser l’adresse http://uddi.sap.com/UDDI/api/inquiry/ pour effectuer des requêtes dans l’annuaire de SAP. Une entité nommée l’UDDI Business Registry (UBR ou Public Cloud) regroupe les annuaires de plusieurs compagnies. Chaque modification apportée sur l’un des nœuds est répercutée sur les autres. Les requêtes UDDI fonctionnent grâce au protocole SOAP. On pourrait alors programmer une requête UDDI, mais il s’agirait d’un travail relativement fastidieux. Pour nous faciliter la tâche nous allons exploiter la bibliothèque JAXR (Java API for XML Registries) disponible sur le site Sun Microsystem ou encore dans le Java Web Services Developer Pack (JWSDP).
Au préalable, il faut savoir que les informations des annuaires se classent en trois catégories : les pages jaunes, blanches, vertes.
Elles correspondent respectivement aux informations concernant une organisation, à la description du service suivant des catégories et enfin aux informations techniques permettant d’accéder au service (URL par exemple).
Dans l’exemple suivant, nous allons dresser la liste des Services Web proposés par une organisation dont nous connaissons le nom. Dans un premier temps, nous allons commencer par exécuter le programme JAXR Browser proposé dans le JWSDP pour ajouter quelques organisations de test dans un annuaire UDDI local disponible à l’adresse http://localhost:8080/registryServer.
On constate à cet effet que la publication d’un Service Web nécessite de s’authentifier auprès du serveur (par défaut dans le JWSDP il s’agit de l’utilisateur « testuser » avec le mot de passe « testuser ».
L’exemple suivant permet de découvrir les organisations nommées « ProgX » :
ConnectonFactory factory = CnonnectionFactory.newInstance() ;
Properties props = new Properties() ;
Props.SetProperty(“javax.xml.registry.queryManagerURL”,http://localhost:8080/regestryServer);
Factory.SetProperties(props);
Connection connection = factory.createConnection();
RegistryService registryService = connection.getRegistryService();
BusinessQueryManager queryManager = registryService.getBusinessQueryManager();
BusinessLifeCycleManager lifeCycle = registryService.getBussinessLifeCycleManager();
Collection namePatterns = new ArrayList();
namePatterns.add(lifeCycle.createInternationalString(“ProgX”));
BulkResponse response = queryManager.findOrganizations(null, namePatterns,null,null,null,null);
Collection orgs = response.getCollection(); |
Chaque élément de la collection ainsi obtenue représente une instance de la classe Organization dont nous pouvons récupérer une collection de Service grâce à getServices().
Leur détails techniques, comme leur point d’accès, sont découverts en récupérant une collection de ServiceBinding par l’entremise de getServiceBindings().
Nous avons ici utilisé la méthode findOrganizations(), et un seul de ses paramètres.
L’interface BusinessQueryManager offre également la possibilité de rechercher directement des Services Web, des ServiveBindings ou encore des associations entre organisations.
|