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 နည်းလမ်းတွင် 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 တွင် မရနိုင်သော အတည်ပြုခြင်း ယန္တရားကို တောင်းခံပါက ထို အတည်ပြုခြင်း အရာဝတ္ထုဟောင်းများကို ခေတ်သစ် တည်ဆောက်ကိရိယာထဲ ထည့်ရန် မကြိုးစားဘဲ ကွန်ရက် စီမံခန့်ခွဲသူနှင့် ပံ့ပိုးထားသော ပေါင်းစည်းမှုကို ညှိနှိုင်းပါ။