Vývojové oddělení připraví k instalaci aplikace následující:
Dle typu SQL databáze je nutné spustit dodané skripty, aby se vytvořila struktura databázových objektů vyžadovaných aplikací exchanger.war.
V následujícím textu se budu odkazovat na domovský adresář aplikačního serveru Tomcat pod proměnnou $CATALINA_HOME. Kroky k instalaci modulů jsou následující:
Po úspěšném spuštění aplikačního serveru budou jednotlivé WAR moduly rozbaleny v adresáři $CATALINA_HOME/webapps v adresářích odpovídajících jménům WAR modulů.
V dodávce z vývoje je defaultně v modulu exchanger.war nastavena podpora databáze HyperSQL. Jedná se o lehkou databázi, která není vhodná pro produkční nasazení. Proto je nutné v modulu exchanger.war provést dodatečné úpravy. Nyní jsou podporovány dvě plnohodnotné databáze - MS SQL a PostreSQL. Podporu produkční databáze lze získat těmito úpravami:
Dále se s modulem exchanger.war pracuje dle popisu v kapitole Instalace WAR modulů. Popis konfigurace přístupu k databázím je popsán v kapitole Konfigurace/Infrastrukturní.
Konfigurace aplikace je uložena v souboru web.xml, který lze nalézt v cestě $CATALINA_HOME/webapps/exchanger/WEB-INF. Při úpravách konfigurace v tomto souboru doporučuji soubor zazálohovat. V případě aktualizace aplikace bude tento soubor nahrazen souborem z aktualizovaného modulu, a dojde tak ke ztrátě konfigurace. Po aktualizaci je tedy nutné zazálohovaný soubor nahrát zpět do adresáře $CATALINA_HOME/webapps/exchanger/WEB-INF, aby byla konfigurace aktuální pro dané prostředí. Po změně konfigurace je nutné restartovat aplikační server.
Konfigurace je realizována standardní cestou konfigurace webové aplikace, tedy množinou jmen a hodnot uložených v elementech context-param. Parametry lze rozdělit na skupinu závislých na infrastruktuře a skupinu ovlivňujících chování samotné aplikace.
Nastavení ADUCID:
https://aim.demo.anect.com
Nastavení přístupu k SQL databázi:
jdbc:postgresql://host/exchanger
jdbc:sqlserver://host;databaseName=exchanger;
Nastavení přístupu k SMTP serveru:
Další nutné infrastrukturní parametry:
/opt/anect/exchanger/repo
/opt/anect/exchanger/domain.txt
, význam souboru je následující:Globální parametry jsou následující:
Dále jsou uvedeny konfigurační položky automatických úloh, které jsou spouštěny na základě Cron definice. Jedná se rozšířenou Cron definici s podporou vteřin, více viz https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html. Konfigurační parametry jsou následující:
Aplikační kód zapisuje své chování do logu. Tento log je určený především pro počáteční ladění a nedoporučuji jej mít zapnutý v produkčním prostředí. Při dodání instalačních komponent pro instalaci do produkčního prostředí by měla být komponenta exchanger.war dodána již s vypnutým logováním.
Po úpravách konfigurace logování je nutné restartovat aplikační server.
Konfigurace obecného logování aplikace je uložena v souboru $CATALINA_HOME/webapps/exchanger/WEB-INF/classes/log4j.properties. Obsah v produkční podobě může vypadat následovně:
log4j.rootLogger=WARN, CONSOLE log4j.logger.com.aducid.database=WARN log4j.logger.com.aducid.exchanger=WARN log4j.logger.com.aducid.web.controller=WARN log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d [%-5p] Thread[%-21t] %m%n
V situaci zapnutého podrobného je obsah následující:
log4j.rootLogger=WARN, CONSOLE log4j.logger.com.aducid.database=DEBUG log4j.logger.com.aducid.exchanger=DEBUG log4j.logger.com.aducid.web.controller=DEBUG log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d [%-5p] Thread[%-21t] %m%n
Hodnoty s prefixem log4j.logger.com.aducid byly tedy změněny z hodnoty WARN na DEBUG. Při tomto nastavení se veškeré zprávy zapisují do souboru $CATALINA_HOME/logs/catalina.out.
Kromě obecného logování je možné navíc zapnout SMTP logování pro detailnější informace o komunikaci se SMTP serverem. Toto nastavení je uloženo v konfiguraci $CATALINA_HOME/webapps/exchanger/dispatcher-servlet.xml. Zde je zobrazena část konfigurace, kde lze měnit úroveň logování:
... <property name="javaMailProperties"> <props> <prop key="mail.transport.protocol">smtp</prop> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.starttls.enable">true</prop> <prop key="mail.debug">false</prop> </props> </property> ...
Změnou hodnoty mail.debug na true lze docílit požadované změny. Informace se zapisují do logu nastaveném v obecné konfiguraci, defaultně tedy do souboru $CATALINA_HOME/logs/catalina.out.
V některých diagramech se pracuje s počtem pokusů o opakované odeslání, tj. textem ve smyslu 5 resend attemps
. Pracuje se tedy s konkrétní hodnotou pěti pokusů o odeslání. Důvodem je jednodušší pochopení celé problematiky. Hodnotu počtu pokusů o odeslání je možné nastavit na libovolnou hodnotu úpravou konfiguračního parametru maxResendAttempts
.
Součástí aplikace jsou automatizované úlohy, které provádí rozmanité úkoly. Podrobnější popis těchto úloh je zahrnut v kapitolách níže.
Tato úloha se stará o opakované odesílání emailů, pokud z nějakého technického důvodu nebyly odeslány. Každý neodeslaný email je označený jako *_NOT_SENT
(prefix se liší dle typu emailu) a tato úloha se v pravidelných intervalech určených konfigurační hodnotou scheduler.resendEmailCron
pokouší email znovu odeslat. Počet pokusů o doručení je určený konfigurační hodnotou global.maxResendAttempts
. Při hodnotě Cron výrazu 0 0 * * * *
a počtu pokusů o doručení nastavených na pět se úloha pokusí pětkrát odeslat email, a to každou celou hodinu. Pokud se ani poté email nepodaří doručit, je označen za nedoručitelný, tj. *_NOT_DELIVERABLE
(prefix se liší dle typu emailu). Tato úloha se snaží odeslat následující neúspěšné emaily:
Úloha v pravidelných intervalech kontroluje datum vypršení platnosti zásilky. Pokud platnost zásilky vyprší, je zásilka označená za EXPIRED
. V případě, že zásilka nebyla dosud stažena, je označena za EXPIRED_NOT_DOWNLOADED
. Stavem EXPIRED
jsou také označena metadata souboru a samotný soubor je fyzicky smazán v úložišti.
V okamžiku odeslání zásilky je vypočten datum, kdy má být příjemce zásilky notifikován, pokud si zásilku ještě nevyzvedl. Tento čas se nyní fixně rovná polovině doby platnosti zásilky. Pokud tedy odesílatel nastavil platnost zásilky na osm dní, je datum notifikace nastaveno na čtyři dny, a po těchto čtyřech dnech se v případě nestažení souboru příjemcem odešle příjemci notifikace. Pokud existuje problém s odesláním notifikace, vstupuje do hry úloha popsaná v kapitole Opakované odesílání emailů.
Tato úloha řeší situace, kdy byl emailový požadavek úspěšně odeslán, ale nebyl v požadované zpracován. Email tedy dorazil uživateli, ale uživatel v dané době neklikl na odkaz ve zprávě, aby tak dokončil příslušný proces. Standardní nastavení platnosti požadavku je deset dní. Úloha má za cíl takto nezpracované požadavky mazat, aby tak nedocházelo například k trvalé blokaci emailové adresy. Jedná se konkrétně o tyto situace:
UPLOADED
a již ne ve stavu SENT
)APPROVED
)APPROVED
)