Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur Verantwortlicher Hochschullehrer: Verantwortlicher Hochschullehrer: Prof. Dr.-Ing. habil. W. Fengler Betreuer: Betreuer: Dr.-Ing. J. Nützel Konzeption und Realisierung einer Nutzerschnittstelle unter Einbeziehung von Web-Services für die Verwaltung von Nutzerkonten Verteidigung der Diplomarbeit Dirk Behrendt 25. 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, OReilly Verlag GmbH & Co. KG, 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 Header 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... 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 -Axis Client-Bibliothek Web-Service Potato-System (AS) -Tomcat -Java-Klassen -Axis SOAP-Engine MySQL 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 CONTROLLER MODEL 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 Das MVC 2-Prinzip Servlet (Controller) Daten JavaBeans (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ätJacket Action-KlasseWeb-Service Methode LoginLoginActionlogin() LogoutLogoutActionlogout() Registrierung als KäuferBuyerRegistrationActionregisterUser() Registrierung als VerkäuferProviderRegistrationActionregisterProvider() Anzeigen der Käufer-NutzerdatenEditBuyerAccountActiongetUserData() Anzeigen der Verkäufer-NutzerdatenEditProviderAccountActiongetProviderData() Änderung der Käufer-NutzerdatenBuyerRegistrationActionchangeUserData() Änderung der Verkäufer-NutzerdatenProviderRegistrationActionchangeProviderData() Anzeigen der Nutzer-TransaktionenTransactionActiongetTransactioninfos() Registrierung einer DateiRegisterFileActionregisterFile() Informationen zu einer Datei anzeigenBuyTanFileActiongetFileInfo() Erwerb einer DateiCheckoutActionbuyFiles() 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 19/25
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
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... (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 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
Vielen Dank für Ihre Aufmerksamkeit! 25/25
Konfiguration in der struts-config.xml Struts Controller Struts-Framework Klassen User-Klassen
DynaActionForm YourAction <form-bean... <action... validation.xml vereinbart ActionForm definiert Action-Mapping erzwingt Validierung definiert Weiterleitung struts-config.xml Die Aufgaben der zentralen Konfigurationsdatei
<definition... tilesDefinitions.xml potatoLayout.jsp menu.jsp footer.jsp copyright.jsp login_body.jsp header.jsp login.jsp Struts Tiles
- 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 JSP (View) Daten JavaBeans (Model) Browser Web-Container Nutzeraktion Systemantwort Das MVC 1-Prinzip
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, Gesellschaft für Informatik Fachgruppe WI-VM Vorgehensmodelle für die betriebliche Anwendungsentwicklung, letzter Zugriff: