technische universität ilmenau fakultät für informatik und automatisierung

25
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 Verteidigung der Diplomarbeit Diplomarbeit Dirk Behrendt Dirk Behrendt 25. November 2003 25. November 2003

Upload: fritz-gaines

Post on 03-Jan-2016

45 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 2: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

Inhalt

• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick

2/25

Page 3: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 4: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

Inhalt

• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick

4/25

Page 5: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 6: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 7: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 8: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

Wie können Entwickler bei der Arbeit mit Web-Services unterstützt werden?

Web-Services

8/25

Page 9: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 10: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 11: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

Inhalt

• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick

11/25

Page 12: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 13: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

Inhalt

• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick

13/25

Page 14: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 15: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 16: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 17: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 18: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

Inhalt

• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick

18/25

Page 19: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 20: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 21: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 22: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 23: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

Inhalt

• Einleitung und Ziele• Web-Services• Potato-System• Konzeption• Umsetzung• Zusammenfassung und Ausblick

23/25

Page 24: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

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

Page 25: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung

Vielen Dank für Ihre Aufmerksamkeit!

25/25