Jena 4.3+ SPARQL ક્લાયન્ટ માટે પ્રોક્સી પ્રમાણીકરણ
આધુનિક Jena ક્વેરી એક્ઝિક્યુશન વાપરતા JDK HTTP ક્લાયન્ટ સાથે પ્રોક્સી સિલેક્ટર અને પ્રમાણક જોડો.
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 માં ઉપલબ્ધ ન હોય તેવી પ્રમાણીકરણ પદ્ધતિની જરૂર હોય, તો તે જૂની પ્રમાણીકરણ ઑબ્જેક્ટને આધુનિક બિલ્ડરમાં ખોસવાનો પ્રયાસ કરવાને બદલે નેટવર્ક એડમિનિસ્ટ્રેટર સાથે સમર્થિત એકીકરણ ગોઠવો.