Задайте прокси-сервер HTTP Jena по умолчанию до запуска запросов
Разберитесь с клиентом HttpEnv по умолчанию для всей JVM, моментом его запуска и клиентами, которые могут его переопределить для вызовов SERVICE.
Для встроенного приложения Jena на современном стеке JDK задайте общий резервный маршрут до построения выполнений запросов или запуска обработчиков:
import java.net.InetSocketAddress;
import java.net.ProxySelector;
import org.apache.jena.http.HttpEnv;
var http = HttpEnv.httpClientBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example.net", 8080)))
.build();
HttpEnv.setDftHttpClient(http);Построитель Jena сохраняет свои транспортные настройки по умолчанию, добавляя селектор. Для встроенной нагрузки, использующей разрешённые публичные конечные точки SPARQL и не имеющей учётной записи прокси, список HTTP-прокси может предоставить HTTP-адрес для селектора. Это остаётся общим значением по умолчанию для JVM, а не переключателем для каждого запроса.
| Операция | Порядок выбора клиента |
|---|---|
| Обычный построитель HTTP-запросов | Явный клиент, совпадение в реестре по URL, значение по умолчанию HttpEnv |
| Встроенный федеративный SERVICE | Подходящий клиент реестра, клиент контекста запроса, глобальное значение по умолчанию |
Поэтому локальное или реестровое переопределение может использовать другой маршрут. Построитель HTTP определяет свой клиент при вызове build и передаёт этот объект в выполнение; последующая замена значения по умолчанию не переписывает уже построенное выполнение.
Сохраняйте резервный маршрут при запуске стабильным. Когда маршруты различаются, используйте подходящий локальный/контекстный/реестровый интерфейс.
Отдельный сервер Fuseki также нуждается в способе выполнения инициализации, поддерживаемом его развёрнутой версией. Помещение этого кода Java в файл не заставляет сервер его выполнять.