Allgemeine Informationen zu sM-Client R5.0.7: Die publizierte Version 5.0.7 enthält einen Nachbearbeitungsprozess, um liegen gebliebene Meldungen nochmals zu verschicken bzw. zu empfangen. Meldungen, welche während einer bestimmten Zeitspanne im Status „message-handler-validate message“ oder „message-handler await validation“ hängengeblieben sind, werden als „stuck messages“ betrachtet. Das Timeout unterscheidet sich für kleine Meldungen (Grösse < 1MB) und grosse Meldungen (Grösse > 1MB). Die Grösse der Meldungen und der beiden Timeouts werden in globalconfig.properties mit den Parametern stuck.retry.small.msg.size, stuck.retry.time.offset.minutes, und stuck.retry.big.msg.minutes konfiguriert (Standardwerte, also ohne zusätzliche Konfiguration, sind 1048576, 60 bzw. 720; das entspricht 1 MB, 60 Minuten und 720 Minuten (=12h)). Zusätzlich gibt es noch einen Parameter namens stuck.job.interval.minutes (default Werte, 60min), welcher beschreibt, nach welchem Intervall liegen gebliebene Meldungen gesucht werden. Diese vorkonfigurierten Default-Werte sollten nur unter besonderen Umständen und in Absprache mit dem sM-Client-Support geändert werden. Die Konfiguration muss also diesbezüglich nicht angepasst werden. Mit dem „StuckMessageDetector“ werden die liegengebliebenen Meldungen jeweils noch einmal versendet/empfangen. Zusätzlich beschränken wir die maximale Anzahl von Verarbeitungsversuchen, um zu vermeiden, dass Meldungen in einen unendlichen Loop gelangen. Die maximale Anzahl von Versuchen ist in global-config.properties mit dem Parameter stuck.retry.max.amount konfigurierbar und wird per Default auf den Wert 2 gesetzt. Wenn eine Meldung die maximale Anzahl von Versuchen erreicht, wird der entsprechende Error geloggt; die Meldung bleibt in diesem Fall im TempVerzeichnis liegen. Eine weitere namentliche Verbesserung dieser Version betrifft das Verhalten beim Herunterfahren des sMClients: die Meldungen werden nicht mehr ins failed-Verzeichnis verschoben, falls ein graceful Shutdown während der Meldungsvalidierung oder der PDF-Generierung gemacht wird. Die Meldung wird in diesem Fall intern als „Reprocess due to shutdown“ markiert und nach dem erneuten Starten des sM-Clients wieder weiter verarbeitet (dabei wird beim Herunterfahren die Exception: „org.jbpm.JbpmException: JbpmConfiguration(jbpm.cfg.xml) is closed“ geloggt). Um sicher zu sein sollte der sM-Client während des Herunterfahrens keine neuen Meldungen zum Senden oder Empfangen erhalten. Ansonsten besteht die Gefahr, dass in Einzelfällen Meldungen ohne Audit-Trail-Eintrag (und ohne aussagekräftigen Error im Log) im TempFolder liegen bleiben. Dieses Verhalten wird in einer folgenden Version verbessert. Wir empfehlen dazu, dass zuerst JBoss abgeschaltet wird und danach HornetQ. Bei Ausfall der Datenbank versucht JBoss die Verbindung wieder herzustellen (siehe unten unter Empfohlene Konfiguration). Change Log R5.0.7.5: CHANGED: Nachbearbeitungsprozess: Die Meldungen, die in Status "message-handler-validate message" und "message-handler await validation" liegengeblieben haben, werden nochmals versendet/empfangen. o Die Timeouts werden in global-config.properties mit den Parameters stuck.retry.time.offset.minutes und stuck.retry.big.msg.minutes konfiguriert (Standardwerte sind 60 bzw. 720, also 60min und 720min (=12h)). o Die Suchfrequenz nach liegengebliebenen Meldungen wird durch den Parameter stuck.job.interval.minutes (Default 60min) konfiguriert. o Die maximale Anzahl neuer Versuche ist im File global-config.properties durch den Parameter stuck.retry.max.amount (Default 2mal) konfigurierbar. CHANGED: Update JBPM Version auf 3.2.14. CHANGED: Entfernen alter Workarounds von R5.0.4. (nicht relevant für die Benutzer). CHANGED: Empfang von Sammelmeldungen mit ungültigen oder invaliden Einzelmeldungen (ech0058v4). Die ungültigen oder invaliden Einzelmeldungen bleiben in der ZIP-Datei mit einer error.xml Datei und werden in den Failed-Ordner geschrieben. Ebenso wird mit invaliden ZIP-Dateien verfahren (ohne error.xml). CHANGED: StuckMessageDetector startet per Default 2h nachdem der sM-Client gestartet ist. CHANGED: Keine Überbleibsel im Temp-Ordner nachdem Meldungen nochmals versendet/empfangen werden. CHANGED: Kein Memory Leak mehr mit Patch von Xalan (für XML Processing der grossen Meldungen). CHANGED: Zusätzliche Log-Informationen wurden hinzugefügt, Memory Informationen werden alle 2 Minuten geloggt, dazu werden nun in jedem Fall Informationen geloggt, wann welche Meldung wohin verschoben wird. CHANGED: SMCTESTING-376: Graceful shutdown während Meldungsverarbeitung. Das Problem ist wie oben beschrieben teilweise gelöst. FIXED:SMCSUPPORT-792: Triage ist möglich für ELM Test-Meldungen. FIXED: SMCSUPPORT-811: Grösse von ELM Meldungen wird jetzt korrekt abgefragt. FIXED: SMCSUPPORT-822: Für ELM Meldungen Name der PDF-Datei wie in Spezifikation, also bis auf die Endung gleich wie der Meldungs-File-Name. FIXED: SMCSUPPORT-847: eventDate wird als messageDate im Datenbank gespeichert, falls messageDate in der Meldung nicht verfügbar ist. FIXED: SMCSUPPORT-855: PDF-Generated Fehler. Auftreten des Fehler wird verhindert. Caveat: Meldungen welche sich beim Update in dem Status befinden, werden vom Nachbearbeitungsprozess nicht aufgeräumt. FIXED: SMCSUPPORT-869: Abhängigkeit zu EOReg Meldungen. FIXED: SMCSUPPORT-878: Fehler bei Erstellung des sedex-Umschlags. FIXED: SMCSUPPORT-883: sM-client DB-Error beim Empfang einer ELM Meldung. FIXED: SMCSUPPORT-894: PDF Generierung ELM mit Gemeinde-Splitting. FIXED: SMCTESTING-370: PDF-Generierung in ELM-Domain funktioniert nicht FIXED: SMCTESTING-373: Meldungen werden sequentiell bearbeitet und nur von einem Mandanten gleichzeitig zugegriffen. FIXED: Suche nach interner Meldungs-ID funktioniert nicht. (Caveat: Im Spezialfall, dass nach einer Meldung gesucht wird, die nicht eine eineindeutige Meldungs-ID hat, gibt es einen Fehler. Dies kann produktiv aber nicht vorkommen.) Empfohlene Konfiguration für JBoss-Server und Datenbank: Wichtig: Für die PDF-Generierung muss der JAVA_OPTS-Parameter -Dlog4j.configuration unbedingt gesetzt werden. Siehe SMCSUPPORT-757 2GB für MaxHeapSize und MinHeapSize für JBoss-Servers, um unnötiges Memory Swapping für Windows zu vermeiden. Das entspechende Konfigurationsfile ist in [JBoss Installationsverzeichnis]/bin/run.conf.bat zu finden. Ersetzen Sie die Zeile 43 als: set "JAVA_OPTS=-Xms2048M -Xmx2048M -XX:MaxPermSize=512M" innodb_lock_wait_timeout (konfiguriert in my.ini im MySQL Installationsverzeichnis ) sollte auf 150 erhöht werden (falls der Parameter nicht aufgeführt ist, muss er neu gesetzt werden). Um die Performance der Datenbank zu verbessern, liefern wir ein Skript um Indexes auf die jBPMTabellen zu erstellen. Ausführen des Aktualisierungsskripts (z.B. update-smclient-oracle.sql für Oracle) entsprechend der verwendeten Datenbank Im Falle von MySQL soll INNODB als Engine gesetzt sowie der Parameter validationQuery (Tomcat) oder <valid-connection-checker-class-name> (JBoss) auf dem Applikation Server konfiguriert werden, siehe Beispiel-Dateien unten. jms.sender.timeout.hours in message-handler-[domain].properties muss grösser als stuck.retry.big.msg.timeout im global-config.properties gesetzt werden. (ACHTUNG: jms.sender.timeout.hours ist im Stunden und stuck.retry.big.msg.timeout in Minuten gesetzt) Beispielkonfigurations-Files Beispiel [JBOSS_HOME]/server/default/deploy/smclient-ds.xml (JBoss 4.2.3 und 5.1 mit MySQL, mssql und oracle) smclient-mysql-ds.xml smclient-mssql-ds.xml smclient-oracle-ds.xml Beispiel CATALINA_HOME/config/CATALINA/localhost/ smclient.xml Datei für Tomcat (mit MySQL, siehe Kommentar für andere DBs) smclient.xml Auszug von standalone.xml <datasource> für EAP6.1 mit MySQL, mssql und oracle standalone-eap61-myssql-datasource.txt standalone-eap61-mssql-datasource.txt standalone-eap61-oracle-datasource.txt