我正在使用 Jena 和 Tomcat 开发一个 Web 应用程序,我发现通常在抛出异常之后,TDB 会发生一些事情,并且某些从模型中检索数据的调用会导致此 execption:
org.openjena.atlas.lib.InternalErrorException: Invalid id node for subject (null node): ([00000000000010D2], [000000000000003D], [0000000000000072])
at com.hp.hpl.jena.tdb.lib.TupleLib.triple(TupleLib.java:130)
at com.hp.hpl.jena.tdb.lib.TupleLib.triple(TupleLib.java:116)
at com.hp.hpl.jena.tdb.lib.TupleLib.access$000(TupleLib.java:45)
at com.hp.hpl.jena.tdb.lib.TupleLib$3.convert(TupleLib.java:77)
at com.hp.hpl.jena.tdb.lib.TupleLib$3.convert(TupleLib.java:73)
at org.openjena.atlas.iterator.Iter$4.next(Iter.java:301)
at com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:80)
at com.hp.hpl.jena.util.iterator.Map1Iterator.next(Map1Iterator.java:47)
at com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:80)
at com.hp.hpl.jena.rdf.model.impl.StmtIteratorImpl.next(StmtIteratorImpl.java:45)
at com.hp.hpl.jena.rdf.model.impl.StmtIteratorImpl.nextStatement(StmtIteratorImpl.java:55)
at com.example.myApp (myApp.java:123)
为什么这种情况不断发生 - 我在每个 doPost/doGet 方法的末尾调用 model.close() 。大多数时候它似乎工作,只有当出现问题并且服务器在开发过程中崩溃或抛出某些异常时,我才会遇到这个问题。
遇到这个问题后,是否有任何方法可以恢复或者是将三重存储的定期备份保存在文件中然后再次重新读取它们的唯一方法?
提前致谢。