SOSI-DCC designdokument

Indledning
Arkitekturoverblik
Logisk arkitektur
Fysisk datamodel
Teknologiarkitektur

Indledning

Nærværende dokument udgør designdokumentet for SOSI-DCC komponenten, også kendt som SOSI Afkoblingskomponenten. SOSI-DCC fungerer som webservice gateway, og dens hovedfunktioner er routning af requests samt håndhævelse af timeout-grænser på webservice kald.

Formålet med komponenten er primært at understøtte flere typer af kald-semantik. Et godt eksempel er behovet for en fleksibel garanti for svartider, hvor en klient til afkoblingskomponenten i et web service kald kan specificere, at kaldet skal forsøges gennemført inden for et antal millisekunder.

Hvis svaret ikke er kommet inden for det angivne antal millisekunder, afbryder komponenten kommunikationen med den pågældende web service, og returnerer en fejl til klientsystemet.  I det følgende gives et overblik.
Designdokumentet er gældende for SOSI-DCC version 2.5.X.

Arkitekturoverblik

Som webservice gateway er komponenten placeret mellem en klient – som typisk kaldes for webservice consumer (WSC) – og en service udbyder, kaldet webservice provider (WSP).
Som illustreret på nedenstående figur sender WSCen webservice requests til WSPen igennem komponenten og modtager responsen direkte ved synkron kommunikation.

Konfiguration af SOSI-DCC kan enten foregå i XML-filer eller i en database. Dette er beskrevet mere detaljeret i installationsvejledningen.

Logisk arkitektur

Komponenten er implementeret som simpel Servlet, som danner indgangspunktet for indkommende webservice kald. Ved opstart af komponenten indlæses konfigurationen, som indeholder routningsinformation og en default afkoblings-model for de operationer, der skal kunne kaldes igennem komponenten.

Beskrivelse af hvilke steps der gennemløbes når DCC'en modtager et kald kan findes her: Processing af indkomne kald

I det følgende gennemgås konceptuelt hvordan videreforsendelsen håndteres.

Synkron med timeout


I den synkrone afkoblingsmodel håndteres forsendelsen af en SynchronousDispatcher som starter en DCCServiceCall instans på en separat worker-tråd. Som nedenstående figur illustrerer, venter dispatcheren til worker-tråden modtager svar fra WSPen, hvorefter svaret returneres. Hvis timeout-grænsen overskrides inden worker-tråden modtager svar fra WSPen, afbrydes kaldet, og en timeout-fejl genereres og returneres.



Fysisk datamodel

Komponentens konfiguration specificeres som udgangspunkt i XML i en fil. Det er muligt at angive dynamisk routningsinformation i en database og lade komponenten med jævne mellemrum indlæse opdateringer i konfigurationen på runtime.

Teknologiarkitektur

Komponenten deployes på en JEE applikations server som skal stille både en JMS provider og en CommonJ provider til rådighed.
Som illustreret nedenunder skal der fra WSCen være netværksadgang til komponentens HTTP endpoint og svar køen. Adgang til komponenten reguleres via whitelistning i komponenten på baggrund af WSCens IP adresse Adgangskontrol kunne også overlades til applikations serveren, eksempelvis via SSL autentifikation med klient certifikater. Begrænsning af adgangen til svar køer foregår gennem JMS implementationens egne sikkerhedsmekanismer.
Komponenten skal selvfølgelig også have netværksmæssig adgang til WSPen.

Som vist i nedenstående figur kan komponenten også konfigureres til at kalde en WSP igennem en webservice proxy, som for eksempel SOSI-Gateway.