簡體   English   中英

使jena和fuseki代理知道聯合查詢

[英]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);
   }
}
  • 執行fuseki時,將包含該類的jar放在類路徑上。 這將需要調整fuseki腳本以將我的jar添加到類路徑中。
$ java -classpath '*' org.apache.jena.fuseki.FusekiCmd
  • 編輯我的fuseki配置以包含[] 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM