Каковы возможные причины множественного исключения ID-оператора в кунжуте?
Я хотел бы знать, каковы возможные причины, которые могут привести к следующему исключению?
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
Предоставление более подробной информации о коде, который вызывает исключение
код
public void 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)
1 ответ
Ваш код создает новый репозиторий (добавляя новую конфигурацию репозитория в менеджер репозитория) каждый раз, когда вы выполняете connectToRepository()
метод. Поскольку вы каждый раз используете одну и ту же конфигурацию хранилища (включая фактический идентификатор хранилища), естественно, это вызывает ошибку при повторном ее выполнении: вы пытаетесь добавить хранилище с уже существующим идентификатором.
Вы должны переписать свой код, чтобы убедиться, что он пытается создать хранилище только тогда, когда хранилище с таким идентификатором еще не существует - если оно уже существует, ему следует просто использовать существующее.