2014-09-05 60 views
1

我們的應用程序建立在耶拿和Fuseki之上。該應用程序使用聯合SPARQL查詢訪問公共域中的SPARQL端點。使聯合查詢的jena和fuseki代理知道

該應用程序僅用於通過HTTP代理的HTTP請求作爲其網絡策略的一部分。

fuseki如何配置,以便當它將HTTP請求作爲SPARQL子查詢中的SERVICE塊的一部分時,它使用正確的http_proxy?

在Linux上,我一直在使用一個本地的環境變量

export http_proxy=http://myproxy.notadomain 

在運行定式服務器的過程,但定式似乎並不尊重這個環境變量的外殼嘗試。

我無法在Fuseki文檔中找到有關如何處理的信息。

我想直接運行fuseki-server作爲配置代理的Linux進程,無論是在配置文件中,還是作爲運行時參數。

感謝所有的建議。

回答

2

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" 
1

代理配置

您可以使用HttpOp訪問/修改所使用的耶拿HttpClient,然後配置然後分配一個客戶端,它一直Configured for Proxy。需要注意的是,Jena使用的HttpClient版本並不是最新的版本,所以如果你正在學習下面的教程(比如我鏈接的那個),你需要稍微調整以創建一個客戶端。

jena-arq-2.12.0使用的fuseki-1.1.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); 

定式配置

我似乎無法找到在定式配置這一點,所以我個人的黑客將是一個記錄方法:

  • 創建一個類,它的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添加到類路徑中。
$ java -classpath '*' org.apache.jena.fuseki.FusekiCmd 
  • 編輯我fuseki configuration包含三重形式[] ja:loadClass "my.fully.qualified.ConfigurationClass" .的這將使定式執行我的特殊階層,那麼這將改變使用耶拿/ ARQ內部默認HttpClient初始化方法。這與Jena在內部初始化TDB時使用的技術相同[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .