[英]Make jena and fuseki proxy aware for federated queries
我們的應用程序建立在Jena和Fuseki之上。 該應用程序使用聯合SPARQL查詢訪問公共域中的SPARQL端點。
應用程序的某些網絡僅允許通過HTTP代理的HTTP請求作為其網絡策略的一部分。
如何配置fuseki,以便當它在SPARQL子查詢中將HTTP請求作為SERVICE塊的一部分時,它使用正確的http_proxy?
在Linux上,我嘗試使用本地環境變量
export http_proxy=http://myproxy.notadomain
在運行fuseki-server進程的shell中,但Fuseki似乎不尊重這個環境變量。
我在Fuseki文檔中找不到有關如何處理這些信息的信息。
我想要一種方法來直接運行fuseki-server作為配置代理的Linux進程,可以在配置文件中,也可以作為運行時參數。
感謝所有的建議。
Fuseki是一個Java應用程序。 我通常做的是導出一個包含所有自定義的JAVA_OPTIONS變量,例如:
export JAVA_OPTIONS="-Xmx10g -Dhttp.proxyHost=proxy.example.org -Dhttp.proxyPort=8080 -Dfile.encoding=UTF-8 -Dlog4j.configuration=file:./log4j.properties"
代理配置
您可以使用HttpOp
訪問/更改Jena使用的HttpClient
,然后配置然后分配已配置為代理的客戶端。 需要注意的是,Jena使用的HttpClient
版本並不是最新版本,因此如果您正在學習教程(例如我鏈接的教程),您需要稍微調整才能創建客戶端。
jena-arq-2.12.0
fuseki-1.1.0
使用jena-arq-2.12.0
取決於httpclient-4.2.6
。 以下代碼將ARQ配置為使用代理:
final HttpHost proxy = new HttpHost("someproxy",8080);
final DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);
HttpOp.setDefaultHttpClient(httpclient);
Fuseki配置
我似乎找不到在fuseki中配置這個的文檔化方法,所以我自己的個人黑客將是:
static
初始化方法設置所有代理配置的類。 package my.fully.qualified;
public class ConfigurationClass {
static {
// Proxy config code
final HttpHost proxy = new HttpHost("someproxy",8080);
final DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);
HttpOp.setDefaultHttpClient(httpclient);
}
}
$ java -classpath '*' org.apache.jena.fuseki.FusekiCmd
[] ja:loadClass "my.fully.qualified.ConfigurationClass" .
形式的三元組[] ja:loadClass "my.fully.qualified.ConfigurationClass" .
這將導致fuseki為我的特殊類執行初始化方法,然后在內部更改Jena / ARQ使用的默認HttpClient
。 這與Jena在內部使用[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
初始化TDB的技術相同[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.