Jena 4.3-এ চালু হওয়া Jena-র JDK-ভিত্তিক HTTP স্ট্যাকের জন্য, কোয়েরি বিল্ডারকে দেওয়া transport কনফিগার করুন। SPARQL এন্ডপয়েন্টের পাসওয়ার্ড ও প্রক্সির পাসওয়ার্ড ভিন্ন ভিন্ন মেশিন চাইতে পারে।

import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.http.HttpClient;
import org.apache.jena.sparql.exec.http.QueryExecutionHTTP;

var http = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("proxy.example", 8080)))
    .authenticator(proxyAuthenticator)
    .build();

var execution = QueryExecutionHTTP.service(endpointUrl)
    .httpClient(http)
    .query("ASK { ?s ?p ?o }")
    .build();

এই অংশটি একটি কোয়েরি এক্সিকিউশন তৈরি করে। endpointUrl হলো প্রকৃত SPARQL সেবার URL; proxyAuthenticator হলো অ্যাপ্লিকেশন-প্রদত্ত java.net.Authenticator। অ্যাপ্লিকেশনের স্বাভাবিক কোয়েরি জীবনচক্রের মাধ্যমে কোয়েরি এক্সিকিউশনটি চালান ও বন্ধ করুন।

সেই প্রমাণকের getPasswordAuthentication পদ্ধতিতে প্রক্সির PasswordAuthentication কেবল তখনই ফেরত দিন যখন getRequestorType() == RequestorType.PROXY এবং যখন অনুরোধকারী হোস্ট ও পোর্ট কনফিগার করা মধ্যস্থের সাথে মেলে। অসম্পর্কিত চ্যালেঞ্জের জন্য null ফেরত দিন। এই অবজেক্টটি ক্লায়েন্টে যুক্ত করলে নির্বাচনটি সেই ক্লায়েন্টেই সীমিত থাকে।

প্রক্সি কী চাইছে তা পড়ুন

407 প্রতিক্রিয়া একটি প্রক্সি প্রমাণীকরণ চ্যালেঞ্জ নির্দেশ করে। এর Proxy-Authenticate হেডার প্রস্তাবিত স্কিমগুলো জানায়; কেবল স্ট্যাটাস Basic-কে NTLM বা অন্য স্কিম থেকে আলাদা করে না।

সেই প্রস্তাবটি স্থাপিত JDK ক্লায়েন্টের সক্ষমতা ও প্রমাণীকরণ নীতির সাথে মিলিয়ে দেখুন। ব্যবহারকারীনাম ও পাসওয়ার্ড দেওয়া অসমর্থিত স্কিম যোগ করে না। HTTPS গন্তব্যের জন্য JDK-র jdk.http.auth.tunneling.disabledSchemes নীতিও পরীক্ষা করুন; সাধারণ HTTP প্রক্সির আলাদা disabledSchemes সেটিং আছে। CONNECT-এর জন্য JDK-র Basic প্রমাণীকরণের ডিফল্ট এমন একটি নীতি পরীক্ষা।

Apache HttpClient ও SimpleNTAuthenticator ব্যবহার করা ঐতিহাসিক Jena উদাহরণ পুরোনো transport প্রজন্মের। যদি কর্পোরেট প্রক্সি বর্তমান transport-এ অনুপলব্ধ কোনো প্রমাণীকরণ প্রক্রিয়া দাবি করে, তবে সেই পুরোনো প্রমাণীকরণ অবজেক্টগুলো আধুনিক বিল্ডারে ঢোকানোর চেষ্টা না করে নেটওয়ার্ক প্রশাসকের সাথে সমর্থিত সমন্বয়ের ব্যবস্থা করুন।

সম্পর্কিত নিবন্ধ