Azure Data Lake Java: mantenha os clientes derivados no pipeline do proxy
Derive o cliente do sistema de arquivos a partir do DataLakeServiceClient configurado com proxy e configure o transporte do token de identidade na mesma configuração.
A última linha é importante: derive o cliente do sistema de arquivos do serviço configurado, em vez de iniciar outro builder padrão:
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) transporta para o filho o pipeline HTTP do pai, o endpoint da conta e a configuração de armazenamento aplicável.
O exemplo fornece o mesmo http ao builder de credenciais porque a obtenção do token é outro caminho de solicitação. Um cliente do sistema de arquivos construído separadamente também deve receber o transporte pretendido; nenhum builder anterior cria um padrão global do SDK.
Use a URL da conta, o nome do sistema de arquivos e os valores de identidade da aplicação. ProxyOptions e os tipos de transporte Netty vêm do Azure Core, o builder de credenciais do Azure Identity e o builder do serviço do Azure Storage Data Lake; InetSocketAddress vem do java.net.
accountUrl continua sendo o endpoint de armazenamento, e o nome do sistema de arquivos seleciona o filho. Nenhum dos dois é o endereço do proxy. Com um endpoint de armazenamento acessível publicamente e permissão para usar um intermediário público, escolha o host e a porta do ProxyOptions na lista de proxies HTTP; mantenha as configurações de armazenamento e identidade.