2014-09-05 100 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" .