erasm platform Bild- / Galerieverwaltung Komponentenprogrammierung mit J2EE, WebServices, .NET Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT für Softwaresystemtechnik 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 HPI, SS2004: Middleware und Komponentenprogrammierung / 2 HASSO - PLATTNER - INSTITUT Anforderungen – Use Cases erasm platform Web-Portal Zentrale Weitergabe / Archivierung von Informationen / Medien Bild- / Galerieverwaltung Bild- / Galerieverwaltung erasm Kernsystem Eigene Bilder verwalten User [.NET client] Bildergalerie anschauen << u << u Kommentar schreiben Kommentare lesen User [Web Browser] se s> > se s >> <<uses >> <<uses>> e <<us Authentifizierung / Autorisierung s>> Bewertung abgeben Erweiterungen HPI, SS2004: Middleware und Komponentenprogrammierung / 3 HASSO - PLATTNER - INSTITUT Verwendete Produkte und Technologien Ziel: Möglichst Verwendung von Open Source Systemen HPI, SS2004: Middleware und Komponentenprogrammierung / 4 HASSO - PLATTNER - INSTITUT Grober Aufbau R web browser J2EE Application Server (jboss) .NET client R erasm core HTML HTTP picture / gallery comments votes web log jboss .NET SOAP JDBC Treiber R SAP MaxDB HPI, SS2004: Middleware und Komponentenprogrammierung / 5 core data picture data comments votes HASSO - PLATTNER - INSTITUT Projektplanung / -management Entwurf Projektplan Versionsmanagement mittels Subversion Repository und TortoiseSVN Microsoft Project Professional 2002 HPI, SS2004: Middleware und Komponentenprogrammierung / 6 HASSO - PLATTNER - INSTITUT Architektur – Aufbau jboss picture / gallery R core GUI logic comments gallery item renderer R R GalleryItemB. GroupBean GalleryBean UserBean ResizingBean FolderBean authentication PictureBean R CommentPluginBean Comment Renderer R Data Bean votes VotePluginBean SessionBean R WebService ProviderBean authorization Vote Renderer R Data Bean R jboss .NET CMP Entity Bean BMP Entity Bean HPI, SS2004: Middleware und Komponentenprogrammierung / 7 Stateful Session Bean Stateless Session Bean HASSO - PLATTNER - INSTITUT eclipse deploytool erasm core Architektur – Verwendete Design Patterns Model – View – Controller Durchgängig durch Servlets / Renderer vs. EJBs Singleton und Factory UniqueIDFactory, SessionManager und DBConnectionManager Builder LoaderTask mit LoaderServlet als Director Proxy Picture für PictureData Façade WebServiceProvider HPI, SS2004: Middleware und Komponentenprogrammierung / 8 HASSO - PLATTNER - INSTITUT Architektur – Plugin Interface Plugin +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 PluginRenderer +render(in session : Session, in servlet : AppPluginServlet, in out : PrintWriter) : void +getCaption(in session : Session) : string +doesRender() : bool +getServletURL() : string «extends» VoteChoiceHTMLRenderer VotePlugin VoteResultHTMLRenderer Vote CommentPlugin CommentHTMLRenderer Comment HPI, SS2004: Middleware und Komponentenprogrammierung / 9 HASSO - PLATTNER - INSTITUT Suchen von Plugins Suche aller verfügbaren Plugins erfolgt pro Anfrage HPI, SS2004: Middleware und Komponentenprogrammierung / 10 HASSO - PLATTNER - INSTITUT Vorführung Web GUI / Komponentendeployment :EJBViewServlet (AdminConsole) :ShowGalleryItem Servlet (GalleryViewer) :VoteHTML Renderer (Plugin) doGet() doGet() render() deploy :CommentHTML Renderer (Plugin) doGet() doGet() render() render() HPI, SS2004: Middleware und Komponentenprogrammierung / 11 HASSO - PLATTNER - INSTITUT Test JUnit als Framework für Testcases Nicht ausreichend für das Testen von J2EEApplikationen JUnitEE als Testrunner Performanztests mit Delphi-Client WinInetAPI / HTTP HPI, SS2004: Middleware und Komponentenprogrammierung / 12 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 HPI, SS2004: Middleware und Komponentenprogrammierung / 13 HASSO - PLATTNER - INSTITUT Vorführung .NET Client Demo-Verlauf :Provider Bean C# Client :Session Manager :Folder Home :GalleryItem Home login() getSession() SessionObject SessionID getSubfolders() findByPrimaryKey() FolderObjects FolderIDs insertPicture() create() PictureObject PictureID :Picture Bean create() :PictureData Bean showGalleryItems() findByPrimaryKey() GalleryItemObjects GalleryItemIDs HPI, SS2004: Middleware und Komponentenprogrammierung / 14 HASSO - PLATTNER - INSTITUT Frameworkvergleich WebServices: jboss vs. .NET Web Services mit JBoss /** *@jboss-net web-service urn=„ProviderWS“ */ public class ProviderBean implements SessionBean { /** *@ejb.interface-method view-type="local" *@jboss-net.web-method */ public long login(String userName, String password) { Web Services mit .NET [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); HPI, SS2004: Middleware und Komponentenprogrammierung / 15 HASSO - PLATTNER - INSTITUT Erweiterungen Was man noch verbessern kann Bessere Testabdeckung (z.B. Zweigüberdeckung, GUI-Tests) Erhöhung der Robustheit Performanzoptimierung Sicherheit Verwendung von ACLs für jedes erasm-Item Physische Verteilung des Applikationsserversystems z.B. alle Bildoperationen auf separatem Rechner GUI-Verbesserungen Erweiterung der erasm-Platform Weitere Funktionen (Weblog, etc.) Mehrsprachigkeit Verwendung eines Portalservers (z.B. JetSpeed, Pluto) HPI, SS2004: Middleware und Komponentenprogrammierung / 16 HASSO - PLATTNER - INSTITUT Quellennachweise J2EE Flanagan, D., Fareley, J., Crawford, W.: Java Enterprise in a Nutshell, 2nd Edition, O‘Reilly & Associates, 2002 JBoss Inc.: JBOSS 3.2 Getting Started, http://www.jboss.org/modules/html/docs/jbossj2ee.pdf SUN 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/ Datenbankanbindung SAP MaxDB Dokumentation, http://www.sapdb.org/7.4/sap_db_documentation.htm .NET Liberty, J.: Learning C#, O‘Reilly & Associates, 1. November 2002 Liberty, J.: Programming C#, O‘Reilly & Associates, 1. Juni 2003 WebServices JBoss .NET Info, http://www.nsdev.org/jboss/stories/jboss-net.html Microsoft Developer Network, http://msdn.microsoft.com/webservices/understanding/specs/ Alle URLs beziehen sich auf Juni 2004 HPI, SS2004: Middleware und Komponentenprogrammierung / 17 HASSO - PLATTNER - INSTITUT