Использование API удаленных веб-служб

В своих приложениях можно использовать веб-службы IBM® Rational Asset Manager.

Об этой задаче

Внимание: API веб-служб и механизм передачи данных между клиентом и сервером по протоколу HTTP являются внутренним API и не поддерживаются. Используйте на свой страх и риск.

Rational Asset Manager публикует веб-службы для работы с хранилищем. Для создания собственных приложений, взаимодействующих с сервером Rational Asset Manager, используется файл WSDL (язык описания веб-служб) Rational Asset Manager.

Процедура

Для подключения к серверу Rational Asset Manager через веб-службы выполните следующие действия:

  1. Откройте страницу Расширения в веб-клиенте Rational Asset Manager.
  2. В разделе Веб-службы загрузите файл WSDL, нажав ссылку RAM1.wsdl.
  3. Для использования веб-службы на стороне клиента из WSDL необходимо создать прокси для взаимодействия с сервером.
  4. После создания прокси для WSDL перейдите по URL http://сервер:порт/com.ibm.ram.repository.web.ws.was/службы-RAM, где сервер обозначает имя хоста сервера, порт обозначает номер порта, com.ibm.ram.repository.web.ws.was обозначает веб-приложение веб-службы, а службы-RAM обозначает расположение веб-службы. В клиенте должно быть включено перенаправление запросов, поскольку службы-RAM автоматически перенаправляет запрос в соответствующее расположение.

    Для клиентов службы доступны по URL http://сервер:порт/com.ibm.ram.repository.web.ws.was/службы-RAM. С этого единого адреса для доступа к веб-службам клиент перенаправляется на анонимный сервер http://сервер:порт/com.ibm.ram.repository.web.ws.was/services/RAM1 или на сервер с базовой идентификацией пользователей http://сервер:порт/com.ibm.ram.repository.web.ws.was/RAMSecure/services/RAM1 в зависимости от наличия идентификационных данных пользователя в запросе.

    Если клиенты предпочитают прямой доступ к анонимным серверам и серверам с базовой идентификацией пользователей, они могут использовать адрес http://сервер:порт/com.ibm.ram.repository.web.ws.was/services/RAM1 или http://сервер:порт/com.ibm.ram.repository.web.ws.was/RAMSecure/services/RAM1 соответственно.

  5. Подключение к серверу:
    • Для подключения в качестве зарегистрированного пользователя укажите имя пользователя и пароль с помощью механизма базовой идентификации HTTP.
    • Для анонимного подключения указывать имя пользователя и пароль не нужно.
  6. Схема лицензирования Rational Asset Manager предполагает отдельные лицензии для каждого пользователя, подключающегося к серверу. Если требуется делать несколько запросов и сохранить тот же кэш лицензий, соединение с сервером и сеансы будут иметь ту же лицензию.
  7. Используйте API в документации Rational Asset Manager (раздел Справочник).

Результаты

Напоминание: Для подключения по защищенному соединению SSL HTTPS убедитесь, что в наборе ключей клиента HTTPS есть открытый ключ сервера.

Пример

Пример класса для вызова веб-служб:
public class RAMClient {
  public static final String RAM_LOCATION = "http://server:port/com.ibm.ram.repository.web.ws.was";

  public void doSearchAndDownload() throws Exception {
    String SECURE_PREFIX = "/RAMSecure"; // Используется, когда указаны имя пользователя и пароль
    String RAM_WS_LOCATION = RAM_LOCATION + SECURE_PREFIX + "/services/RAM1";
    String USERNAME = "admin";
    String PASSWORD = "admin";

    // Создание заготовки WebSerivces
    RAM1 ramWebService = new RAM1ServiceLocator().getRAM1(new URL(RAM_WS_LOCATION));
    if (ramWebService instanceof Stub) {
      Stub axisStub = (Stub) ramWebService;
      // Установка имени пользователя и пароля
      axisStub.setUsername(USERNAME);
      axisStub.setPassword(PASSWORD);
    }

    // Получение констант для вызова веб-служб
    Constants constants = ramWebService.getConstants();

    // Поиск ресурсов, имена которых начинаются с 'soa' и чьим владельцем является пользователь '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());

    // Загрузка найденных ресурсов
    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) {
    // Загрузка ресурса
  }
}

Комментарии