250 likes | 401 Views
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.
E N D
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
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? 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 1James Snell, Doug Tidwell, Pavel Kulchenko, Webservice-Programmierung mit SOAP, O’Reilly Verlag GmbH & Co. KG, 2002.
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
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
Web-Services Wie können Entwickler bei der Arbeit mit Web-Services unterstützt werden? 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 <definitions> ... ... </definitions> WSDL-Dokument WSDL2Java Java2WSDL Zur Erstellung und Nutzung von Web-Services Java-Klassen Java-Interface 10/25
Inhalt • Einleitung und Ziele • Web-Services • Potato-System • Konzeption • Umsetzung • Zusammenfassung und Ausblick 11/25
Potato-System • Handelsplatz für digitale Güter, insbesondere MP3-Dateien • Nutzer werden am Umsatz beteiligt, indem sie zu • Vertriebspartnern werden Web-Service Potato-System (AS) Potato-Jacket MySQL SOAP JDBC -Tomcat -JSP -Axis Client-Bibliothek -Tomcat -Java-Klassen -Axis SOAP-Engine SOAP P2P-Client -Axis Client-Bibliothek 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 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 15/25 Web-Container
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 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--> <actionpath="/processAccountLogin"type="com.as.jacket.actions.LoginAction"name= "loginForm"scope="request"validate="true"><forwardname="success" path="/loginSuccess.jsp"/> <forwardname="failure" path="/login.jsp"/> </action> <!--FormBean definition--> <form-beanname= "loginForm"dynamic="true"type="org.apache.struts.validator.DynaValidatorForm"><form-propertyname= "login"type="java.lang.String"/><form-propertyname="password"type="java.lang.String"/> </form-bean> 19/25
Umsetzung Login in das Potato-System (2) Implementierung der Login Action-Klasse Useruser=null;// get form variables from the DynaValidatorFormStringlogin=(String)((DynaValidatorForm)form).get("login");Stringpassword=(String)((DynaValidatorForm)form).get("password"); // try to login on the Accounting ServerTrustedCertificatetrustedCertificate=newTrustedCertificate();user=trustedCertificate.login(request,login,password); // login failedif(user==null){ActionErrorserrors=newActionErrors();ActionErrorloginError=newActionError("error.login.invalid");errors.add(ActionErrors.GLOBAL_ERROR,loginError);saveErrors(request,errors);System.out.println("User was not found or the password is invalid.");returnmapping.findForward(IConstants.FAILURE_KEY); } else{// add the user to the sessionrequest.getSession().setAttribute(IConstants.USER_KEY,user);returnmapping.findForward(IConstants.SUCCESS_KEY);} 20/25
Umsetzung Erzeugung von Stub-Klassen aus der WSDL-Datei mit dem Tool WSLD2Java Login in das Potato-System (3) Web-Service Aufruf publicPotatoInterfacegetPotatoInterface(HttpServletRequestrequest){PotatoInterfacepi=null;try{PotatoWebServiceLocatorlocator=newPotatoWebServiceLocator();pi=(PotatoInterface)locator.getPotato();((PotatoBindingStub)pi).setMaintainSession(true);}catch(javax.xml.rpc.ServiceExceptionse){System.out.println("caught ServiceException:"+se);}returnpi;} privateUserlogin(PotatoInterfacepi,Stringlogin,Stringpassword){UserInfouserInfo=null;try{userInfo=pi.login(login,password);} catch(RemoteExceptionre){System.out.println("login: RemoteException caught:"+re.toString());returnnull;}Usersu=newUser(pi,login,userInfo);returnsu;} 21/25
Umsetzung Login in das Potato-System (4) Erstellung der JSP <%@tagliburi="/WEB-INF/struts-html.tld"prefix="html"%>...<html:formaction="/processAccountLogin"method="POST"><html:textproperty="login"/><br><html:passwordproperty="password"/><br><html:submitproperty="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 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