technische universität ilmenau fakultät für informatik und automatisierung
DESCRIPTION
Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur. Konzeption und Realisierung einer Nutzerschnittstelle unter Einbeziehung von Web-Services für die Verwaltung von Nutzerkonten. - PowerPoint PPT PresentationTRANSCRIPT
Technische Universität IlmenauFakultät für Informatik und AutomatisierungInstitut für Theoretische und Technische InformatikFachgebiet Rechnerarchitektur
Verantwortlicher Hochschullehrer: Verantwortlicher Hochschullehrer: Prof. Dr.-Ing. habil. W. FenglerBetreuer: Betreuer: Dr.-Ing. J. Nützel
Konzeption und Realisierung einer Nutzerschnittstelle unter Einbeziehung von Web-Services für die Verwaltung von Nutzerkonten
Verteidigung der DiplomarbeitVerteidigung der DiplomarbeitDirk BehrendtDirk Behrendt
25. November 200325. November 2003
Inhalt
• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick
2/25
Einleitung und Ziele
• über kein anderes Konzept wurde in den letzten Monaten in Fachzeitschriften mehr diskutiert als über Web-Services
man gewinnt den Eindruck, dass das Web-Service Konzept die Softwareentwicklung revolutionieren würde
Ziel dieser Diplomarbeit• Erstellen einer Web-Applikation, welche Funktionalitäten des Web-Services nutzt, der vom Potato-System bereitgestellt wird
3/25
Inhalt
• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick
4/25
Web-Services
• Was sind Web-Services?• Wie kann man Web-Services erstellen?• Wie kann man Funktionalitäten eines Web-Services in seiner Anwendung nutzen?• Wie können Entwickler dabei unterstützt werden?
Ein Web-Service ist eine über ein Netzwerk zugängliche Schnittstelle zu Anwendungsfunktionen, die mit Hilfe von Standardtechniken des Internets realisiert wird. 1
Definition:
1 James Snell, Doug Tidwell, Pavel Kulchenko, Webservice-Programmierung mit SOAP,
O’Reilly Verlag GmbH & Co. KG, 2002.
plattformunabhängige Interaktion zwischen Systemen mittels HTTP, XML, SOAP, WSDL und UDDI
5/25
Web-Services
• Kommunikation zwischen Anwendungen durch XML-Nachrichten• SOAP-Nachricht besteht aus einem Umschlag - einem optionalen Header - und einem Body
SOAP (Simple Object Access Protocol)
SOAP-Umschlag<soapenv:Envelope>
</soapenv:Envelope>
Header
Body
<soapenv:header> <!--Informationsblöcke--> </soapenv:header>
<soapenv:Body> <!--Parameterübergabe--> <!--Rückgabewerte--></soapenv:Body>
6/25
Web-Services
WSDL (Web Service Description Language)• Standard für die Beschreibung von Web-Services • beinhaltet Schnittstelleninformationen des Web-Services• Struktur eines WSDL-Dokuments entspricht der Syntax des XML-Schemas
UDDI (Universal Description, Discovery and Integration)• bietet ein durchsuchbares Register von Diensten und ihren Beschreibungen gelbe Seiten
7/25
Wie können Entwickler bei der Arbeit mit Web-Services unterstützt werden?
Web-Services
8/25
Web-Services
Web-Service Toolkits• Apache Axis von der Apache Software Foundation• Web Service Toolkit (WSTK) von IBM• Java Web Services Developer Pack (JWSDP) von Sun
Web-Service Entwicklungsumgebungen• Visual Studio .NET (.NET Framework)• Sun ONE (Sun Open Net Environment)
unterstützen den Entwickler bei der Arbeit mit Web-Services Erzeugung von WSDL aus (Java)-Klassen Erzeugung von (Java)-Klassen aus WSDL Bereitstellung von Klassen-Bibliotheken, um Web-Services nutzen zu können
9/25
Web-Services
Erstellung und Nutzung von Web-Services
Java-Interface
Java2WSDL
<definitions>
...
...
</definitions>
WSDL2Java
Java-Klassen
WSDL-Dokument
Zur Erstellung
und Nutzung
von Web-
Services 10/25
Inhalt
• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick
11/25
Potato-Jacket-Tomcat-JSP-Axis Client-Bibliothek
P2P-Client-AxisClient-Bibliothek
Web-Service
Potato-System(AS)
-Tomcat-Java-Klassen-Axis SOAP-Engine
MySQL
SOAP
SOAP JDBC
Potato-System
• Handelsplatz für digitale Güter, insbesondere MP3-Dateien• Nutzer werden am Umsatz beteiligt, indem sie zu Vertriebspartnern werden
12/25
Inhalt
• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick
13/25
Konzeption
Anforderungen an das Jacket• Erstellung einer Web-Applikation (Jacket), die den Web-Service in Anspruch nimmt• Realisierung ausgewählter Funktionalitäten des Web-Services• Garantieren der Wartbarkeit und Erweiterbarkeit der Web-Applikation durch strikte Trennung von Logik und Layout und Einsatz von Testwerkzeugen MVC (Model-View-Controller Prinzip)
- Entwicklungsprozess nach dem MVC-Prinzip kann durch MVC-Frameworks erleichtert werden
14/25
Konzeption
Das klassische MVC-Prinzip
VIEW
CONTROLLERMODEL
Model-Objekt- stellt das Anwendungsobjekt dar- enthält die Kernfunktionalität und die DatenView-Objekt - stellt die Bildschirmrepräsentation dar- Objekt erhält die Daten vom Model Controller-Objekt- Reaktion und Verarbeitung von Benutzereingaben- Vermittler zwischen Model und View
Das MVC 2-Prinzip
Servlet(Controller)
DatenJavaBeans(Model)
Browser
Web-Container
Nutzeraktion
Systemantwort JSP(View)
instanziiert
leitet weiter
15/25
Konzeption
Das MVC-Framework Struts• implementiert konsequent das MVC 2-Muster• alle eingehenden Requests werden in Action-Klassen und ihren zugeordneten Action-Forms verarbeitet•Verwendung von JSP zur Präsentation• Struts Tag-Libraries Bean Tag-Library HTML Tag-Library Logic Tag-Library
• Layout mit Struts-Tiles Layout-Management durch Trennung von Inhalt und Layout
• Struts-Validator Überprüfung von Benutzereingaben
16/25
Konzeption
Funktionalität Jacket Action-Klasse Web-Service Methode
Login LoginAction login()
Logout LogoutAction logout()
Registrierung als Käufer BuyerRegistrationAction registerUser()
Registrierung als Verkäufer ProviderRegistrationAction registerProvider()
Anzeigen der Käufer-Nutzerdaten EditBuyerAccountAction getUserData()
Anzeigen der Verkäufer-Nutzerdaten EditProviderAccountAction getProviderData()
Änderung der Käufer-Nutzerdaten BuyerRegistrationAction changeUserData()
Änderung der Verkäufer-Nutzerdaten ProviderRegistrationAction changeProviderData()
Anzeigen der Nutzer-Transaktionen TransactionAction getTransactioninfos()
Registrierung einer Datei RegisterFileAction registerFile()
Informationen zu einer Datei anzeigen BuyTanFileAction getFileInfo()
Erwerb einer Datei CheckoutAction buyFiles()
Umgesetzte Funktionalitäten
• weitere Action-Klassen, die den Web-Service nicht in Anspruch nehmen Warenkorbverwaltung Cache-Verwaltung
17/25
Inhalt
• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick
18/25
Umsetzung
Login in das Potato-System
(1) Modifikationen in der struts-config.xml
<!--Login Action--><action path="/processAccountLogin" type="com.as.jacket.actions.LoginAction" name= "loginForm" scope="request" validate="true"> <forward name="success" path="/loginSuccess.jsp"/> <forward name="failure" path="/login.jsp"/> </action>
<!--FormBean definition--><form-bean name= "loginForm" dynamic="true" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name= "login" type="java.lang.String"/> <form-property name="password" type="java.lang.String"/></form-bean>
19/25
Umsetzung
Login in das Potato-System
(2) Implementierung der Login Action-Klasse
User user = null; // get form variables from the DynaValidatorFormString login = (String) ((DynaValidatorForm) form).get("login");String password = (String) ((DynaValidatorForm) form).get("password");
// try to login on the Accounting ServerTrustedCertificate trustedCertificate = new TrustedCertificate();user = trustedCertificate.login(request, login, password);
// login failedif (user == null) { ActionErrors errors = new ActionErrors(); ActionError loginError = new ActionError("error.login.invalid"); errors.add(ActionErrors.GLOBAL_ERROR, loginError); saveErrors(request, errors); System.out.println("User was not found or the password is invalid."); return mapping.findForward(IConstants.FAILURE_KEY);}
else { // add the user to the session request.getSession().setAttribute(IConstants.USER_KEY, user); return mapping.findForward(IConstants.SUCCESS_KEY);}
20/25
Umsetzung
Login in das Potato-System
(3) Web-Service Aufruf
public PotatoInterface getPotatoInterface(HttpServletRequest request) { PotatoInterface pi = null; try { PotatoWebServiceLocator locator = new PotatoWebServiceLocator(); pi = (PotatoInterface) locator.getPotato(); ((PotatoBindingStub) pi).setMaintainSession(true); } catch (javax.xml.rpc.ServiceException se) { System.out.println("caught ServiceException:" + se); } return pi;}
private User login(PotatoInterface pi, String login, String password) { UserInfo userInfo = null; try { userInfo = pi.login(login, password); } catch (RemoteException re) { System.out.println("login: RemoteException caught:" + re.toString()); return null; } User su = new User(pi, login, userInfo); return su;}
Erzeugung von Stub-Klassen aus der WSDL-Datei
mit dem Tool WSLD2Java
21/25
Umsetzung
Login in das Potato-System
(4) Erstellung der JSP
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> ...<html:form action="/processAccountLogin" method = "POST"> <html:text property="login" /><br> <html:password property="password"/><br> <html:submit property="submit"/></html:form>
(5) Testen mit dem StrutsTestCase-Framework
setRequestPathInfo("/processAccountLogin");addRequestParameter("login", "ginny");addRequestParameter("password", "ginny");actionPerform();verifyNoActionErrors();verifyForward("success");
22/25
Inhalt
• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick
23/25
Zusammenfassung und AusblickIn diesem Vortrag wurde…… in die Web-Service Technologie eingeführt… die Architektur des Potato-Systems vorgestellt… dargelegt, welche Anforderungen die neue Nutzerschnittstelle (Jacket) zu erfüllen hat - Wartbarkeit und Erweiterbarkeit - Umsetzung ausgewählter Funktionalitäten unter Nutzung des Web-Service … die beispielhafte Implementierung des Logins in das Potato-System veranschaulicht
Aufgaben für zukünftige Entwickler…… Umsetzung aller Funktionalitäten des Web-Services… Verbesserung des Layouts (Struts-Tiles)… Erhöhung der Sicherheit durch WS-Security denkbar… Erweiterung von Struts durch XSLT denkbar
24/25
Vielen Dank für Ihre Aufmerksamkeit!
25/25