최신 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 코드를 파일에 넣는다고 해서 그 서버가 코드를 실행하지는 않습니다.

관련 글