Azure Data Lake Java: ਪ੍ਰਾਪਤ ਕੀਤੇ ਕਲਾਇੰਟਾਂ ਨੂੰ ਪ੍ਰੌਕਸੀ ਪਾਈਪਲਾਈਨ 'ਤੇ ਰੱਖੋ
ਪ੍ਰੌਕਸੀ-ਕਨਫਿਗਰ ਕੀਤੇ DataLakeServiceClient ਤੋਂ ਫਾਈਲਸਿਸਟਮ ਕਲਾਇੰਟ ਪ੍ਰਾਪਤ ਕਰੋ ਅਤੇ ਉਸੇ ਸੈਟਅਪ ਵਿੱਚ ਪਛਾਣ ਟੋਕਨ ਟਰਾਂਸਪੋਰਟ ਕਨਫਿਗਰ ਕਰੋ।
ਆਖਰੀ ਲਾਈਨ ਮਹੱਤਵਪੂਰਨ ਹੈ: ਦੂਜਾ ਡਿਫਾਲਟ 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 ਪਾਈਪਲਾਈਨ, ਖਾਤਾ ਐਂਡਪੌਇੰਟ ਅਤੇ ਲਾਗੂ ਸਟੋਰੇਜ ਕਨਫਿਗਰੇਸ਼ਨ ਨੂੰ ਚਾਈਲਡ ਤੱਕ ਲੈ ਜਾਂਦਾ ਹੈ।
ਉਦਾਹਰਨ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ builder ਨੂੰ ਉਹੀ http ਦਿੰਦੀ ਹੈ ਕਿਉਂਕਿ ਟੋਕਨ ਪ੍ਰਾਪਤ ਕਰਨਾ ਇੱਕ ਹੋਰ ਬੇਨਤੀ ਮਾਰਗ ਹੈ। ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਬਣਾਏ ਗਏ ਫਾਈਲਸਿਸਟਮ ਕਲਾਇੰਟ ਨੂੰ ਵੀ ਇਸਦਾ ਲੋੜੀਂਦਾ ਟਰਾਂਸਪੋਰਟ ਮਿਲਣਾ ਚਾਹੀਦਾ ਹੈ; ਕੋਈ ਪਿਛਲਾ builder ਗਲੋਬਲ SDK ਡਿਫਾਲਟ ਨਹੀਂ ਬਣਾਉਂਦਾ।
ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਖਾਤਾ URL, ਫਾਈਲਸਿਸਟਮ ਨਾਮ ਅਤੇ ਪਛਾਣ ਮੁੱਲ ਵਰਤੋ। ProxyOptions ਅਤੇ Netty ਟਰਾਂਸਪੋਰਟ ਕਿਸਮਾਂ Azure Core ਤੋਂ, ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ builder Azure Identity ਤੋਂ ਅਤੇ ਸੇਵਾ builder Azure Storage Data Lake ਤੋਂ ਆਉਂਦੇ ਹਨ; InetSocketAddress java.net ਤੋਂ ਆਉਂਦਾ ਹੈ।
accountUrl ਸਟੋਰੇਜ ਐਂਡਪੌਇੰਟ ਹੀ ਰਹਿੰਦਾ ਹੈ, ਅਤੇ ਫਾਈਲਸਿਸਟਮ ਨਾਮ ਚਾਈਲਡ ਚੁਣਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਪ੍ਰੌਕਸੀ ਪਤਾ ਨਹੀਂ ਹੈ। ਜਨਤਕ ਤੌਰ 'ਤੇ ਪਹੁੰਚਯੋਗ ਸਟੋਰੇਜ ਐਂਡਪੌਇੰਟ ਅਤੇ ਜਨਤਕ ਵਿਚੋਲੇ ਦੀ ਵਰਤੋਂ ਦੀ ਇਜਾਜ਼ਤ ਹੋਣ 'ਤੇ HTTP ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਤੋਂ ProxyOptions ਹੋਸਟ ਅਤੇ ਪੋਰਟ ਚੁਣੋ; ਸਟੋਰੇਜ ਅਤੇ ਪਛਾਣ ਸੈਟਿੰਗਾਂ ਉਵੇਂ ਹੀ ਰੱਖੋ।