在 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();
}
}
我尝试将 IP 更改sesameServer
为服务器的公共 IP,并引发相同的错误。无论如何,它与 RDF 数据库在同一台服务器(Tomcat 8)上运行,因此 127.0.0.1 应该可以工作(并且可以在本地工作)。
非常感谢任何帮助/想法。