마지막 줄이 중요합니다. 또 다른 기본 builder를 시작하는 대신 구성된 서비스에서 파일 시스템 클라이언트를 파생합니다.

var proxy = new ProxyOptions(
    ProxyOptions.Type.HTTP,
    new InetSocketAddress("proxy.example.net", 8080));

var http = new NettyAsyncHttpClientBuilder()
    .proxy(proxy)
    .build();

var credential = new ClientSecretCredentialBuilder()
    .tenantId(tenantId)
    .clientId(clientId)
    .clientSecret(clientSecret)
    .httpClient(http)
    .build();

var service = new DataLakeServiceClientBuilder()
    .endpoint(accountUrl)
    .credential(credential)
    .httpClient(http)
    .buildClient();

var filesystem = service.getFileSystemClient(fileSystemName);

service.getFileSystemClient(fileSystemName) 는 부모의 HTTP 파이프라인, 계정 엔드포인트, 적용되는 저장소 구성을 자식에게 전달합니다.

이 예제는 토큰 획득이 또 다른 요청 경로이기 때문에 동일한 http 를 자격 증명 builder에 제공합니다. 별도로 구성한 파일 시스템 클라이언트도 의도한 전송을 받아야 합니다. 이전 builder가 SDK 전역 기본값을 만들지는 않습니다.

애플리케이션의 계정 URL, 파일 시스템 이름, ID 값을 사용합니다. ProxyOptions 와 Netty 전송 형식은 Azure Core에서, 자격 증명 builder는 Azure Identity에서, 서비스 builder는 Azure Storage Data Lake에서 제공됩니다. InetSocketAddress 는 java.net 에서 옵니다.

accountUrl 는 계속 저장소 엔드포인트이며 파일 시스템 이름이 자식을 선택합니다. 둘 다 프록시 주소가 아닙니다. 저장소 엔드포인트가 공개적으로 접근 가능하고 공개 중개자를 사용할 권한이 있다면 HTTP 프록시 목록에서 ProxyOptions 호스트와 포트를 선택하고, 저장소 및 ID 설정은 그대로 둡니다.

관련 글