Utiliser l'API de services Web distants

Vous pouvez utiliser les services Web IBM® Rational Asset Manager dans vos applications.

Pourquoi et quand exécuter cette tâche

Avertissement : L'API de services Web et le mécanisme de chargement et téléchargement HTTP sont des API internes et ne sont pas pris en charge. Utilisez-les à vos risques et périls.

Rational Asset Manager publie des services Web vous permettant d'interagir avec le référentiel. Utilisez le fichier WSDL (Web Services Descriptor Language) de Rational Asset Manager pour développer vos propres applications d'interaction avec le serveur Rational Asset Manager.

Procédure

Pour vous connecter au serveur Rational Asset Manager à l'aide des services Web :

  1. Accédez à la page Extensions dans le client Web de Rational Asset Manager.
  2. Sous Services Web, cliquez sur le lien RAM1.wsdl afin de télécharger le fichier WSDL.
  3. Pour pouvoir utiliser les services Web d'interaction avec le serveur, vous devez générer les proxys côté client à partir du fichier WSDL.
  4. Une fois les proxys générés pour le fichier WSDL, accédez à l'URL de services Web suivante : http://serveur:port/com.ibm.ram.repository.web.ws.was/RAMServices, où serveur est le nom d'hôte du serveur, port est le numéro de port, com.ibm.ram.repository.web.ws.was est l'application de services Web et RAMServices est l'emplacement du service Web. Le client doit autoriser la redirection lorsqu'il émet l'appel, car RAMServices redirige automatiquement l'appel vers l'emplacement approprié.

    Les clients peuvent accéder à http://serveur:port/com.ibm.ram.repository.web.ws.was/RAMServices pour obtenir les services. Cet emplacement unique d'appel de services Web redirige le client soit vers l'emplacement d'authentification standard, à l'URL http://serveur:port/com.ibm.ram.repository.web.ws.was/RAMSecure/services/RAM1, soit vers l'emplacement de serveur anonyme, à l'URL http://serveur:port/com.ibm.ram.repository.web.ws.was/services/RAM1, selon que la demande contient ou non des données d'identification d'utilisateur.

    Si le client préfère accéder directement au service anonyme ou au service avec authentification standard, il peut le faire en utilisant le point de terminaison http://serveur:port/com.ibm.ram.repository.web.ws.was/services/RAM1 (pour le service anonyme) ou le point de terminaison http://serveur:port/com.ibm.ram.repository.web.ws.was/RAMSecure/services/RAM1 (pour le service avec authentification standard).

  5. Connectez-vous au serveur :
    • Si vous souhaitez vous connecter en tant qu'utilisateur identifié, indiquez vos nom d'utilisateur et mot de passe en utilisant le mécanisme d'authentification standard HTTP.
    • Si vous souhaitez vous connecter anonymement, n'indiquez pas de nom d'utilisateur ni de mot de passe.
  6. Rational Asset Manager fonctionne avec un système de gestion des licences octroyant une licence à chaque utilisateur qui se connecte au serveur. Si vous souhaitez utiliser la même licence chaque fois que vous émettez un appel, mettez en cache la connexion au serveur. Vos sessions conserveront ainsi la même licence.
  7. Utilisez l'API décrite dans le Javadoc de Rational Asset Manager, que vous trouverez dans la section Référence de l'aide.

Résultats

A faire : Pour établir une connexion sécurisée SSL (protocole HTTPS), vérifiez que la clé publique du serveur se trouve dans le fichier de clés du client.

Exemple

Voici un exemple de classe pour appeler des services Web :
public class RAMClient {
  public static final String RAM_LOCATION = "http://serveur:port/com.ibm.ram.repository.web.ws.was";

  public void doSearchAndDownload() throws Exception {
    String SECURE_PREFIX = "/RAMSecure"; // A utiliser lorsque le nom d'utilisateur et le mot de passe sont fournis
    String RAM_WS_LOCATION = RAM_LOCATION + SECURE_PREFIX + "/services/RAM1";
    String USERNAME = "admin";
    String PASSWORD = "admin";

    // Construire la souche (stub) des services Web
    RAM1 ramWebService = new RAM1ServiceLocator().getRAM1(new URL(RAM_WS_LOCATION));
    if (ramWebService instanceof Stub) {
      Stub axisStub = (Stub) ramWebService;
      // Ecrire le nom d'utilisateur et le mot de passe
      axisStub.setUsername(USERNAME);
      axisStub.setPassword(PASSWORD);
    }

    // Obtenir les constantes pour invoquer les services Web
    Constants constants = ramWebService.getConstants();

    // Rechercher les actifs dont le nom commence par 'soa' et appartenant à l'utilisateur 'admin'
    String[] queries = new String[2];
    queries[0] = constants.getQUERY_NAME()+":(soa*)";
    queries[1] = constants.getQUERY_OWNER()+":(admin)";
    SearchResultSO searchResults = ramWebService.search(queries, null, true, 
      constants.getSORT_LAST_MODIFIED(), 0, -1, -1, false, Locale.getDefault().toString());

    // Télécharger les actifs résultant de la recherche
    String RAM_ASSET_LOCATION = RAM_LOCATION + SECURE_PREFIX + "/RAMAssetAccess.jsp?";
    SearchAssetInformationSO[] searchAssets = searchResults.getSearchAssets();
    for (int ac = 0; ac < searchAssets.length; ac++) {
      String assetID = searchAssets[ac].getGUID();
      String assetVersion = searchAssets[ac].getVersion();

      String encodedAssetID = URLEncoder.encode(assetID, "UTF-8");
      String encodedAssetVersion = URLEncoder.encode(assetVersion, "UTF-8");

      String assetLocation = RAM_ASSET_LOCATION + "assetid="+encodedAssetID+"&version="+encodedAssetVersion;
      downloadAssetUsingHTTPGet(assetLocation, USERNAME, PASSWORD);
    }
  }

  private void downloadAssetUsingHTTPGet(String assetLocation, String username, String password) {
    // Télécharger l'actif
  }
}

Commentaires