我们的应用程序构建在Jena和Fuseki之上。应用程序使用联邦SPARQL查询访问公共域中的SPARQL端点。
应用程序打算用于的某些网络只允许通过HTTP代理进行HTTP请求,作为其网络策略的一部分。
如何配置fuseki,以便当它在SPARQL子查询中将HTTP请求作为服务块的一部分时,它使用正确的http_proxy?
在Linux上,我尝试使用本地环境变量。
export http_proxy=http://myproxy.notadomain在运行Fuseki服务器进程的shell中,Fuseki似乎不尊重这个环境变量。
我在Fuseki文档中找不到关于如何处理这个问题的信息。
我想要一种直接将fuseki服务器作为Linux进程运行的方法,在配置文件中或作为运行时参数配置代理。
所有的建议都很感激。
发布于 2014-09-05 17:15:03
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"发布于 2014-09-05 16:57:38
代理配置
您可以使用HttpOp访问/更改耶拿使用的HttpClient,然后配置,然后分配一个客户端,即配置为代理。请注意,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);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" .的三重,这将导致fuseki为我的特殊类执行初始化方法,然后在内部更改Jena/ARQ使用的默认HttpClient。这是Jena内部使用的使用[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .初始化TDB的相同技术。https://stackoverflow.com/questions/25690426
复制相似问题