モダンな JDK スタックを使う組み込み Jena アプリケーションでは、クエリ実行を構築したりワーカーを起動したりする前に、共通のフォールバックを確立します。

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 コードをファイルに置いても、そのサーバーが実行するわけではありません。

関連記事