RDF4J: не удалось получить ошибку протокола сервера на EC2, но не локально

Я получаю следующую ошибку при выполнении запроса из Java с RDF4J на сервере EC2 (локально он работает нормально).

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-адрес сервера, и выдается та же ошибка. Несмотря на это, он работает на том же сервере (Tomcat 8), что и база данных RDF, поэтому 127.0.0.1 должен работать (и работает локально).

Любая помощь/идеи с благодарностью.


person KevLoughrey    schedule 02.09.2019    source источник
comment
URL-адрес сервера в вашем коде — http://127.0.0.1:8080/rdf4j-server, но тот, который упоминается в сообщении об ошибке, говорит http://127.0.0.1:8080/openrdf-sesame (именно такой URL-адрес был до того, как Sesame переименовал себя в rdf4j). Предполагая, что вы на самом деле используете Rdf4j Server, а не Sesame, URL-адрес в коде должен быть правильным. Я бы еще раз проверил, что код, который вы на самом деле выполняете, правильно устанавливает этот URL.   -  person Jeen Broekstra    schedule 02.09.2019
comment
@Jeen Broekstra Спасибо за это. Мы начали проект с кунжута, но некоторое время назад перенесли его. Оказывается, файл класса java не перестраивался в Docker, когда он был развернут на ec2, который содержал адрес сервера.   -  person KevLoughrey    schedule 06.09.2019


Ответы (1)


Спасибо Джин Брокстра за помощь. Файл констант Java, который содержал URL-адрес сервера в качестве переменной, не создавался на Docker/EC2, поэтому использовалась старая версия файла класса Java (которая все еще указывала на сезам). Переустановка все исправила.

person KevLoughrey    schedule 05.09.2019