Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For at afvikle projektets unit-tests, skal en MariaDB-database-server være tilgængelig.

I udviklingssammenhæng og ved unit-tests kan man nøjes med én databasebruger og ét database-schema. Disse kan oprettes vha. scripterne recreate_service_user.sql og recreate_database.sql som er lokaliseret under ltr-btr-service/src/test/resources/db. Hvis disse standard-scripts anvendes, så passer de database-credentials, som er angivet i application.properties-filen i projektet. oprette de nødvendige database-schemas vha. scriptet compose/database/db/create_db.sql. I application.properties-filen i projektet er datasources som default sat til at anvende root-user med tomt password. Database-strukturen bliver automatisk oprettet vha. Flyway SQL-scripter, når unit-testene afvikles.

...

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øjereKomponenten er tilpasset at kunne indgå i det aktuelt gældende CI-miljø på NSP. Det tager aktuelt udgangspunkt i version 1 af NSP's platform Docker image.

Specialhensyn i miljøer med flere app-servere

...

Property
jobs.delete.enabled.ltr
jobs.delete.enabled.btr

Krav til

...

database

Servicen er testet mod MariaDB

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 særlige minimumskrav til hardware, udover minimumskravene for operativsystemet, for at kunne afvikle servicen fornuftigt til testformål. Dog skal man men man skal forvente at bruge high-end hardware (både cpu, ram, netkort og diske) for at kunne opfylde de gældende svartidskrav på NSP.

...

Datamodellen styres vha. inkrementelle SQL-scripter, der kan findes under mappen  ltr-btr-service/etccompose/database/db/migration. De er inddelt i tre 3 undermapper:

  • ltr: indeholder scripter til at køre på servicens Livstestamenteregister-database
  • btr: indeholder scripter til at køre på servicens Behandlingstestamenteregister-database
  • stm: indeholder scripter til at køre på en (replikeret) stamdata-database.

...

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 SQL-script i projektets test-resources compose/database/db/test.


Deployment

...

Komponenten deployes vha. NSP's platform Docker image og konfigurationsfiler mountes i containeren som angivet i projektets Compose-filer.

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.

...

Wildfly-modulet er integreret i komponentens Docker image.


Info

Alle konfigurerbare properties bør gennemgås inden idriftsættelse, men standardværdierne er tiltænkt anvendelse i produktion medmindre andet er angivet.

Konfiguration af servicen

Herunder beskrives properties i ltr-btr-service-wildfly

...

Wildfly-modulerne, som indeholder konfigurationsfilerne, kan findes under etc/wildfly/modules. Her findes et separat modul for henholdsvis ltr-btr -service-wildfly og ltr -migration, da begge komponenter har hver deres modul med tilhørende konfigurationsfiler. Denne separation af konfigurationsfiler gør, at det, når migreringsprocessen er afsluttet, er muligt helt at fjerne konfigurationsfiler relateret til migrering uden at skulle ændre i konfigurationsfiler for ltr-btr -service-wildfly.

For at installere begge moduler på Wildfly kopieres indholdet i mappen etc/wildfly/modules til Wildfly's modul-mappe (<wildfly-root>/modules). Med denne fremgangsmåde vil alle nødvendige filer blive tilføjet til Wildfly de rigtige steder, og eksempelvis vil filen i etc/wildfly/modules/dk/sundhedsdatastyrelsen/livstestamente/main/module.xml ende under <wildfly-root>/modules/dk/sundhedsdatastyrelsen/livstestamente/main/module.xml.

Selve konfigurationsfilerne for ltr-btr -service-wildfly er lokaliseret i mappen <wildfly-root>/modules/dk/sundhedsdatastyrelsen/livstestamente/main/resources og i den tilsvarende mappe i modulet for ltr -migration komponenten. Konfigurationsfilerne vil være tilgængelige direkte på classpath'en for de deployede komponenter.

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

...

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)

...

 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

PropertyBeskrivelseDefault
spring.active.profilesAktiv profil i Spring Boot. Skal ikke ændres. Anvendes til at styre forskellige databasekonfigurationer ved henholdsvis unit-tests og deployment.production
spring.application.nameNavnet på applikationen. Skal ikke ændres.btr
spring.jmx.enabledDisable 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.portPort som Spring Boot management endpoints bind'er på. Endpoints deaktiveres ved at sætte værdien til -1.-1

Komponentspecifikke-properties

