17
Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung Komponentenprogrammierung mit J2EE, WebServices, .NET

Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

Embed Size (px)

Citation preview

Page 1: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

Lukas NeitschSilvan GolegaGero DeckerUwe Kylau

HASSO - PLATTNER – INSTITUTf ü r S o f t w a r e s y s t e m t e c h n i k

erasm platform Bild- / Galerieverwaltung

Komponentenprogrammierungmit J2EE, WebServices, .NET

Page 2: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 2 HASSO - PLATTNER - INSTITUT

Inhalt

Anforderungen, verwendete Systeme

Projektplanung / -management

Architektur

Vorführung WebGUI / Komponentendeployment

Test, Bewertung J2EE

Vorführung .NET Client

Vergleich WebServices: jboss vs. .NET

Erweiterungen

Literatur

Page 3: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 3 HASSO - PLATTNER - INSTITUT

Anforderungen – Use Cases

erasm platformWeb-Portal

Zentrale Weitergabe / Archivierung von Informationen / Medien

Bild- / Galerieverwaltung

Bild- / Galerieverwaltung erasm Kernsystem

Erweiterungen

Eigene Bilder verwalten

Authentifizierung / Autorisierung

Bildergalerie anschauen <<uses>>

Kommentar schreiben

Kommentare lesen

Bewertung abgeben

<<uses>>

<<uses>>

<<uses>>

<<uses>>

User[.NET client]

User[Web Browser]

Page 4: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 4 HASSO - PLATTNER - INSTITUT

Verwendete Produkte und Technologien

Ziel: Möglichst Verwendung von Open Source Systemen

Page 5: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 5 HASSO - PLATTNER - INSTITUT

Grober Aufbau

J2EE Application Server (jboss)

jboss .NET

era

sm c

ore

comments

votes

picture / gallery

web log

SAP MaxDB

R

web browser

.NET client

R

HTMLHTTP

R

SOAP

core datapicture data

comments

votes

JDBC Treiber

Page 6: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 6 HASSO - PLATTNER - INSTITUT

Projektplanung / -management

Entwurf ProjektplanVersionsmanagement mittelsSubversion Repository und TortoiseSVN

ID

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

Projektstart

Erstellung Lastenheft

Erstellung FMC Modelle

Experiment WebServices

Erstellung der Client GUI

Erstellung der Web GUI

Definition der Interfaces

Erst. UML Modelle für Beans

Implementierung des Clients

Implementierung des HTML Renderes

Implementierung der Beans

Implementierung des Datenbank Loaders

Evaluierung Junit (EE)

Modultest je Bean

Integrationstest Server

Vergleich mit anderen Komponentensys.

Erstellung Diagramme für Vortrag

Erstellung Konzept und Folien für Vortrag

Vortrag fertig vorbereitet

Ausarbeitung fertig

16 19 22 25 28 01 04 07 10 13 16 19 22 25 28 31 03 06 09 12 15 18 21 24 27 30 03 06 09 12 15 18 21 24April 2004 May 2004 June 2004 July 2004

Microsoft Project Professional 2002

Page 7: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 7 HASSO - PLATTNER - INSTITUT

Architektur – Aufbau

jboss

jboss .NET

erasm core picture / gallery

authentication

authorization

gallery item renderer

Fol

derB

ean

WebService ProviderBean

Pic

ture

Bea

n

Ga

llery

Bea

n

Ga

llery

Item

B.

UserBean

GroupBean

SessionBean

R

R

R

core GUI logic

R

R comments

CommentPluginBeanR

Comment Renderer

Data Bean

R

votes

VotePluginBean

Vote Renderer

Data Bean

R

eclip

se d

eplo

ytoo

l

Re

sizi

ngB

ean

CMP Entity Bean BMP Entity Bean Stateful Session Bean Stateless Session Bean

Page 8: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 8 HASSO - PLATTNER - INSTITUT

Architektur – Verwendete Design Patterns

Model – View – ControllerDurchgängig durch Servlets / Renderer vs. EJBs

Singleton und FactoryUniqueIDFactory, SessionManagerund DBConnectionManager

BuilderLoaderTask mit LoaderServlet als Director

ProxyPicture für PictureData

FaçadeWebServiceProvider

Page 9: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 9 HASSO - PLATTNER - INSTITUT

Architektur – Plugin Interface

+getName() : string+getDescription() : string+getRenderer(in item : Item) : PluginRenderer+isAvailable(in session : Session) : bool+performAction(in session : Session, in item : Item, in PluginParams : string) : bool

Plugin

+render(in session : Session, in servlet : AppPluginServlet, in out : PrintWriter) : void+getCaption(in session : Session) : string+doesRender() : bool+getServletURL() : string

PluginRenderer

VoteResultHTMLRenderer

VotePlugin

«extends»

CommentPluginCommentHTMLRenderer

Vote

Comment

VoteChoiceHTMLRenderer

Page 10: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 10 HASSO - PLATTNER - INSTITUT

Suchen von Plugins

