Semesterarbeit SOA CRYSTL-PIM P roduct I nformation S ystem Sandrine Ferrari Benjamin Bäni
Semesterarbeit SOA
CRYSTL-PIMProduct Information System
Sandrine FerrariBenjamin Bäni
CRYSTL-PIM (Product Information System)Ablauf
Ausgangslage??Ziele
LösungsansatzImplementierung
KomponentenDemonstration
ZieleLösungsansatz
ImplementierungKomponenten
CRYSTL-PIM (Product Information System)Ausgangslage ???
Ausgangslage
• Vertieb von Bier und Kleinartikel• Heutige Informatik in schlechtem
Zustand• Kunden-Informations-System für
Kundenberater fehlt
Demonstration
ZieleLösungsansatz
ImplementierungKomponenten
CRYSTL-PIM (Product Information System)Ziele
Ausgangslage
• Lösung für das Lesen von Produktinformationen via Webservice
• Eingabemaske• Request und Response über HTTP
(SOAP und XML)• Implementierung• Ausgabemaske• Manuelle und automatisierte Tests
Demonstration
ZieleLösungsansatz
ImplementierungKomponenten
CRYSTL-PIM (Product Information System)Lösungsansatz (Grundidee)
Ausgangslage
• Webservice mit SOAP• Service-Methoden zum Abfragen von
einzelnen oder allen Produkten• Client mit JSP
Demonstration
GrundideeAufbau
ZieleLösungsansatz
ImplementierungKomponenten
CRYSTL-PIM (Product Information System)Lösungsansatz (Aufbau)
Ausgangslage
Demonstration
GrundideeAufbau
Lösung mit SOAP via HTTP
SOAP Server-Client Architektur
ZieleLösungsansatz
ImplementierungKomponenten
CRYSTL-PIM (Product Information System)Implementierung
Ausgangslage
Demonstration
HSQL
PIM-Server
DAO
Service
Sche
ma
PIM-Client
Service (Skeleton)
Servlet/JSP
Browser
http://localhost:8080/PimServer/ProductService
SOAPMessage
ZieleLösungsansatz
ImplementierungKomponenten
CRYSTL-PIM (Product Information System)Product Web Service with JAX-WS
Ausgangslage
Demonstration
@WebServicepublic interface ProductService {
@WebMethod(action="getProductById")ProductTO getProductById(@WebParam(name="id") Long id);
}
@WebService(endpointInterface = "ch.crystl.pim.service.ProductService")public class ProductServiceImpl implements ProductService {
@Overridepublic ProductTO getProductById(Long id) { .. }
}
@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "productTO", propOrder = { "results", "message", "returncode"})public class ProductTO { @XmlElement(nillable = true) protected List<Product> results; protected String message; protected String returncode;}
SoapUI
TestSuiteTestSuite
ZieleLösungsansatz
ImplementierungKomponenten
CRYSTL-PIM (Product Information System)Unit-Testing mit SoapUI
Ausgangslage
Demonstration
ServerClient
DatenbankWSDL
PIM-Server Junit-Tests
TestProductDAO
Endpoint: http://localhost:8088/mockProductServiceImplPortBinding
MockService
TestSuite
TestMockService
TestProductService
start/stop
run
HSQL
PimDB