クエリ開始前に Jena の既定 HTTP プロキシを設定する
HttpEnv の JVM 全体にわたる既定クライアント、その起動タイミング、SERVICE 呼び出しでそれを上書きできるクライアントを理解します。
モダンな 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 コードをファイルに置いても、そのサーバーが実行するわけではありません。