Каковы возможные причины исключения множественных идентификаторов в Sesame?

Я хотел бы знать, каковы возможные причины, которые могут вызвать следующее исключение?

org.openrdf.repository.config.RepositoryConfigException: Multiple ID-statements for repository ID test_3

Он возникает, когда я пытаюсь запросить репозиторий test_3. Другой факт, что после этого на моей веб-странице отображаются два репозитория с одинаковым именем http://localhost:8080/openrdf-workbench/repositories/NONE/repositories

любая помощь приветствуется!

ИЗМЕНИТЬ

Я использую Сезам 2.7.7

ИЗМЕНИТЬ 2

Предоставление более подробной информации о коде, вызывающем исключение

код

публичная пустота connectToRepository () {

    RepositoryConnection connection;

    RemoteRepositoryManager repositoryManager = new RemoteRepositoryManager("http://localhost:8080/openrdf-sesame/"); 

    try {

        repositoryManager.initialize();

        SailImplConfig backendConfig = new NativeStoreConfig("spoc,sopc,posc,psoc,ospc,opsc");

        RepositoryImplConfig repositoryTypeSpec = new SailRepositoryConfig(backendConfig);

        RepositoryConfig repConfig = new RepositoryConfig(repositoryID, repositoryTypeSpec);

        repositoryManager.addRepositoryConfig(repConfig);

        Repository myRepository = repositoryManager.getRepository(repositoryID);

        myRepository.initialize();

        connection = myRepository.getConnection();

    } 

    catch (RepositoryException | RepositoryConfigException e) {
        e.printStackTrace();
    }
}

Исключение вызвано следующей строкой в ​​коде:

repositoryManager.addRepositoryConfig(repConfig);

Вот подробности

log4j:WARN No appenders could be found for logger (org.openrdf.rio.DatatypeHandlerRegistry).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Custom NTriples/NQuads Parser
Custom NTriples/NQuads Parser
org.openrdf.repository.config.RepositoryConfigException: Multiple ID-statements for repository ID 10m7_m
at org.openrdf.repository.config.RepositoryConfigUtil.getIDStatement(RepositoryConfigUtil.java:269)
at org.openrdf.repository.config.RepositoryConfigUtil.hasRepositoryConfig(RepositoryConfigUtil.java:91)
at org.openrdf.repository.manager.RemoteRepositoryManager.createRepository(RemoteRepositoryManager.java:174)
at org.openrdf.repository.manager.RepositoryManager.getRepository(RepositoryManager.java:376)
at soctrace.repositories.OLDSesameRepositoryManagement.connectToRepository(OLDSesameRepositoryManagement.java:123)
at soctrace.repositories.OLDSesameRepositoryManagement.queryInRepository(OLDSesameRepositoryManagement.java:150)
at soctrace.views.Main.main(Main.java:692)
[sesame in memory] connection to repository 10m7_m done , 444, ms
Exception in thread "main" java.lang.NullPointerException
at soctrace.repositories.OLDSesameRepositoryManagement.runQuery(OLDSesameRepositoryManagement.java:250)
at soctrace.repositories.OLDSesameRepositoryManagement.queryInRepository(OLDSesameRepositoryManagement.java:155)
at soctrace.views.Main.main(Main.java:692) 

person Fopa Léon Constantin    schedule 23.02.2015    source источник


Ответы (1)


Ваш код создает новый репозиторий (путем добавления новой конфигурации репозитория в менеджер репозитория) каждый раз при выполнении метода connectToRepository(). Поскольку вы используете одну и ту же конфигурацию репозитория (включая фактический идентификатор репозитория) каждый раз, естественно, это вызывает ошибку при втором выполнении: вы пытаетесь добавить репозиторий с идентификатором, который уже существует.

Вы должны переписать свой код, чтобы убедиться, что он только пытается создать репозиторий, когда репозиторий с таким идентификатором еще не существует — если он уже существует, он должен просто использовать существующий.

person Jeen Broekstra    schedule 08.03.2015