Proxy 让jena和fuseki代理知道联合查询

Proxy 让jena和fuseki代理知道联合查询,proxy,sparql,jena,fuseki,federated-queries,Proxy,Sparql,Jena,Fuseki,Federated Queries,我们的应用程序构建在Jena和Fuseki之上。应用程序使用联邦SPARQL查询访问公共域中的SPARQL端点 应用程序所针对的某些网络仅允许通过HTTP代理进行HTTP请求,作为其网络策略的一部分 如何配置fuseki,使其在SPARQL子查询中作为服务块的一部分发出HTTP请求时,使用正确的HTTP_代理 在Linux上,我尝试使用一个本地环境变量 export http_proxy=http://myproxy.notadomain 在运行fuseki服务器进程但fuseki似乎不遵守此

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

应用程序所针对的某些网络仅允许通过HTTP代理进行HTTP请求,作为其网络策略的一部分

如何配置fuseki,使其在SPARQL子查询中作为服务块的一部分发出HTTP请求时,使用正确的HTTP_代理

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

export http_proxy=http://myproxy.notadomain
在运行fuseki服务器进程但fuseki似乎不遵守此环境变量的shell中

我在Fuseki文档中找不到有关如何处理此问题的信息

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


非常感谢收到所有建议。

代理配置

您可以使用访问/更改Jena使用的
HttpClient
,然后配置并分配一个已配置的客户端。值得注意的是,Jena使用的
HttpClient
版本不是最新的,因此如果您正在学习教程(如我链接的教程),则需要稍微调整以创建客户端

fuseki-1.1.0使用的
jena-arq-2.12.0
取决于
httpclient-4.2.6
。以下代码将配置ARQ以使用代理:

final-HttpHost-proxy=新的HttpHost(“someproxy”,8080);
final DefaultHttpClient httpclient=新的DefaultHttpClient();
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,PROXY);
HttpOp.setDefaultHttpClient(httpclient);
Fuseki配置

在fuseki中,我似乎找不到一种有文档记录的配置方法,因此我个人的黑客行为可能是:

  • 创建一个类,其
    static
    初始化方法设置所有代理配置
包my.full.qualified;
公共类配置类{
静止的{
//代理配置代码
最终HttpHost代理=新HttpHost(“someproxy”,8080);
final DefaultHttpClient httpclient=新的DefaultHttpClient();
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,PROXY);
HttpOp.setDefaultHttpClient(httpclient);
}
}
  • 在执行fuseki时,将包含该类的jar放在类路径上。这将需要调整fuseki脚本以将我的jar添加到类路径中
$java-classpath'*'org.apache.jena.fuseki.FusekiCmd
  • 编辑my,使其包含格式为“my.Full.qualified.ConfigurationClass”的三元组,这将导致fuseki为我的特殊类执行初始化方法,然后将更改Jena/ARQ内部使用的默认
    HttpClient
    。这与Jena在内部使用的初始化TDB的技术相同,
    []ja:loadClass“com.hp.hpl.Jena.TDB.TDB”。

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