Ich arbeite an einer großen komplexen Software, die Daten von einem System liest und Teile davon in einem Apache Jena speichert Model
/DataSet
. Alles funktioniert gut, bis auf eine kleine Sache: Beim Versuch, eine hasPart-Beziehung zwischen zwei Entitäten im Modell hinzuzufügen, wird sie nie angewendet.Apache Jena fügt keine hasPart-Beziehung hinzu
I.e. Wenn ich den Code debugge, kann ich sehen, dass log4j einen Fehler meldet, der scheinbar anzeigt, dass die Transkation nicht aktiv ist.
Also, zu meiner Frage: Was könnte dazu führen, dass eine geöffnete Transaktion nicht aktiv ist? Es scheint ziemlich verwirrend, da die Zeile vor dem Hinzufügen der Eigenschaft 'hasPart' die Transaktion startet (begin(ReadWrite.WRITE)
auf der DataSet
)). Es wird keine Ausnahme ausgelöst, nur die protokollierte log4j-Fehlermeldung auf der Konsole.
Leider kann ich derzeit kein minimales Stück Code produzieren, das das Problem rechtzeitig aufzeigt. Meine Frage ist also mehr von der Natur, wenn eine Art Seele einen Zeiger oder eine theoretische Erklärung hat - das wird sehr nützlich sein. Jeder Zeiger oder jede Erklärung wird sehr geschätzt.
Die Protokollausgabe auf der Konsole sieht folgendermaßen aus: [ERROR] Nicht aktiv: 11514 - und ich denke, es stammt aus einer Klasse namens BlockMgrJournal, Methode: checkActive. – RVarttinen
https://github.com/apache/jena/blob/master/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/BlockMgrJournal.java#L300 scheint die Quelle der Nachricht zu sein . Versuchen Sie, Schreibvorgänge für die Datendateien eines laufenden Fuseki zu öffnen? Wenn ja, solltest du es nicht tun. Wenn Sie dies dennoch tun möchten, stellen Sie sicher, dass Ihre Java-App und Fuseki im selben Prozess ausgeführt werden: https://jena.apache.org/documentation/tdb/faqs.html#multi-jvm – berezovskyi