Um Inhalte im Sinne von Dokument- oder Seiteninhalten in Java zu speichern bietet sich JCR (Java Content Repository) an.
JCR ist offen, hat eine Referenz-Implementierung in Apache Jackrabbit (analog zu JEE in Apache Tomcat) und es bietet
alle wesentlichen Funktionalitäten, wie

  • Content Verwaltung
  • Versionierung
  • Abfragesprache
  • Locking

Was passiert eigentlich wenn das System “vergisst” ein gelocktes Objekt per “unlock” wieder freizugeben?
…und sich mit dem Restart herausstellt, dass der Lock nicht Session gebunden war?
…und danach offensichtlich ist, dass nur die Session, die den Lock gesetzt hat ihn auch lösen kann.

Wer tiefer in der Dokumentation von JCR wühlt, findet einen Eintrag, dass eine Superuser-Session dieses Problem beheben soll.
Schließlich der Versuch eine Superuser-Session zu erzeugen und der Hinweis tief, tief in Jackrabbit,
dass dies Funktion leider vergessen wurde.

Also selbst Hand anlegen:

org.apache.jackrabbit.core.lock.LockManagerImpl
beinhaltet die problematische Passage, die ein unlock verbietet.

Dann folgende Zeilen ändern:

Die Änderung bezieht sich auf Apache Jackrabbit 2.2.1, dürfte in anderen Versionen aber analog sein.

Nach dem entfernten der Lock sollte der Admin nicht vergessen, die Änderung wieder auszubauen ;-)