Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Konzeption und Realisierung einer
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 Verteidigung der Diplomarbeit Dirk Behrendt 25. November 2003 Verantwortlicher Hochschullehrer: Prof. Dr.-Ing. habil. W. Fengler Betreuer: Dr.-Ing. J. Nützel
2
Inhalt Einleitung und Ziele Web-Services Potato-System Konzeption
Umsetzung Zusammenfassung und Ausblick 2/25
3
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
4
Inhalt Einleitung und Ziele Web-Services Potato-System Konzeption
Umsetzung Zusammenfassung und Ausblick 4/25
5
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? Definition: Ein Web-Service ist eine über ein Netzwerk zugängliche Schnittstelle zu Anwendungsfunktionen, die mit Hilfe von Standardtechniken des Internets realisiert wird. 1 plattformunabhängige Interaktion zwischen Systemen mittels HTTP, XML, SOAP, WSDL und UDDI 5/25 1 James Snell, Doug Tidwell, Pavel Kulchenko, Webservice-Programmierung mit SOAP, O’Reilly Verlag GmbH & Co. KG, 2002.
6
Web-Services SOAP (Simple Object Access Protocol)
Kommunikation zwischen Anwendungen durch XML-Nachrichten SOAP-Nachricht besteht aus einem Umschlag - einem optionalen Header - und einem Body <soapenv:Envelope> </soapenv:Envelope> SOAP-Umschlag <soapenv:header> <!--Informationsblöcke--> </soapenv:header> Header <soapenv:Body> <!--Parameterübergabe--> <!--Rückgabewerte--> </soapenv:Body> Body 6/25
7
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
8
Web-Services Wie können Entwickler bei der Arbeit mit
Web-Services unterstützt werden? 8/25
9
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
10
Web-Services Erstellung und Nutzung von Web-Services 10/25
<definitions> ... </definitions> WSDL-Dokument WSDL2Java Java2WSDL Zur Erstellung und Nutzung von Web-Services Java-Klassen Java-Interface 10/25
11
Inhalt Einleitung und Ziele Web-Services Potato-System Konzeption
Umsetzung Zusammenfassung und Ausblick 11/25
12
Potato-System Handelsplatz für digitale Güter, insbesondere MP3-Dateien Nutzer werden am Umsatz beteiligt, indem sie zu Vertriebspartnern werden Web-Service Potato-Jacket Potato-System (AS) MySQL -Tomcat -JSP -Axis Client-Bibliothek SOAP JDBC -Tomcat -Java-Klassen -Axis SOAP-Engine SOAP P2P-Client -Axis Client-Bibliothek 12/25
13
Inhalt Einleitung und Ziele Web-Services Potato-System Konzeption
Umsetzung Zusammenfassung und Ausblick 13/25
14
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
15
Konzeption Das klassische MVC-Prinzip Das MVC 2-Prinzip 15/25
Model-Objekt - stellt das Anwendungsobjekt dar - enthält die Kernfunktionalität und die Daten View-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 VIEW MODEL CONTROLLER Das MVC 2-Prinzip Servlet (Controller) Nutzeraktion Daten JavaBeans (Model) leitet weiter Systemantwort instanziiert JSP (View) Browser Web-Container 15/25
16
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
17
Konzeption Umgesetzte Funktionalitäten Warenkorbverwaltung
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 changeUserData() Änderung der Verkäufer-Nutzerdaten changeProviderData() Anzeigen der Nutzer-Transaktionen TransactionAction getTransactioninfos() Registrierung einer Datei RegisterFileAction registerFile() Informationen zu einer Datei anzeigen BuyTanFileAction getFileInfo() Erwerb einer Datei CheckoutAction buyFiles() weitere Action-Klassen, die den Web-Service nicht in Anspruch nehmen Warenkorbverwaltung Cache-Verwaltung 17/25
18
Inhalt Einleitung und Ziele Web-Services Potato-System Konzeption
Umsetzung Zusammenfassung und Ausblick 18/25
19
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
20
Umsetzung Login in das Potato-System
(2) Implementierung der Login Action-Klasse User user = null; // get form variables from the DynaValidatorForm String login = (String) ((DynaValidatorForm) form).get("login"); String password = (String) ((DynaValidatorForm) form).get("password"); // try to login on the Accounting Server TrustedCertificate trustedCertificate = new TrustedCertificate(); user = trustedCertificate.login(request, login, password); // login failed if (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
21
Erzeugung von Stub-Klassen aus der WSDL-Datei mit dem Tool WSLD2Java
Umsetzung Erzeugung von Stub-Klassen aus der WSDL-Datei mit dem Tool WSLD2Java 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; } 21/25
22
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
23
Inhalt Einleitung und Ziele Web-Services Potato-System Konzeption
Umsetzung Zusammenfassung und Ausblick 23/25
24
Zusammenfassung und Ausblick
In 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
25
Vielen Dank für Ihre Aufmerksamkeit!
25/25
26
Struts Controller Konfiguration in der struts-config.xml
Struts-Framework Klassen User-Klassen
28
Die Aufgaben der zentralen Konfigurationsdatei
DynaActionForm <struts-config> <form-bean ... </form-bean> <action </Action> </struts-config> vereinbart ActionForm YourAction definiert Action-Mapping validation.xml erzwingt Validierung definiert Weiterleitung struts-config.xml
29
Struts Tiles potatoLayout.jsp login.jsp tilesDefinitions.xml
... </definition> </tiles-definitions> header.jsp menu.jsp <tiles:insert> login_body.jsp footer.jsp potatoLayout.jsp copyright.jsp login.jsp tilesDefinitions.xml <tiles-definitions> <definition name="login" path="/layout/potatoLayout.jsp"> <put name="header" value="/inc/header.jsp"/> <put name="menu" value="/inc/menu.jsp"/> <put name="body-content" value="/body/login_body.jsp"/> <put name="footer" value="/inc/footer.jsp"/> <put name="copyright" value="/inc/copyright.jsp"/> </definition>
30
Das MVC 1-Prinzip - JSP übernimmt die Rolle der View
Nutzeraktion Daten JavaBeans (Model) JSP (View) Systemantwort Browser Web-Container - JSP übernimmt die Rolle der View Schnittstelle der Geschäftslogik von einer JavaBean-Komponente repräsentiert Funktionalität des Controllers ebenfalls in einer JSP implementiert
31
Software-Entwicklungsumgebung:
Toolkit: Toolkits dienen der automatischen Unterstützung von Methoden und Verfahren zum Zwecke der Software-erstellung. 1 Software-Entwicklungsumgebung: Unter einer Software-Entwicklungsumgebung versteht man die Gesamtheit von aufeinander abgestimmten, untereinander kompatiblen, gemeinsam zu benutzenden und wesentliche Teile des Entwicklungsprozesses abdeckenden Methoden und Werkzeugen zur Software-Entwicklung. 2 1 Helmut Balzert, Lehrbuch der Software-Technik: “Software-Entwicklung”, ISBN: , Spektrum Akademischer Verlag GmbH, 2000. 2 Gesellschaft für Informatik Fachgruppe WI-VM Vorgehensmodelle für die betriebliche Anwendungsentwicklung, letzter Zugriff:
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.