I det følgende beskrives hvad en service provider skal gøre følgende når der modtages et DGWS request.
Der vil også være kodeeksempler der vise hvordan det skal gøres i praksis.
Først skal der laves en instans af den factory der kan håndtere DGWS. Den skal oprettes med den Federation man ønsker at anvende (Test eller Prod) og i dette eksmpel benyttes Test:
// Opret instans af den ønskede Federation SOSITestFederation sosiTestFederation = new SOSITestFederation(new Properties()); // Opret ny instans af factory der kan håndtere DGWS: SOSIFactory sosiFactory = new SOSIFactory(sosiTestFederation, new EmptyCredentialVault(), new Properties()); |
Bemærk: Den andet argument til SOSIFactory er en tom CredentialVault. Hvis den sættes til en tom CredentialVault, så anvendes CredentialVault fra STS.
Hvis man modtager det indkomne request som en Stream, så kan man benytte Seal til hente ID kortet ud fra requestet og det kan man så arbejde videre med og benytte informationerne i servicen:
// Først skal den indkomne inputStream parses til XML: String xml = ParseStreamToXml(inputStream); // Deserialisering til RequestHeader. Her valideres signaturen også (i RequestModelBuilder) RequestHeader requestHeader = sosiFactory.deserializeRequestHeaderOnly(xml); // Nu har man et ID kort man kan arbejde videre med informationerne f.eks.organisations navn IDCard idCard = requestHeader.getIDCard(); String orgName = ((SystemIDCard) idCard).getSystemInfo().getCareProvider().getOrgName(); |