Мой код jena не работает в многопоточной среде исполнения.Я использую jena sdb, чтобы сохранить тройки rdf.Однако, когда я запускаю шесть потоков, чтобы завершить действие по сохранению данных, возникает исключение.(каждый поток сохраняет график rdf в дБ, каждый график отличается)
Мне нужны следующие подсказки:
1.Поддерживает ли jena SDB транзакцию, которая является поточно-ориентированной?
2.Как реализовать потокобезопасную операцию для jena sdb?
3.Как решить мою проблему с кодом?(Код исключительной ситуации и код ключа указаны ниже)
Так что благодарны за вашу помощь и любые предложения.Желаю от вас повторов.Удачи ~~
Мой ключевой код ниже: (База данных DB2, пул базы данных: пул источников данных Websphere)
//DBConnector is an object that get the jdbc connection from the data source
//initialize and return a sdb connection object [new SDBConnection(jdbcConnection)]
SDBConnection con = DBConnector.getSDBConnection();
store = SDBFactory.connectStore(con,storeDesc);
model.notifyEvent(GraphEvent.startRead);
model.read(in,'',"N-Triple");
model.notifyEvent(GraphEvent.finishRead);
model.close();
Ниже приведено исключение:
com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.Thread-6 (): Ошибка в потоке: проблема с созданием нового загрузчика кортежей
com.hp.hpl.jena.sdb.SDBException: проблема с созданием нового загрузчика кортежей
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:269)
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$200(LoaderTuplesNodes.java:31)
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:334)
at java.lang.Thread.run(Thread.java:619)
. Причина: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.updateOneTuple(LoaderTuplesNodes.java:265)
... 3 more
Причина: com.hp.hpl.jena.sdb.SDBException: проблема инициализации загрузчика для [Quads]
at com.hp.hpl.jena.sdb.layout2.TupleLoaderBase.<init>(TupleLoaderBase.java:47)
at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashBase.<init>(TupleLoaderHashBase.java:17)
at com.hp.hpl.jena.sdb.layout2.hash.TupleLoaderHashDB2.<init>(TupleLoaderHashDB2.java:22)
... 8 more