首页 文章

使jena和fuseki代理知道联合查询

提问于
浏览
1

我们的应用程序 Build 在Jena和Fuseki之上 . 该应用程序使用联合SPARQL查询访问公共域中的SPARQL endpoints .

应用程序的某些网络仅允许通过HTTP代理的HTTP请求作为其网络策略的一部分 .

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

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

export http_proxy=http://myproxy.notadomain

在运行fuseki-server进程的shell中,但Fuseki似乎不尊重这个环境变量 .

我在Fuseki文档中找不到有关如何处理这些信息的信息 .

我想要一种方法来直接运行fuseki-server作为配置代理的Linux进程,可以在配置文件中,也可以作为运行时参数 .

感谢所有的建议 .

2 回答

  • 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

    Proxy Configuration

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

    jena-arq-2.12.0 使用的 jena-arq-2.12.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 Configuration

    我似乎找不到在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);
       }
    }
    
    • 执行fuseki时,将包含该类的jar放在类路径上 . 这将需要调整fuseki脚本以将我的jar添加到类路径中 .
    $ java -classpath '*' org.apache.jena.fuseki.FusekiCmd
    
    • 编辑我的fuseki configuration以包含表格的三重 [] ja:loadClass "my.fully.qualified.ConfigurationClass" . 这将导致fuseki执行我的特殊类的初始化方法,然后在内部更改Jena / ARQ使用的默认 HttpClient . 这与Jena内部用 [] ja:loadClass "com.hp.hpl.jena.tdb.TDB" . 初始化TDB的技术相同

相关问题