Versions Compared

Key

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

...

STS-UUID2CPR-PROXY er en service, der afkobler integrationen mellem SOSI-STS'en og NemLogin Uuid2Cpr-servicen NemLog-in opslagstjenesterne uuid2cpr, pid2cpr og uuid2rid. Diagrammet nedenfor viser de komponenter som servicen kommunikerer med.

Gliffy Diagram
macroId490db688-6aab-413e-a21a-a22aa0c66aa8
displayNameOverblik
nameOverblik
pagePin3

Opbygning af service

Modificerede afhængigheder

Konfiguration i NemLogin-infrastruktur

SORES er designet med opslags-performance som den primære drivfaktor, og gør derfor brug af en memory-cache, der skal initialiseres inden den kan besvare requests - og når der er opdateringer i datagrundlaget.

Data-strukturen, der bærer response-data, ligger i pakken dk.sds.nsp.sor.sores.model, mens logikken i komponenten er inddelt i følgende lag:

Servlet

Servlet-laget ligger i pakken dk.sds.nsp.sor.sores.ws og er ansvarlig for at håndtere GET-requests og for at udpakke JSON-requestparametre fra POST-requests, kalde servicen i service-laget og formattere svaret som en JSON-struktur i responset.

Service

Service-laget ligger i pakken dk.sds.nsp.sor.sores.service og er ansvarlig for at hente de forespurgte data fra database-laget.

Cache

Cache-håndteringen ligger i pakken dk.sds.nsp.sor.sores.cache og kan enten bruge en database eller en XML-struktur som datagrundlag. 

Database-strategien baserer sig på SOR2-indlæseren, der ved ibrugtagningen af SORES ikke var tilgængelig i en endelig version. XML-strategien baserer sig på en offentligt tilgængelig eksport fra SOR-projektet, der i modsætning til database-strategien ikke vedligeholder nogen form for historik.

Data gemmes i cachen i hashmaps, med nøglerne hhv. SHAKId, SORId, ParentSORId, ProviderId, CVR og EntityTypeName. Disse maps muliggør effektive opslag på servicen.

Database

Database-laget ligger i pakken dk.sds.nsp.sor.sores.db. Her foregår opslag i databasen via datasourcen, og data pre-loades i en cache designet til hurtigt at kunne fremfinde de forespurgte data.

Data indlæses fra databasen ved et reload-request, hvis seneste database-timestamps er nyere end seneste cachen-timestamp.

XML

XML-laget ligger i pakken dk.sds.nsp.sor.sores.cache.xml. System-properties bestemmer stierne til de XML-filer, der parses ved reload.

STS-UUID2CPR-PROXY er organiseret i to moduler: uuid2cpr-proxy-api og uuid2cpr-integration.

Uuid2cpr-proxy-api

Modulet uuid2cpr-proxy-api er ansvarligt for at udstilling af et REST-api, overvågning af komponentens tilstand mv. Servicen er bygget på Servlets 3.1, og anvender RestEasy til udstille en OpenAPI-specifikation af servicen, og til generering af service-stubbe.

Under byggeprocessen bliver der konstrueret modificerede udgaver af jar-filerne for de to afhængigheder cxf-rt-ws-security og wss4j-ws-security-dom. Modifikationen varetages af pom-filen, og det er markeret med kommentarer heri, hvor modifikationen foregår:

Code Block
languagejava
<!-- Begin creation of custom jar-files. -->

[ ... ]

<!-- End creation of custom jar-files. -->


De modificerede afhængigheder ender under /lib, hvor de er tilgængelige for Docker-filen. I Docker-filen kopieres filerne ind, således at de overskriver standard-udgaverne af afhængighederne.

Uuid2cpr-integration

Modulet uuid2cpr-integration er ansvarligt for integrationen med Digitaliseringsstyrelsens NemLog-in opslagstjenester.. Integrationen er en modificeret udgave af Digitaliseringsstyrelsens OIOIDWS.Java-implementation, som er bygget på Apache CXF. Versionen af Apache CXF der anvendes er 3.3.7, da det er denne version NSP-platformen kommer med.

Pakkerne med præfikset org.apache indeholder tilpassede versioner af klasserne AbstractBindingBuilder (fra cxf-rt-ws-security-afhængigheden) og STRTransform (fra wss4j-ws-security-dom-afhængigheden). Klasserne matcher de tilsvarende klasser fra de officielle versioner af afhængighederne, og ændringerne er markeret med okmmentarer som følger:

Code Block
languagejava
// BEGIN DIGST WORKAROUND

[ ... ]

// END DIGST WORKAROUND

På denne måde bliver de modificerede udgaver brugt, når man kører integrationstesten i Uuid2CprClientIT.

Opgradering af modificerede afhængigheder

De to afhængigheder der er modificeret er cxf-rt-ws-security og wss4j-ws-security-dom. Hvis man ønsker at opgradere CXF, skal man derfor håndtere rettelserne til disse to afhængigheder. Opgradering foregår efter følgende fremgangsmåde:

  1. Find de nye versioner af de modificerede klasser. De officielle repositories er hhv. https://github.com/apache/cxf og https://github.com/apache/ws-wss4j.
  2. Kopier de nye versioner ind i uuid2cpr-integration modulet, og tilpas dem. Afhængigt af hvilken version der opgraderes til, kan dette være mere eller mindre svært. Ved udvikling af servicen er Digitaliseringsstyrelsens implementation, som anvender CXF 3.0.16, tilpasset til at anvende CXF 3.3.7, som er den version der pt. anvendes på NSP-platformen.
  3. Test at rettelserne virker ved at køre integrationstesten i Uuid2CprClientIT.

Såfremt det er de samme klasser der tilrettes i, så bør det ikke være nødvendigt at tilpasse hvordan jar-filerne modificeresData indlæses fra filerne ved et reload-request, hvis timestampet i sor-træet er nyere end det senest indlæste.