All KGS OSGi based products contain the KGS ProtocolWriter plugin inside its delivered packet (war):
KGS Contentserver
KGS Webservice
KGS DocumentRouter (3.x & 4.x)
KGS Scanserver
KGS WriteCache
KGS ReadCache
Dieser erlaubt es in eine Datenbank diverse Aktionen (create,put,get etc.) zu protokollieren. Dies kann in den Produkten explizit aktiviert bzw. deaktiviert werden.
Ist zusäzlich TiA Core (mit CMIS konformer Ablage) im Einsatz, so wird zusätzlich zum ProtocolWriter auch in das konfigurierte TiA Core Modul protokolliert (z.B. ElasticSearch).
Die Implementierung ist über Services realisiert wurden. Die einzelnen KGS Komponenten fungieren dabei als Service-Consumer. Sie “publishen” einen Protokolleintrag an den ein Interface (IProtocolWriter), welcher im KGS Core Bundle liegt.
Existieren nun Service-Listener im OSGi-Framework, so nehmen diese die Protokollnachricht entgegen und verarbeiten diese.
Der KGS ProtocolWriter ist ein Service-Listener
TiA Core ist ein Service-Listener
Diese Services sind losgelöst voneinander und kennen sich nicht. Dieses Konzept ermöglicht es uns, beliebig viele neue Service-Listener hinzuzufügen oder zu entfernen, ohne den anderen Listener zu beeinflussen.
Remove protocol writer bundle
Möchte man nun z.B. nicht mehr in eine ProtocolWriter DB schreiben, so kann das Bundle “KGS ProtocolWriter” aus dem WAR entfernt werden. Es ist sogar möglich im laufenden Betrieb das Bundle zu stoppen. Ist TiA Core noch in dem WAR enthalten, wird hier weiterhin in Elastic protokolliert, nicht aber mehr in die konfigurierte Datenbank des ProtocolWriters.
Es ist ausreichend den KGS ProtocolWriter (com.software.kgs.plugin.protocol-x.x.x.jar) aus dem WAR zu entfernen. Dieses befindet sich unter:
<WAR>\WEB-INF\eclipse\plugins\
Eine weitere Anpassung ist nicht notwendig.
Optional:
OSGi startet Bundles beim starten in einer speziellen Reihenfolge. Diese Reihenfolge ist in
<WAR>\WEB-INF\eclipse\configuration\config.ini
festgelegt.
Diese kann entfernt werden. Dies muss aber nicht geschehen, da OSGi nur die Bundles in der Reihenfolge startet, die es auch finden kann. Existiert das Bundle “com.software.kgs.plugin.protocol-x.x.x.jar” nicht mehr im eclipse/plugins ordner, so überspringt OSGi den Startvorgang für dieses Bundle.
Sollte diese Datei modifiziert werden, so ist auf die Syntax zu achten. Jede Zeile (außer der letzten) endet mit einem Komma sowie ein Space und ein Backslash (für Zeilenumbruch). Für mehr [interne] Informationen gibt es hierzu mehr:
/wiki/spaces/WIKI/pages/6750661
Wichtig: Die config.ini wird nur einmalig beim deployment ausgeführt. Das bedeutet, dass jede Änderung an dieser Datei ein komplettes Redeployment der WAR-Datei vorraussetzt. Die Datei in einer bereits deployten Version zu modifizieren hat keinen Effekt.
Zugehörige Konfigurationsdateien
Wird der ProtocolWriter gestartet und es ist noch keine Konfiguration im Vorfeld in dem WAR enthalten (Default-Auslieferung), so legt der ProtocolWriter selbstständig in seinem config-Ordner (…/protocol/) eine neue Konfiguration mit dem Namen “Protocol Service.cfg” an. Dies gilt für alle OSGi Bundles.
Wurde der WAR-Container aber bereits vorkonfiguriert (<WAR>\conf\protocol\Protocol Service.cfg), so kann dieser Ordner (ab inlusive “protocol”) entfernt werden. Diese Dateien sind ohne das Bundle / die JAR Datei verwaist.
Referenzen in anderen Konfigurationsdateien
Der ProtocolWriter kann von vielen KGS Produkten benutzt werden. (Liste: Siehe oben). Jeder dieser KGS Produkte besitzt eine Konfiguration, in der die Einstellungen zum Protokoll gesetzt werden können. Zum Beispiel:
../contentserver/ContentServer.cfg
z.B.
Diese Einträge (KEYs) müssen behalten werden. Es ist erlaubt die Werte (true und false) zu ändern, der gesamte <entry>-Zeile muss aber in der Konfiguration weiterhin existieren.
Die Parameter in den KGS Produkten steuert, ob das Bundle (hier: KGS Contentserver) ein Protokolleintrag an das OSGi weitergibt und welche Art von Protokolleinträgen es weitergibt. Insofern ein zweiter Service-Listener (wie KGS TiA Core [AutoDigit]) im Framework existiert, so wird dieser nur ausgelöst, wenn Protokolle an das OSGi Framework weitergegeben werden.
Ein entfernen hat zur Folge, dass die Werte bei Applikationsstart mit Default-Werten neu geschrieben werden.