Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

Anpassung von Core-Klassen des Atlassian Confluence Frameworks

In meis­ten Fällen beim Entwickeln von Confluence Plugins ist es nicht not­wen­dig die von Confluence zur Verfügung gestell­ten Core-Klassen (z.B. diverse Manager: ContentEntityManager, SmartListManager oder Daos: LabelDao, PageDao) zu über­schrei­ben. Zwei Paradebeispiele, bei denen es aller­dings unum­gäng­lich wäre, sind die Änderung des Datenbankschemas oder die Erweiterung der Managerfunktionalität.

Atlassian Confluence selbst bie­tet neben dem Erweitern von Actions mit­tels atlassian-plugin.xml (siehe Erweitern von Actions in Confluence) kei­ner­lei Möglichkeiten direkt die Core-Klassen zu über­schrei­ben. Aus die­sem Grund ist es not­wen­dig in die Spring Context-Dateien, die für die Registrierung der ein­zel­nen Klassen ver­wen­det wer­den, ein­zu­grei­fen. Dies kann auf zwei Wegen bewerk­stel­ligt wer­den:

  • Man ent­packt das Confluence JAR, nimmt die Änderungen vor und erzeugt ein neues Archiv.
  • Man über­schreibt die web.xml und ver­weist auf die eige­nen Context-Dateien.

Die erste Variante erweist sich als deut­lich unprak­ti­ka­bel, da dadurch offen­sicht­lich das Testen, die Wartbarkeit sowie die Updatefähigkeit lei­den wür­den.

Bei der zwei­ten Möglichkeit hin­ge­gen ver­hält es sich etwas anders, da das JAR-Archiv zu kei­ner Zeit direkt mani­pu­liert wird. Wie das funk­tio­niert, wird in den nach­fol­gen­den zwei Schritten demons­triert.

1. Anpassung der web.xml

In der confluence/WEB-INF/web.xml befin­det sich fol­gen­der Abschnitt (hier ver­kürzt dar­ge­stellt):

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:/databaseSubsystemContext.xml,
			...
			classpath:/applicationContext.xml,
			...
			classpath:/jmxContext.xml
		</param-value>
	</context-param>

Hevorzuheben wären die Dateien databaseSubsystemContext.xml, die für die Entity-Mappings zustän­dig ist, sowie die applicationContext.xml, die die Registrierung sämt­li­cher Manager- und Dao-Klassen vor­nimmt.

Nun muss ledig­lich der Pfad bzw. der Name der zu bear­bei­ten­den Datei geän­dert wer­den. Prinzipiell ist es im übri­gen auch mög­lich eine neue Context-Datei ein­zu­tra­gen, in der zusätz­li­che Beans regis­triert wer­den kön­nen.

2. Context-Dateien erstellen und in den Classpath einbetten

Als Ausgangspunkt beim Erstellen einer neuen Context-Datei bie­tet sich an den Inhalt der anzu­pas­sen­den Datei zu kopie­ren, um darin die gewünsch­ten Änderungen vor­zu­neh­men. Wie die ein­zel­nen Anpassungen bzw. Erweiterungen einer Spring-Bean vor­zu­neh­men sind, ist aus der sehr guten, ein­schlä­gi­gen Dokumentation von Spring zu ent­neh­men. (siehe Spring Dokumentation)

Abschließend ver­bleibt noch das Erzeugen eines JAR-Archivs und das Kopieren jenes in das confluence/WEB-INF/lib Verzeichnis des Apache Tomcats.

Related Posts

Pin It on Pinterest