java - RDF4J:EC2 上出现 "Failed to get server protocol"错误,但本地没有

标签 java sesame rdf4j

在 EC2 服务器上使用 RDF4J 从 Java 运行查询时遇到以下错误(在本地工作正常)。

java_1        | 30-Aug-2019 13:51:50.511 SEVERE [http-nio-8080-exec-1] com.sun.jersey.spi.container.ContainerResponse.mapMappableContainerException The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
java_1        | org.eclipse.rdf4j.repository.http.HTTPQueryEvaluationException: Failed to get server protocol; no such resource on this server: http://127.0.0.1:8080/openrdf-sesame/protocol
java_1        | at org.eclipse.rdf4j.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:56)

相关Java代码:

import org.eclipse.rdf4j.model.Value;
import org.eclipse.rdf4j.query.BindingSet;
import org.eclipse.rdf4j.query.QueryLanguage;
import org.eclipse.rdf4j.query.TupleQuery;
import org.eclipse.rdf4j.query.TupleQueryResult;
import org.eclipse.rdf4j.RDF4JException;
import org.eclipse.rdf4j.repository.Repository;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.repository.http.HTTPRepository;

public void test() throws RDF4JException
{
    String sesameServer ="http://127.0.0.1:8080/rdf4j-server";
    HTTPRepository db = new HTTPRepository(sesameServer, repositoryID);
    db.initialize();
    try (RepositoryConnection conn = db.getConnection()) {
        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
    }
    catch(RDF4JException e) {
        System.out.println(e.getMessage());
    }
    finally {
        db.shutDown();
    }
}

我尝试将 sesameServer 中的 IP 更改为服务器的公共(public) IP,但抛出了相同的错误。无论如何,它与 RDF 数据库在同一台服务器 (Tomcat 8) 上运行,因此 127.0.0.1 应该可以工作(并且可以在本地工作)。

非常感谢任何帮助/想法。

最佳答案

感谢 Jeen Broekstra 的帮助。将服务器 url 作为变量保存的 Java 常量文件不是在 Docker/EC2 上构建的,因此使用旧版本的 java 类文件(仍然指向 sesame)。重建它解决了一切。

关于java - RDF4J:EC2 上出现 "Failed to get server protocol"错误,但本地没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57750768/

相关文章:

java - 尝试通过迭代字符串中的每个字符来限制每行的文本输出长度

apache-httpcomponents - 与芝麻商店的连接被阻止

RDF4J 2.4.0-M3 GeoSPARQL 查询不起作用

http - 如何加快将许多小 RDF 文件加载到 Sesame 中的速度?

sesame - 如何使用 RDF4J 控制台以编程方式创建存储库?

http - 使用 RDF4J 返回错误查询 FactForge Sparql 端点

java - Wicket AuthenticatedWebApplication 不允许从同一台计算机上的不同帐户登录

java - Spring Security如何确保 header

java - SOAP 的 WSDL 和 REST 的 WSDL 以及基于 JSON 的 REST

apache-camel - 使用 Camel 对 sesame 中约 300.000 个三元组进行索引