PropertyBeskrivelseDefault
datasource.ltr.jndi-nameAngiver navnet på en JNDI datasource til Livstestamenteregister-databasenjava:jboss/datasources/LTR-DS
datasource.btr.jndi-nameAngiver navnet på en JNDI datasource til Behandlingstestamenteregister-databasenjava:jboss/datasources/BTR-DS
datasource.stamdata.jndi-nameAngiver navnet på den JNDI datasource der giver adgang til en (replikeret) stamdata-databasejava:jboss/datasources/STM-DS
dcc.endpoint.ltrAngiver 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.btrAngiver 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.ltrAngiver 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.btrAngiver den tekst der registreres i MinLog, når der bliver læst Behandlingstestamente-data for et CPR-nummer.L\u00e6sning af Behandlingstestamente
schemavalidation.validate-requestsAngiver 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.enabledAngiver 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-dateAngiver 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.ltrLivstestamenteregister-slettejob: Angiver om det schedulerede slettejob skal være aktiveret (true/false)true
jobs.delete.schedule.ltrLivstestamenteregister-slettejob: Angiver scheduling-pattern for jobbet0 0 12 * * ?
jobs.delete.cpr-max-results.ltrLivstestamenteregister-slettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen1000
jobs.delete.cpr-max-loops.ltrLivstestamenteregister-slettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering

1000

jobs.delete.enabled.btrBehandlingstestamenteregister-slettejob: Angiver om det schedulerede slettejob skal være aktiveret (true/false)true
jobs.delete.schedule.btrBehandlingstestamenteregister-slettejob: Angiver scheduling-pattern for jobbet0 0 12 * * ?
jobs.delete.cpr-max-results.btrBehandlingstestamenteregister-slettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen1000
jobs.delete.cpr-max-loops.btrBehandlingstestamenteregister-slettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering1000

log4j2.xml

Konfigurerer logning for servicen.

Komponentspecifikke-properties

...

Angiver om responses skal schema-valideres (true/false)

...

Angiver om et kald skal returnere fejl, hvis response ikke er schema-valid (true/false)

...

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.

...

1000

...

log4j2.xml

Konfigurerer logning for servicen.

Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion. Se Driftsvejledningen for uddybet beskrivelse af logning.

Se den officielle Log4j 2 dokumentation for alternativ konfiguration.

minlogclient.properties

Konfigurerer MinLog for servicen.

Standardværdierne indeholder konfiguration der skriver MinLog-logninger til test1-miljøet.

I produktion skal properties konfigureres som beskrevet i  MinLog Service - Guide til anvendere .

nspslalog-btr.properties

Konfigurerer SLA-logning for servicen.

Standardværdien er at SLA-logning er slået til.

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

...

Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion.

...

Konfiguration af migreringskomponent

application.properties

...

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)

...

Se Driftsvejledningen for uddybet beskrivelse af logning.

Se den officielle Log4j 2 dokumentation for alternativ konfiguration.

minlogclient.properties

Konfigurerer MinLog for servicen.

Standardværdierne indeholder konfiguration der skriver MinLog-logninger til test1-miljøet.

I produktion skal properties konfigureres som beskrevet i  MinLog Service - Guide til anvendere .

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 er mountet i Docker containeren under <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

PropertyBeskrivelseDefault
spring.application.nameNavnet på applikationenltr-migration
spring.jmx.enabledDisable 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.portPort som Spring Boot management endpoints bind'er på. Endpoints deaktiveres ved at sætte værdien til -1.-1
datasource.primary.jndi-nameAngiver navnet på den primære JNDI datasourcejava:jboss/datasources/LTR-DS
migration.personFileNameFil med data i CSV format, der indeholder persondata.PersonData.csv
migration.ltrFileNameFil med data i CSV format, der indeholder Livstestamentedata.LivingWillData.csv


log4j2.xml

Konfigurerer logning for migreringskomponenten.

Standardværdierne angiver nogle brugbare niveauer for anvendelse til migrering i produktion. Se migeringsvejledningen for uddybet beskrivelse af logning.

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.

Overblik over komponenter

Der følgende beskriver de forskellige deployables som komponenten indeholder

log4j2.xml

Konfigurerer logning for migreringskomponenten.

Standardværdierne angiver nogle brugbare niveauer for anvendelse til migrering i produktion. Se migeringsvejledningen for uddybet beskrivelse af logning.

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.

Vær opmærksom på at datasource'ene skal opsættes med en strategi for reconnect håndtering i produktion. Se Wildfly's dokumentation for opsætning af datasources.

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:

com.sun.script.javascript.RhinoScriptEngineFactory
jdk.nashorn.api.scripting.NashornScriptEngineFactory

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.

Filnavn når deployet

Beskrivelse

Kilde

btr-service.war

LTR-BTR servicen

ltr-btr-service-wildfly-<version>.war

btr.war

DGWS/IDWS Proxy. Se Installationsvejledning (DGWS/IDWS Proxy) for dokumentation. War-filen for wsproxy komponenten omdøbes til btr.war, hvilket bevirker at webservice context-path for wsproxy i dette tilfælde bliver /btr.

wsproxy-<version>.war (findes ikke i ltr-btr- projektet)
ltr-migration.warLTR migeringsværktøj. Deployes kun når migrering skal foretages.ltr-migration-<version>.war

...

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.