Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für...

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

Transcript of Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für...

Page 1: Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

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 Institut für Theoretische und Technische Informatik Fachgebiet Rechnerarchitektur.

Vielen Dank für Ihre Aufmerksamkeit!

25/25