Для встроенного приложения 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 в файл не заставляет сервер его выполнять.

Похожие статьи