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та жеткиликсиз аутентификация механизмин талап кылса, ошол эски аутентификация объектилерин заманбап куруучуга түртүп киргизүүгө аракет кылбастан, тармак администратору менен колдоого алынган интеграцияны макулдашыңыз.

Тектеш макалалар