PLDA – Connectiviteit
description
Transcript of PLDA – Connectiviteit
PLDA – Connectiviteit
Rudolf de SchipperGeoffroy Fauveaux
09/11/2004
AgendaSOAP in het algemeen
Error handling
Beveiliging
PLDA Concreet
Q&A
SOAP.
Protocol vs. Formaat.Twee zeer verschillende niveaus
• Formaten
- EDI
- XML
- …
• Communicatie protocollen
- TCP/IP
- SOAP
- …
SOAP.SOAP: web services
• XML / HTTP
Basis-protocol: Http
• Simpel voor passeren van firewalls
- Geen speciale configuratie nodig
- Geen additionele poorten te openen of protocollen nodig
• Eenvoudig te benaderen via een Internet connectie
• Synchroon protocol (Request / Response)
SOAP.Onafhankelijk van programmeertaal of implementatie
Frameworks beschikbaar in verschillende talen en omgevingen
Open Source Framework beschikbaar (voor Java / J2EE: http://ws.apache.org/soap/)
Presentatie web-page van een Web Service.
Voorbeeld van een WSDL.
Voorbeeld Java class.import weblogic.webservice.client.WLSSLAdapter;
import weblogic.webservice.client.SSLAdapterFactory;
import weblogic.jws.proxies.BiensArticleFrnb_Impl;
import weblogic.jws.proxies.BiensArticleFrnbSoap;
…
// SSL parameters
System.setProperty("javax.xml.rpc.ServiceFactory", "weblogic.webservice.core.rpc.ServiceFactoryImpl");
System.setProperty("java.protocol.handler.pkgs", "weblogic.webservice.client");
SSLAdapterFactory adapterFactory = SSLAdapterFactory.getDefaultFactory();
WLSSLAdapter adapter = (WLSSLAdapter) adapterFactory.getSSLAdapter();
adapter.setStrictChecking(false);
adapterFactory.setDefaultAdapter(adapter);
adapterFactory.setUseDefaultAdapter(true);
// end SSL parameters
BiensArticleFrnb_Impl baf=new BiensArticleFrnb_Impl();
BiensArticleFrnbSoap bafs=baf.getbiensArticleFrnbSoap("test.csv","ijxupiyu");
String result = bafs.findByArticleFRNB(2000,"000000196","NL");
System.out.println(result);
}catch(Exception e){
…
}
Error Handling
Technische vs. Functionele fouten.Technische fouten
• Soap Exception
• Worden vertaald in een fout (Exception) in de programmeertaal
Functionele fouten
• Resultaat bericht bevat de foutmelding (ex: CUSRES)
Of
• Soap Exception
Voorbeeld Java class.import weblogic.webservice.client.WLSSLAdapter;
import weblogic.webservice.client.SSLAdapterFactory;
import weblogic.jws.proxies.BiensArticleFrnb_Impl;
import weblogic.jws.proxies.BiensArticleFrnbSoap;
…
// SSL parameters
System.setProperty("javax.xml.rpc.ServiceFactory", "weblogic.webservice.core.rpc.ServiceFactoryImpl");
System.setProperty("java.protocol.handler.pkgs", "weblogic.webservice.client");
SSLAdapterFactory adapterFactory = SSLAdapterFactory.getDefaultFactory();
WLSSLAdapter adapter = (WLSSLAdapter) adapterFactory.getSSLAdapter();
adapter.setStrictChecking(false);
adapterFactory.setDefaultAdapter(adapter);
adapterFactory.setUseDefaultAdapter(true);
// end SSL parameters
BiensArticleFrnb_Impl baf=new BiensArticleFrnb_Impl();
BiensArticleFrnbSoap bafs=baf.getbiensArticleFrnbSoap("test.csv","ijxupiyu");
String result = bafs.findByArticleFRNB(2000,"000000196","NL");
System.out.println(result);
}catch(ConnectionLostException e){
…
}catch(Exception e) {
…
}
Voorbeeld Java class. BiensArticleFrnb_Impl baf=new BiensArticleFrnb_Impl();
BiensArticleFrnbSoap bafs=baf.getbiensArticleFrnbSoap("test.csv","ijxupiyu");
String result = bafs.findByArticleFRNB(2000,"000000196","NL");
System.out.println(result);
}catch(ConnectionLostException e){
…
}catch(Exception e) {
…
}
@to do: Parsing result
…
@to do: Functional error handling
if (…) then {
…
} else if (…) then {
…
} else {
…
}
Beveiliging
Beveiliging.Applicatiebeveiliging
• Authentification
• Autorisation
Gegevensbeveiliging
Data beveiliging.SSL Encryptie
• Confidentialiteit
Digitaal certificaat
• Digitale handtekening (client-side en server-side)
• Verificatie
• Data integriteit
PLDA Concreet.Wat met EDI berichten?
• Blijven behouden, gebruiken bestaande interface(s)
- Op termijn zal dit gerationaliseerd worden
• Langere termijn – een keuze
- EDI via SOAP wordt geimplementeerd
- Worden vervangen door XML via SOAP
PLDA Concreet.Gedefinieerde datasets Om te werken naar éénduidige berichten
- Eén bericht voor iedere “case”
Ieder bericht wordt geimplementeerd via een webservice
• Bijvoorbeeld:
- Insturen Sales Informatie SalesInfoInsturen
- Wijzigen Sales Informatie SalesInfoWijzigen
Q&A