Suche aller verfügbaren Plugins erfolgt pro Anfrage

Page 11: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 11 HASSO - PLATTNER - INSTITUT

Vorführung Web GUI / Komponentendeployment

:EJBViewServlet(AdminConsole)

doGet()

:ShowGalleryItemServlet

(GalleryViewer)

doGet()

:VoteHTMLRenderer(Plugin)

render()

:CommentHTMLRenderer(Plugin)

deploy

doGet()

doGet()

render()

render()

Page 12: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 12 HASSO - PLATTNER - INSTITUT

Test

JUnit als Framework für Testcases

Nicht ausreichend für das Testen von J2EE-Applikationen

JUnitEE als Testrunner

Performanztests mit Delphi-Client

WinInetAPI / HTTP

Page 13: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 13 HASSO - PLATTNER - INSTITUT

Bewertung J2EE / jboss

Nachteile

Typprüfung für EJBs erst zur Deployzeit

Performanzprobleme

Keine Versionierung von EJBs

Vorteile

J2EE: Nützliches Programmiermodell

Container-Managed-Persistence ist hilfreich

Gute Werkzeugunterstützung: Integration mit eclipse, XDoclet

Page 14: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 14 HASSO - PLATTNER - INSTITUT

Vorführung .NET Client

Demo-Verlauf

C# Client:Provider

Bean

login()

SessionID

:FolderHome

getSubfolders()findByPrimaryKey()

FolderObjectsFolderIDs

insertPicture()

PictureID

:PictureBean

create()

:PictureDataBean

create()PictureObject

:GalleryItemHome

showGalleryItems()findByPrimaryKey()

GalleryItemObjectsGalleryItemIDs

:SessionManager

getSession()

SessionObject

Page 15: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 15 HASSO - PLATTNER - INSTITUT

Frameworkvergleich WebServices: jboss vs. .NET

Web Services mit JBoss

Web Services mit .NET

/**

*@jboss-net web-service urn=„ProviderWS“

*/

public class ProviderBean implements SessionBean {

[System.Web.Services.WebServiceBindingAttribute(Name="ProviderWSSoapBinding", Namespace="http://localhost:8080/jboss-net/services/ProviderWS")]

public abstract class ProviderLocalService : System.Web.Services.WebService {

[System.Web.Services.WebMethodAttribute()]

[System.Web.Services.Protocols.SoapRpcMethodAttribute("ProviderWS", RequestNamespace="http://webservices.picture.erasm.de", ResponseNamespace="http://localhost:8080/jboss-net/services/ProviderWS")]

[return: System.Xml.Serialization.SoapElementAttribute("loginReturn")]

public abstract long login(string in0, string in1);

/**

*@ejb.interface-method view-type="local"

*@jboss-net.web-method

*/

public long login(String userName,

String password) {

Page 16: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 16 HASSO - PLATTNER - INSTITUT

Erweiterungen

Was man noch verbessern kannBessere Testabdeckung (z.B. Zweigüberdeckung, GUI-Tests)

Erhöhung der Robustheit

Performanzoptimierung

SicherheitVerwendung von ACLs für jedes erasm-Item

Physische Verteilung des Applikationsserversystemsz.B. alle Bildoperationen auf separatem Rechner

GUI-Verbesserungen

Erweiterung der erasm-PlatformWeitere Funktionen (Weblog, etc.)

Mehrsprachigkeit

Verwendung eines Portalservers (z.B. JetSpeed, Pluto)

Page 17: Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r e s y s t e m t e c h n i k erasm platform Bild- / Galerieverwaltung

HPI, SS2004: Middleware und Komponentenprogrammierung / 17 HASSO - PLATTNER - INSTITUT

QuellennachweiseJ2EE

Flanagan, D., Fareley, J., Crawford, W.: Java Enterprise in a Nutshell, 2nd Edition,O‘Reilly & Associates, 2002JBoss Inc.: JBOSS 3.2 Getting Started, http://www.jboss.org/modules/html/docs/jbossj2ee.pdfSUN Micros., J2EE 2.1 API Specification, http://java.sun.com/j2ee/1.4/docs/api/SUN Micros., J2SE 1.4.2 API Specification, http://java.sun.com/j2se/1.4.2/docs/api/SUN Micros., J2EE 1.4 Tutorial, http://java.sun.com/j2ee/1.4/docs/tutorial/doc/XDoclet Dokumentation, http://xdoclet.sourceforge.net/xdoclet/development/

DatenbankanbindungSAP MaxDB Dokumentation, http://www.sapdb.org/7.4/sap_db_documentation.htm

.NETLiberty, J.: Learning C#, O‘Reilly & Associates, 1. November 2002Liberty, J.: Programming C#, O‘Reilly & Associates, 1. Juni 2003

WebServicesJBoss .NET Info, http://www.nsdev.org/jboss/stories/jboss-net.htmlMicrosoft Developer Network, http://msdn.microsoft.com/webservices/understanding/specs/

Alle URLs beziehen sich auf Juni 2004