원격 웹 서비스 API 사용

애플리케이션에서 IBM® Rational® Asset Manager 웹 서비스를 사용할 수 있습니다.

이 태스크 정보

주의: 웹 서비스 API와 HTTP 업로드 및 다운로드 메커니즘은 내부 API이며 지원되지 않습니다. 위험을 감수하여 사용하면 사용자 본인의 책임입니다.

Rational Asset Manager는 저장소에 대해 작업할 수 있도록 웹 서비스를 공개합니다. Rational Asset Manager WSDL(Web Services Descriptor Language) 파일을 사용하여 Rational Asset Manager 서버와 상호작용하는 사용자 정의 애플리케이션을 개발하십시오.

프로시저

웹 서비스를 사용하여 Rational Asset Manager 서버에 연결하려면 다음을 수행하십시오.

  1. Rational Asset Manager 웹 클라이언트에서 확장기능 페이지로 이동하십시오.
  2. 웹 서비스에서 RAM1.wsdl 링크를 클릭하여 WSDL 파일을 다운로드하십시오.
  3. 웹 서비스를 사용하려면 서버와 상호작용하도록 WSDL에서 클라이언트측 프록시를 생성해야 합니다.
  4. WSDL의 프록시가 생성되었으면 웹 서비스 URL http://server:port/com.ibm.ram.repository.web.ws.was/RAMServices에 액세스하십시오. 여기서 server는 서버의 호스트 이름, port는 포트 번호, com.ibm.ram.repository.web.ws.was는 웹 서비스 웹 애플리케이션, RAMServices는 웹 서비스를 사용할 수 있는 위치입니다. RAMServices가 자동으로 호출의 경로를 적절한 위치로 재지정하므로 클라이언트가 호출 시 경로를 재지정할 수 있어야 합니다.

    클라이언트가 서비스를 가져오도록 http://server:port/com.ibm.ram.repository.web.ws.was/RAMServices에 액세스할 수 있습니다. 웹 서비스를 호출하기 위한 이 단일 위치는 요청에서 사용자 신임 정보 존재 여부에 따라 http://server:port/com.ibm.ram.repository.web.ws.was/services/RAM1의 익명 서버 위치나 http://server:port/com.ibm.ram.repository.web.ws.was/RAMSecure/services/RAM1의 기본 인증 위치로 클라이언트를 경로 재지정합니다.

    클라이언트가 익명 및 기본 인증 기반 서비스에 직접 액세스하려 하는 경우 각각 http://server:port/com.ibm.ram.repository.web.ws.was/services/RAM1http://server:port/com.ibm.ram.repository.web.ws.was/RAMSecure/services/RAM1 엔드포인트를 사용하여 수행합니다.

  5. 다음과 같이 서버에 연결하십시오.
    • 로그인한 사용자로 연결하려면 HTTP 기본 인증을 사용하여 사용자 이름 및 비밀번호를 제공하십시오.
    • 익명으로 연결하려면 사용자 이름과 비밀번호를 제공하지 마십시오.
  6. Rational Asset Manager에는 서버에 연결하는 각 사용자의 라이센스를 제공하는 라이센스 부여 스키마가 있습니다. 다중 호출을 하며 같은 라이센스 캐시를 유지하려는 경우 서버에 연결 및 세션이 같은 라이센스를 유지보수합니다.
  7. 도움말의 참조 섹션에 있는 Rational Asset Manager Javadoc의 API를 사용하십시오.

결과

알아두기: HTTPS SSL 보안 연결을 사용하여 연결하려면 HTTPS가 작동하도록 서버의 공용 키가 클라이언트의 키링(keyring)에 있는지 확인하십시오.

웹 서비스를 호출하기 위한 클래스 예:
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"; // To be used when username and password are provided
    String RAM_WS_LOCATION = RAM_LOCATION + SECURE_PREFIX + "/services/RAM1";
    String USERNAME = "admin";
    String PASSWORD = "admin";

    // Construct WebSerivces stub
    RAM1 ramWebService = new RAM1ServiceLocator().getRAM1(new URL(RAM_WS_LOCATION));
    if (ramWebService instanceof Stub) {
      Stub axisStub = (Stub) ramWebService;
      // Set user name and password
      axisStub.setUsername(USERNAME);
      axisStub.setPassword(PASSWORD);
    }

    // Get constants for invoking WebServices
    Constants constants = ramWebService.getConstants();

    // Search for assets with name starting with 'soa' and owned by 'admin' user.
    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());

    // Download assets got from search
    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) {
    // Download asset
  }
}

피드백