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 രീതിയിൽ, getRequestorType() == RequestorType.PROXY ആയിരിക്കുകയും അഭ്യർത്ഥിക്കുന്ന ഹോസ്റ്റും പോർട്ടും കോൺഫിഗർ ചെയ്ത ഇടനിലക്കാരനുമായി പൊരുത്തപ്പെടുകയും ചെയ്യുമ്പോൾ മാത്രം പ്രോക്സിയുടെ PasswordAuthentication തിരികെ നൽകുക. ബന്ധമില്ലാത്ത വെല്ലുവിളികൾക്ക് 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-ൽ ലഭ്യമല്ലാത്ത പ്രാമാണീകരണ സംവിധാനം ആവശ്യമെങ്കിൽ, ആ പഴയ പ്രാമാണീകരണ ഒബ്ജക്റ്റുകൾ ആധുനിക ബിൽഡറിലേക്ക് തള്ളിക്കയറ്റാൻ ശ്രമിക്കുന്നതിനുപകരം നെറ്റ്വർക്ക് അഡ്മിനിസ്ട്രേറ്ററുമായി പിന്തുണയുള്ള സംയോജനം ഒരുക്കുക.

അനുബന്ധ ലേഖനങ്ങൾ