首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使jena和fuseki代理了解联邦查询

使jena和fuseki代理了解联邦查询
EN

Stack Overflow用户
提问于 2014-09-05 16:40:50
回答 2查看 688关注 0票数 1

我们的应用程序构建在Jena和Fuseki之上。应用程序使用联邦SPARQL查询访问公共域中的SPARQL端点。

应用程序打算用于的某些网络只允许通过HTTP代理进行HTTP请求,作为其网络策略的一部分。

如何配置fuseki,以便当它在SPARQL子查询中将HTTP请求作为服务块的一部分时,它使用正确的http_proxy?

在Linux上,我尝试使用本地环境变量。

代码语言:javascript
复制
export http_proxy=http://myproxy.notadomain

在运行Fuseki服务器进程的shell中,Fuseki似乎不尊重这个环境变量。

我在Fuseki文档中找不到关于如何处理这个问题的信息。

我想要一种直接将fuseki服务器作为Linux进程运行的方法,在配置文件中或作为运行时参数配置代理。

所有的建议都很感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-05 17:15:03

Fuseki是一个Java应用程序。我通常做的是导出一个带有所有自定义的JAVA_OPTIONS变量,例如:

代码语言:javascript
复制
export JAVA_OPTIONS="-Xmx10g -Dhttp.proxyHost=proxy.example.org -Dhttp.proxyPort=8080 -Dfile.encoding=UTF-8 -Dlog4j.configuration=file:./log4j.properties"
票数 2
EN

Stack Overflow用户

发布于 2014-09-05 16:57:38

代理配置

您可以使用HttpOp访问/更改耶拿使用的HttpClient,然后配置,然后分配一个客户端,即配置为代理。请注意,Jena使用的HttpClient版本并不是最新版本,所以如果您正在学习教程(例如我链接的教程),您需要稍微调整一下才能创建一个客户端。

jena-arq-2.12.0fuseki-1.1.0使用,依赖于httpclient-4.2.6。以下代码将配置ARQ以使用代理:

代码语言:javascript
复制
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初始化方法设置所有代理配置。
代码语言:javascript
复制
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添加到类路径中。
代码语言:javascript
复制
$ java -classpath '*' org.apache.jena.fuseki.FusekiCmd
  • 编辑我的fuseki配置以包含表单[] ja:loadClass "my.fully.qualified.ConfigurationClass" .的三重,这将导致fuseki为我的特殊类执行初始化方法,然后在内部更改Jena/ARQ使用的默认HttpClient。这是Jena内部使用的使用[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .初始化TDB的相同技术。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25690426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档