د Jena د JDK پر بنسټ HTTP سټیک لپاره، چې په Jena 4.3 کې معرفي شو، هغه 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 کې نشته، له شبکې مدیر سره د ملاتړ شوي یوځای کیدو ترتیبات وکړئ، پرځای د دې چې هغه زاړه تصدیق شیان په عصري جوړونکي کې دننه کړئ.

اړوندې مقالې