Page History
Navitabs | ||
---|---|---|
| ||
Overblik
Dette dokument beskriver installation og konfiguration af Livs- og behandlingstestamenteregisterBehandlingstestamenteregister-servicen (LTR-BTR) samt tilhørende migreringsværktøj. Konfiguration af tilhørende DGWS/IDWS Proxy er også beskrevet.
Livs- og behandlingstestamenteregisterBehandlingstestamenteregister-servicen består af 3 komponenter (war-arkiver), der skal konfigureres og deployes på en applikationsserver:
...
Info |
---|
Alle filer der refereres til ligger sammen med projektets kildekode i NSP's Subversion. Referencer til stier er relative med udgangspunkt i projektets rodmappe. |
Ændringslog
Version | Dato | Ændring | Ansvarlig |
---|---|---|---|
1.0.1 | 2018-08-15 | Initialt dokument | Trifork |
1.0.2 | 2018-08-31 | Ny release | Trifork |
1.0.3 | 2018-09-06 | Endpoints ændret fra /ltr-btr til /btr | Trifork |
1.0.4 | 2018-09-11 | Ændret databasedriver til MySQL | Trifork |
1.0.6 | 2018-10-15 | Tilføjelse af tre SQL-scripter | Trifork |
1.0.12 | 2019-08-19 | Opdateret default value for property "minlog.read-activity-text.ltr" og "minlog.read-activity-text.btr". Tilføjet to SQL-scripter. | Trifork |
Byggevejledning
For at bygge projektet og dets deployables (war-filer) uden at køre unit-tests og integrationstests, anvendes følgende Maven kommando:
...
Projektets deployables ender i target-mappen under de respektive moduler.
Afvikling af unit-tests
For at afvikle projektets unit-tests, skal en MariaDB-database-server være tilgængelig.
...
Alternativt kan også samtidigt bygge projektet ved at anvende Maven-kommandoen:
mvn clean install
Afvikling af integrationstests
Se testvejledningen.
Krav til miljø
Kravene er baseret på det driftsmiljø, der aktuelt er gældende på den Nationale Service Platform (NSP).
Krav til applikationsserver
Servicen er udviklet til at kunne afvikles på Wildfly 8 i produktion, som bliver brugt på NSP platformen, og denne installationsvejledning beskriver en sådan opsætning. Applikationsserveren kræver Java 8 eller højere.
Specialhensyn i miljøer med flere app-servere
I miljøer med flere app-servere er det vigtigt at servicens interne jobs ikke kører i flere inkarnationer, da der så kan opstå "race conditions". Derfor bør det sikres at jobbenes "enabled"-properties fra application.properties kun er true på præcis én app-server, og false på de øvrige.
...
Property |
---|
jobs.delete.enabled.ltr |
jobs.delete.enabled.btr |
Krav til operativsystem
Der stilles ingen krav til operativsystemet udover Java-understøttelse. Ubuntu Linux bruges som operativsystem på NSP’en, men udviklingen af servicen er foretaget på Windows 10 og denne platform kan ligeledes afvikle servicen.
Krav til database
Servicen er testet mod MariaDB version 10.1, som bliver brugt på NSP platformen.
Krav til hardware
Der stilles ikke nogle minimumskrav til hardware, udover minimumskravene for operativsystemet, for at kunne afvikle servicen fornuftigt til testformål. Dog skal man forvente at bruge high-end hardware (både cpu, ram, netkort og diske) for at kunne opfylde de gældende svartidskrav på NSP.
Oprettelse af databaser og tabeller
Herunder beskrives servicens tilgang til database samt oprettelse af tabeller og views.
Tilgang til database
Servicen kræver to databaser: en til Livstestamenteregistret og en til Behandlingstestamenteregistret. Derudover afhænger den af adgang til et view i en (replikeret) stamdata-database.
...
- Ved normal drift i produktion: SELECT
- Yderligere nødvendige rettigheder ved databaseoprettelse og migreringer: CREATE VIEW, DROP
Oprettelse af database og tabeller
Datamodellen styres vha. inkrementelle SQL-scripter, der kan findes under mappen ltr-btr-service/etc/db/migration. De er inddelt i tre undermapper:
...
Ved initial installation af servicen vil det således være følgende scripter, der skal køres i den nedenstående rækkefølge:
Servicens Livstestamenteregister-database
- ltr/V1__create_LivingWill.sql
- ltr/V2__create_PropertiesLivingWill.sql
- ltr/V8__add_PersonIdentifier_index.sql
Servicens Behandlingstestamenteregister-database
- btr/V3__create_TreatmentWill.sql
- btr/V4__create_PropertiesTreatmentWill.sql
- btr/V5__alter_add_NoForcedTreatmentIfIncapable.sql
- btr/V6__migrate_RelativeAcceptanceRequired_to_AcceptanceNeeded.sql
- btr/V7__add_AcceptanceNeeded_for_all.sql
- btr/V9__add_PersonIdentifier_index.sql
(Replikeret) Stamdata-database
- stm/R__create_v2_Person_Simplified_view.sql
...
Info |
---|
Scriptet R__create_v2_Person_Simplified_view.sql opretter et view, som afhænger af eksistensen af tabellen v2_Person. Dette er tabellen, der indeholder CPR-ændringer, og den skal man selv stå for at levere. Under afvikling af unit-tests bliver en testudgave af denne tabel automatisk oprettet vha. et script i projektets test-resources. |
Deployment på Wildfly
Denne sektion beskriver konfiguration og deployment af alle ovenstående komponenter på Wildfly 8.
Installation af konfigurationsfiler
ltr-btr-service-wildfly og ltr-migration konfigureres ved hjælp hver deres Wildfly-modul, der indholder de nødvendige konfigurationsfiler til valg af datasources, brugerdefinerede parametre, logning, mm.
...
Info |
---|
Alle konfigurerbare properties bør gennemgås inden idriftsættelse, men standardværdierne er tiltænkt anvendelse i produktion medmindre andet er angivet. Med "standardværdierne" forstås de værdier der står i eksempelfilerne under etc/wildfly-mappen i projektets kildekode. |
Konfiguration af servicen
Herunder beskrives properties i ltr-btr-service-wildfly komponentens konfigurationsfiler.
application.properties
Properties er her opdelt i to tabeller. Den første tabel indeholder anvendte Spring Boot-properties. Den anden tabel indeholder properties, der er specifikt defineret til brug i servicen. Begge typer af properties er defineret i samme konfigurationsfil.
Spring Boot-properties
Property | Beskrivelse | Default |
---|---|---|
spring.active.profiles | Aktiv profil i Spring Boot. Skal ikke ændres. Anvendes til at styre forskellige databasekonfigurationer ved henholdsvis unit-tests og deployment. | production |
spring.application.name | Navnet på applikationen. Skal ikke ændres. | btr |
spring.jmx.enabled | Disable Spring Boot JMX. Skal ikke ændres. Deaktiveret da vi ikke udstiller særlig JMX funktionalitet. | false |
spring.jta.enabled | JTA transaktioner. Det er påkrævet at denne er false, således at Spring Boot i stedet anvender dens egen håndtering af transaktioner. (true/false) | false |
management.server.port | Port som Spring Boot management endpoints bind'er på. Endpoints deaktiveres ved at sætte værdien til -1. | -1 |
Komponentspecifikke-properties
Property | Beskrivelse | Default |
---|---|---|
datasource.ltr.jndi-name | Angiver navnet på en JNDI datasource til Livstestamenteregister-databasen | java:jboss/datasources/LTR-DS |
datasource.btr.jndi-name | Angiver navnet på en JNDI datasource til Behandlingstestamenteregister-databasen | java:jboss/datasources/BTR-DS |
datasource.stamdata.jndi-name | Angiver navnet på den JNDI datasource der giver adgang til en (replikeret) stamdata-database | java:jboss/datasources/STM-DS |
dcc.endpoint.ltr | Angiver det endpoint, som DCC'en skal kalde for Livstestamenteregistret. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. Bør ændres før produktion. | http://test1.fsk.netic.dk:8080/btr/ltr |
dcc.endpoint.btr | Angiver det endpoint, som DCC'en skal kalde for Behandlingstestamenteregistret. Dette kommer til at fremgå af den XML, der returneres i /dksconfig . Bør ændres før produktion. | http://test1.fsk.netic.dk:8080/btr/btr |
minlog.read-activity-text.ltr | Angiver den tekst der registreres i MinLog, når der bliver læst Livstestamente-data for et CPR-nummer. | L\u00e6sning af Livstestamente |
minlog.read-activity-text.btr | Angiver den tekst der registreres i MinLog, når der bliver læst Behandlingstestamente-data for et CPR-nummer. | L\u00e6sning af Behandlingstestamente |
schemavalidation.validate-requests | Angiver om requests skal schema-valideres (true/false) | true |
schemavalidation.validate-responses | Angiver om responses skal schema-valideres (true/false) | true |
schemavalidation.fail-on-response-error | Angiver om et kald skal returnere fejl, hvis response ikke er schema-valid (true/false) | true |
forward-only-filter.enabled | Angiver om servicen kun skal kunne tilgås igennem DGWS/IDWS Proxyen (wsproxy komponenten). Bør altid være sat til true. (true/false) | true |
ltr.close-date | Angiver det præcise tidspunkt (ISO 8601) fra hvornår mulighed for oprettelser deaktiveres for Livstestamenteregistret. Hvis denne er null eller ikke er mulig at parse som et tidspunkt, vil oprettelser alligevel være muligt, og en advarsel vil blive logget ved opstart. | 2019-01-01T00:00:00+01:00 |
btr.open-date | Angiver det præcise tidspunkt (ISO 8601) fra hvornår mulighed for oprettelser aktiveres for Behandlingstestamenteregistret. Hvis denne er null eller ikke er mulig at parse som et tidspunkt, vil mulighed for oprettelse alligevel være muligt, og en advarsel vil blive logget ved opstart. Hvis oprettelser og opdateringer deaktiveres for Behandlingstestamenteregistret, vil integrationstestene fejle. | 2018-06-01T00:00:00+01:00 |
jobs.delete.enabled.ltr | Livstestamenteregister-slettejob: Angiver om det schedulerede slettejob skal være aktiveret (true/false) | true |
jobs.delete.schedule.ltr | Livstestamenteregister-slettejob: Angiver scheduling-pattern for jobbet | 0 0 12 * * ? |
jobs.delete.cpr-max-results.ltr | Livstestamenteregister-slettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen | 1000 |
jobs.delete.cpr-max-loops.ltr | Livstestamenteregister-slettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering | 1000 |
jobs.delete.enabled.btr | Behandlingstestamenteregister-slettejob: Angiver om det schedulerede slettejob skal være aktiveret (true/false) | true |
jobs.delete.schedule.btr | Behandlingstestamenteregister-slettejob: Angiver scheduling-pattern for jobbet | 0 0 12 * * ? |
jobs.delete.cpr-max-results.btr | Behandlingstestamenteregister-slettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen | 1000 |
jobs.delete.cpr-max-loops.btr | Behandlingstestamenteregister-slettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering | 1000 |
log4j2.xml
Konfigurerer logning for servicen.
...
Se den officielle Log4j 2 dokumentation for alternativ konfiguration.
minlogclient.properties
Konfigurerer MinLog for servicen.
...
I produktion skal properties konfigureres som beskrevet i MinLog Service - Guide til anvendere .
nspslalog-btr.properties
Konfigurerer SLA-logning for servicen.
...
Se NSP-util - Designdokument.doc for alternativ konfiguration.
log4j-nspslalog.properties
Standardværdierne konfigurerer en Log4j-backend der logger med ISO 8601 timestamps.
Se NSP-util - Designdokument.doc eller den officielle Log4j 1 dokumentation for alternativ konfiguration.
Konfiguration af proxy-komponent
Wsproxy er en separat komponent og har derfor adskilte konfigurationsfiler ift. selve servicen. Bemærk at disse konfigurationsfiler ikke er placeret i et modul, men i stedet under etc/wildfly/standalone/configuration. De skal installeres i <wildfly-root>/ standalone/configuration.
Der henvises til Installationsvejledning (DGWS/IDWS Proxy) for nærmere beskrivelse af konfigurationen.
wsproxy-btr.properties
Konfigurerer wsproxy komponenten.
Standardværdierne indeholder konfiguration til test1-miljøet, der signerer IDWS-responses med det medfølgende testcertifikat.
proxyconfig-btr.xml
Konfigurerer mapning af requests til den interne forwarding fra wsproxy til selve servicen.
Standardværdierne angiver nogle brugbare konfigurationer af mapninger for anvendelse i produktion.
log4j2-wsproxy-btr.xml
Konfigurerer wsproxy komponentens egen logning. Komponenten har både service-logning og audit-logning.
Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion.
Konfiguration af migreringskomponent
application.properties
Property | Beskrivelse | Default |
---|---|---|
spring.application.name | Navnet på applikationen | ltr-migration |
spring.jmx.enabled | Disable Spring Boot JMX. Skal ikke ændres. Deaktiveret da vi ikke udstiller særlig JMX funktionalitet. | false |
spring.jta.enabled | JTA transaktioner. Det er påkrævet at denne er false, således at Spring Boot i stedet anvender dens egen håndtering af transaktioner. (true/false) | false |
management.server.port | Port som Spring Boot management endpoints bind'er på. Endpoints deaktiveres ved at sætte værdien til -1. | -1 |
datasource.primary.jndi-name | Angiver navnet på den primære JNDI datasource | java:jboss/datasources/LTR-DS |
migration.personFileName | Fil med data i CSV format, der indeholder persondata. | PersonData.csv |
migration.ltrFileName | Fil med data i CSV format, der indeholder Livstestamentedata. | LivingWillData.csv |
log4j2.xml
Konfigurerer logning for migreringskomponenten.
...
Se den officielle Log4j 2 dokumentation for alternativ konfiguration.
Konfiguration af datasources
ltr-btr-service-wildfly komponenten kræver adgang til 2 JNDI datasources. Disse skal opsættes i Wildfly og refereres til i servicens application.properties.
...
Info |
---|
I mappen etc/wildfly/standalone/deployments er inkluderet eksempler på datasource-konfigurationer til Livstestamenteregister-databasen (ltr-ds.xml), Behandlingstestamenteregister-databasen (btr-ds.xml) og til (den replikerede) stamdata-database (stm-ds.xml). Disse datasource-konfigurationsfiler kan opsættes i Wildfly ved at kopiere dem ind i <wildfly-root>/standalone/deployments. Derudover skal der også deployes en databaseklient-driver i samme mappe. De medfølgende datasource-konfigurationer anvender driveren mysql-connector-java-5.1.29.jar og denne medfølger ikke i projektet. |
Ændring til standardkonfiguration i Wildfly
Standardkonfigurationen i Wildfly refererer i filen modules/system/layers/base/sun/jdk/main/service-loader-resources/META-INF/services/javax.script.ScriptEngineFactory til 2 ScriptEngineFactories:
...
RhinoScriptEngineFactory findes ikke i Java 8. Derfor fås fejlen "javax.script.ScriptEngineFactory: Provider com.sun.script.javascript.RhinoScriptEngineFactory not found" når der anvendes Java 8. For at undgå denne fejlmeddelelse under opstart af Wildfly skal den første linje fjernes eller udkommenteres.
Deployment af komponenter
Komponenter, der skal deployes til Wildfly, kopieres til mappen <wildfly-root>/standalone/deployments.
...
Se driftsvejledningen for yderligere information.
Opgradering af komponenter
Når der kommer opgraderinger til en komponent, vil der medfølge release notes, der beskriver opgradering, fallback, osv. for den enkelte komponent.
Start/genstart af komponenterne
Alle komponenter kan genstartes ved at opdatere war-filens last access time med Unix-kommandoen touch, hvilket automatisk detekteres af Wildfly's deploynent scanner. Alternativt kan Wildfly genstartes.