Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 142 Entwicklung von Java • • • • • • • • 1990: Team bei Sun Microsystems (James Gosling) entwickelt neu OOSprache, insbesondere für Embedded Systems 1994: Erkenntnis, dass Sprache für Web-Anwendungen geeignet ist – Kompakter Code – Interpreter Konzept – Plattform-unabhängig 1995: Namensgebung Java; Vorstellung der Sprache 1996: Große Akzeptanz für Programmierung im Internet 1997: JDK 1.1; Unterstützung durch viele vorgefertigte Klassen 1998: JDK 1.2 – Java IDL und RMI – Swing (GUI Bibliothek) Gegenwärtige Version: 1.3.1 (Bestandteil von J2SE) J2SE (mit SDK) 1.4 im Beta 3 (seit 11/01; Release in Q1/2002) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 143 Rolle von Java • • Java: Portable objekt-orientierte Programmierumgebung – – – – Programmiersprache (an C++ angelehnt) Compiler (erzeugt Bytecode) Java Virtual Machine (JVM): interpretiert Bytecode JIT (Just in Time) Compiler übersetzt Bytecode in Maschinencode Java ist die Sprache des Internet – Konzept Interpreter (JVM) mit Bytecode ideal für verteilte Systeme • Der gleiche Code kann in allen Stufen benutzt werden • Write Once Run Anywhere (WORA) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 144 Java Entwicklung und Ausführung Java SourceCodes oder über das Netz Laden vom Filesystem Java Compiler Class Loader ByteCode Verifier Just in Time Compiler Java ByteCodes Java Developers Kit IDE´s IDE: Integrated Development Environment z.B. JBuilder von Borland Architekturen von Web-Anwendungen, LMU, WS-01/02 Java Virtual Machine Binary Code Java Platform Folie 145 Java Plattformen • • • • Java 2 Platform, Standard Edition (J2SE) – Standard Java Konfiguration – Enthält alle Kern-Klassen – Enthält JDK Java 2 Platform, Enterprise Edition (J2EE) – Enthält J2SE – Zusätzliche API´s und Services für unternehmens-kritische Anwendungen (z.B. Transaktionen, Komponentenmodell EJB) PersonalJava – Teilmenge von J2SE Java Card – Teilmenge von PersonalJava – Bestimmt für Smart Cards Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 146 Java in .NET (JUMP) Ca. 20 Sprachen Java ByteCodes C# Compiler Compiler Compiler JUMP Converter Common Language Runtime CLR MSIL Visual Studio .NET Architekturen von Web-Anwendungen, LMU, WS-01/02 Class Loader oder über das Netz Visual J# .NET Laden vom Filesystem Visual Baisc .NET Framework MSIL: Microsoft Inrtermediate Language JUMP: Java User Migration Path (to Microsoft .NET) - Nur Sprache - Keine Unterstützung für API´s wie RMI Folie 147 Verteilte Verarbeitung mit Java Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 148 Verteilte Verarbeitung mit Java • Fall 1: Nutzung von Java in normaler CORBA Anwendung – ORB ist Basis – Java IDL, um Stubs und Skeletons zu generieren – Wenn Verteilung über Internet, dann zusätzlich IIOP • • • Fall 2: Anwendung Java basiert Verteilung im LAN Fall 3: Hauptteil der Anwendung Java basiert Verteilung im LAN Anwendungsteile in anderen Sprachen Fall 4: Verteilung Java Anwendung im Web Option der Integration mit anderen Sprachen Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 149 CORBA Generiert aus Interface beschrieben in IDL Client Server Client Stub Server Skeleton Object Request Broker (ORB) Client und Server können • in beliebigen • auch unterschiedlichen Sprachen geschrieben sein Architekturen von Web-Anwendungen, LMU, WS-01/02 CORBA/IDL sorgt für Mapping der Interfaces Folie 150 CORBA; Client in Java Generiert aus Interface beschrieben in IDL Client Java Server bel. Sprache Client Stub Server Skeleton Object Request Broker (ORB) • Standardfall für CORBA • Interface in IDL notwendig • Client Stub für Java geniert aus IDL Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 151 CORBA; Server in Java Generiert aus Interface in Java Generiert aus Interface beschrieben in IDL Client bel. Sprache Server Java Client Stub Server Skeleton Object Request Broker (ORB) • Standardfall für CORBA • Interface in IDL notwendig; generiert aus Java • Server Skeleton für Java geniert aus IDL Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 152 CORBA über Internet Generiert aus Interface beschrieben in IDL Generiert aus Interface beschrieben in IDL Client Server Client Stub Server Skeleton IIOP ORB-1 Client und Server können • in beliebigen • auch unterschiedlichen Sprachen geschrieben sein Architekturen von Web-Anwendungen, LMU, WS-01/02 ORB-2 CORBA/IDL sorgt für Mapping der Interfaces IIOP – Internet Inter-ORB Protocol Folie 153 Verteilte Verarbeitung mit Java • Fall 1: Nutzung von Java in normaler CORBA Anwendung – ORB ist Basis – Java IDL, um Stubs und Skeletons zu generieren – Wenn Verteilung über Internet, dann zusätzlich IIOP • • • Fall 2: Anwendung Java basiert Verteilung im LAN Fall 3: Hauptteil der Anwendung Java basiert Verteilung im LAN Anwendungsteile in anderen Sprachen Fall 4: Verteilung Java Anwendung im Web Option der Integration mit anderen Sprachen Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 154 RMI – Remote Method Invocation Client (Java) Server (Java) Client Stub Server Skeleton Java 2 Platform Standard Edition (J2SE) • • • • Client und Server sind beide in Java geschrieben Separate IDL ist nicht nötig. Java übernimmt die Rolle der IDL J2SE übernimmt die Rolle des ORB Stub und Skeleton werden von J2SE generiert Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 155 Verteilte Verarbeitung mit Java (Beispiel) Web Browser Applet Lädt Applet HTTP RMI Web Server Remote Method Invocation EJB File System Application Server Architekturen von Web-Anwendungen, LMU, WS-01/02 DB Folie 156 Verteilte Verarbeitung mit Java • • • Fall 1: Nutzung von Java in normaler CORBA Anwendung Fall 2: Anwendung Java basiert Verteilung im LAN Fall 3: Hauptteil der Anwendung Java basiert Verteilung im LAN Anwendungsteile in anderen Sprachen – Nutzung von JNI (Java Native Interface) • Verbindung von Java Programmen mit Programmen in anderen Sprachen • Sowohl: Java ruft andere Sprachen auf; als auch: andere Sprache ruft Java auf – Details zu JNI hier nicht behandelt • Fall 4: Verteilung Java Anwendung im Web Option der Integration mit anderen Sprachen Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 157 Verteilte Verarbeitung mit Java • • • • Fall 1: Nutzung von Java in normaler CORBA Anwendung Fall 2: Anwendung Java basiert Verteilung im LAN Fall 3: Hauptteil der Anwendung Java basiert Verteilung im LAN Anwendungsteile in anderen Sprachen Fall 4: Verteilung Java Anwendung im Web Option der Integration mit anderen Sprachen – Java Plattform mit IIOP Option – Kombination Java Plattform mit anderen Sprachen Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 158 RMI über IIOP Client (Java) Server (Java) Client Stub Server Skeleton J2SE IIOP J2SE • Wie Standard RMI • Benutzung des IIOP Protokolls • Damit Verteilung über das Internet Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 159 Verteilte Verarbeitung mit RMI über IIOP (Beispiel) Internet Inter-ORB Protocol Web Browser Applet Lädt Applet HTTP RMI über IIOP Web Server Nur Java zu Java EJB File System Application Server DB Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 160 Kooperation RMI und CORBA (Java Client) Client (Java) Server (bel. Sprache) Client Stub Server Skeleton J2SE Generiert aus Interface beschrieben in IDL IIOP ORB • Client ist in Java und Server in beliebiger Sprache (von CORBA unterstützt) geschrieben • Interfacebeschreibung in IDL wird aus Interface in Java generiert (oder auch umgekehrt?) Achtung Beschränkung bei existierenden Server Programmen möglich • J2SE kommuniziert über IIOP mit beliebigem ORB • Stub wird von J2SE (aus Java) und Skeleton von ORB (aus IDL) generiert Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 161 Verteilte Verarbeitung mit CORBA (Beispiel) Applet Web Browser Lädt Applet HTTP IIOP • IIOP – Kommunikation zwischen J2SE und ORBs verschiedener Hersteller • Einbindung unterschiedl. Sprachen möglich Web Server Object Request Broker Java C++ File System Andere Sprachen DB Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 162 Kooperation RMI und CORBA (Java Server) Client (bel. Sprache) Generiert aus Interface beschrieben in IDL Client Stub ORB Server (Java) Server Skeleton IIOP J2SE • Server ist in Java und Client in beliebiger Sprache (von CORBA unterstützt) geschrieben • Interfacebeschreibung in IDL wird aus Interface in Java generiert J2SE kommuniziert über IIOP mit beliebigem ORB • Skeleton wird von J2SE (aus Java) und Stub von ORB (aus IDL) generiert Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 163 Vorteile RMI gegenüber RPC und CORBA • • • • Objekt-orientiert: Argumente und Returnwerte können Objekte sein Klassen können übertragen werden – Beispiel: Methoden, die auf dem Server implementiert sind, können zum Client übertragen werden, um dort direkt ausgeführt zu werden – Performance Vorteil RMI basiert auf Java Sicherheitsmechanismen Leicht zu schreiben und zu benutzen – Alles in Java, keine separate IDL – Beispiel Remote Interface für Client: • • import java.rmi.*; public interface ExpenseServer extends Remote { Policy getPolicy() throws RemoteException; void submitReport (ExpenseReport report) throws RemoteException, InvalidReportexception; } Verteiltes Garbage Collection RMI unterstützt Multi Threading Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 164 Java 2 Platform, Enterprise Edition; Übersicht Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 165 Java 2 Platform, Enterprise Edition • • Java Plattform für Business Anwendungen Enterprise Edition: Robuste Plattform für unternehmensweite, geschäfts-kritische Anwendungen – Einbindung in Unternehmensinfrastruktur – Transaktions-Unterstützung – Datenbank Zugriff • • • Plattform für E-Business Anwendungen Mehrstufigen Architekturen Zwei Typen von Anwendungsarchitekturen – Web basiert – Traditionelle Client/Server Architektur Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 166 J2EE Stufen Architektur Tiers fat Client Web Browser J2EE HTML Platform Applet Client Web Container JSP Web Servlets J2EE Server Client Container Appl. Client EJB Container Entity EJB´s Database Session EJB´s ERP Systems Message-Driven EJB´s Legacy Systems Business Enterprise Information System Application Component Architekturen von Web-Anwendungen, LMU, WS-01/02 J2EE Container J2EE Platform Folie 167 J2EE • • • • J2EE Platform Specification – API´s – Release Level, um Kompatibilität, Portabilität und Integration zu sichern J2EE Compatibility Test Suite – Hersteller können damit ihre Produkte auf Komformität mit der Spezifikation testen J2EE Reference Implementation – Operationelle Definition der J2EE Plattform J2EE Application Model – Guide – Beispiele und Design Patterns Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 168 J2EE API´s (1) • • Die Nummern kennzeichnen die aktuellen Versionen im Herbst 2001 Enterprise JavaBeans Technology 2.0 (EJB) – – – – • • Komponententechnologie Genutzt für Business Logik EJB laufen in Container Drei Arten • Session Beans • Entity Beans • Message-driven Beans JDBC API 2.0 – API zum Zugriff auf relationale Datenbanken Java Server Pages Technology 1.2 (JSP) – Textseiten (z.B. HTML oder XML) mit enthaltenem Java Code – Aus JSP Seiten werden Servlets generiert Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 169 J2EE API´s (2) • • • • • • • Java Message Services 1.0 (JMS) – API zum Erzeugen, Senden, Empfangen und Lesen von Messages Java Transaction API 1.0 (JTA) – Klammerung von Datenbankoperationen zu einer Einheit JavaMail Technology (1.2) – Versenden von Mails Java API for XML Processing 1.1 (JAXP) – Lesen und Bearbeiten von XML Files J2EE Connector Architecture 1.0 (JCA) – Technologie zur Integration von anderen Anwendungen – EAI Technologie von J2EE Java Authentication and Authorization Services 1.0 (JAAS) – Authentifizierung und Autorisierung von Benutzern un Gruppen Java Naming and Directory Interface API (JNDI) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 170 Referenzarchitektur HTTP Benutzer-Schnittstellen Komponenten Business Komponenten Datenbank-Zugriffe Verzeichnis Schnittstellen Portal Server Firewall Integrations Services Transaktions-Management Prozess-Management Content Management Messaging Services Sicherheit LAN Verzeichnis Services Geschäfts Partner ERP Systeme Alt-Anwend. Datenbanken Datenbanken Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 171 Referenzarchitektur mit J2EE Komponenten Blaue Schrift in gestreiften Boxen kennzeichnen Komponenten der J2EE Definition HTTP LAN Firewall Enterprise JavaBeans JAXP JDBC API JNDI JSP Servlet Verzeichnis Services Geschäfts Partner JCA WebServices JTA Prozess-Management Content Management JMS - JavaMail JAAS Portal Server ERP Systeme Alt-Anwend. Datenbanken Datenbanken Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 172 Java 2 Platform, Enterprise Edition Details Christian Menk Software Architektur Berater Softlab GmbH Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 173 J2EE im Detail •Java Servlet APIJava •Java Server Pages Technology 1.2 (JSP) •Java Authentication and Authorization Services 1.0 (JAAS) •Java Naming and Directory Interface API (JNDI) •Java Remote Method Invocation Enterprise (RMI) •JavaBeans Technology 2.0 (EJB) •JDBC API 2.0 •Java Message Services 1.0 (JMS) •Java Transaction API 1.0 (JTA) •JavaMail Technology (1.2) •Java API for XML Processing 1.1 (JAXP) •J2EE Connector Architecture 1.0 (JCA) •Java Native Interface (JNI) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 174 Java Servlet API Servlet – Begriff für ein Java Programm auf dem Server, es erweitert den Webserver um Funktionalität. – Ähnlich wie CGI Scripts, sie sind jedoch schneller und brauchen weniger Ressourcen, weil nicht wie beim CGI ein neuer Prozeß gestartet wird, sondern bei jeder Anfrage nur ein lightweight-Thread erzeugt wird. – Ein Servlet kann wie ein Applikationsserver agieren, d.h. ein Websserver kann ein Servlet wie einen Service behandeln. Z.B. kann eine DBVerbindung aufrechterhalten werden, so dass Anfragen an die DB von einem Java Programm nicht immer wieder neu aufzubauen sind. – Benötigt wird ein Webserver auf dem die JVM läuft und die Servlet API unterstützt wird. – Bietet ein Server unabhängiges API Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 175 Java Servlet API 2 HTTP Server Java VM HTTPServlet HTTPServlet HTTPServlet doGet(HttpServletRequest request, doGet(HttpServletRequest request, doGet(HttpServletRequest request, HttpServletResponse response); HttpServletResponse response); HttpServletResponse response); doPost(HttpServletRequest request, doPost(HttpServletRequest request, doPost(HttpServletRequest request, HttpServletResponse response); HttpServletResponse response); HttpServletResponse response); Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 176 Java Servlet API 3 HTTP Server Java VM request request request request HTTPServlet HTTPServlet HTTPServlet HTTPServlet thread CGI Process request request request request CGI Process CGI Process CGI Process Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 177 Servlet Beispiel private void doGet(HttpServletRequest request, HttpServletResponse response) { try{ Enumeration e = request.getParameterNames(); String submitter = request.getParameter("SUBMITTER"); ArrayList optionsList = new ArrayList(); while (e.hasMoreElements()){ String id = e.nextElement().toString(); logTO(id + "::" +request.getParameter(id)); HttpSession session = request.getSession(); if (id.equals("model")) session.putValue("model",request.getParameter(id)); //if (id.equals("color")) //session.setAttribute("color",request.getParameter(id)); if (submitter!=null){ session.putValue("SUBMITTER",submitter); } ... Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 178 Java Server Pages (JSP) Java Server Pages (JSP) – Ähnlich wie Microsofts Active Server Pages erlauben Suns Java Server Pages, Programmcode in HTML-Dokumente einzubetten. – Eine Technologie, um serverseitig HTML-Seiten zu generieren. – Aus einer JSP wird vom Server ein Servlet erzeugt. – JSP können andere Java Objekte benutzen (JSP-Beans) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 179 Java Server Pages (JSP) 2 HTTP Server 5:response Java VM + JSP Engine 1:request 1 6:request 2-n 5:response HTTPServlet 4:Kompiliert und lädt 2:lädt 3:erzeugt JSP Seiten Servlet (HTML+JAVA) Source Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 180 JSP Beispiel <jsp:useBean id="ordering" scope="session" class="com.bmw.ivs.jsp.OrderBean" /> <TR VALIGN="top" ALIGN="left"> <TD COLSPAN=2 HEIGHT =22></TD> <TD WIDTH=56 COLSPAN=2><INPUT id="FormularTextfeld1" TYPE="text" NAME="ho" VALUE="<%= request.getParameter("ho")%>" SIZE=7 MAXLENGTH=10 ></TD> <TD></TD> </TR> <TR VALIGN="top" ALIGN="left"> <TD HEIGHT =24></TD> <TD WIDTH=27 COLSPAN=2><SELECT id="FormularKombinationsfeld5" NAME="auftragsart" > <option value="0„ <%=ordering.checkSelection(request,"auftragsart","0")%>> 0 – Kunde </option> <option value="1„ <%=ordering.checkSelection(request,"auftragsart","1")%>> 1 – Lager </option> </SELECT></TD> </TR> Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 181 Java Authentiction and Authorization Service (JAAS) •Standard erweiterung der Java 2 Plattform • Authentifizierungs-Framework • Pluggable authentication • User basierte Autorisierung Application Login Context API Konfig. LoginModul Kerberos Architekturen von Web-Anwendungen, LMU, WS-01/02 Smart Card Biometric Folie 182 Java Authentiction and Authorization Service (JAAS) 2 ** * Example Java 2 Security Policy Entry */ grant Codebase "www.sun.com", Signedby "duke" { FilePermission "/cdrom/-", "read"; } /** * Example JAAS Security Policy Entry */ grant Codebase "www.sun.com", Signedby "duke", Principal com.sun.Principal "charlie" { FilePermission "/cdrom/charlie/-", "read"; MyPermission “DOSOMETHING"; } Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 183 Java Naming and Directory Interface (JNDI) JNDI (Java Naming and Directory Services) – Bietet einen standardiersierten Zugriff auf Verzeichnisdienste, um Objekte und Ressourcen anzufordern. So werden die Enterprise-JavabeansKomponenten-Schnittstellen über JNDI angefordert. – Teil des Java Enterprise API. JNDI ist eine Java Standard Extension. Die API gibt Java Anwendungen eine einheitliche Schnittstelle zu verschiedenen Naming und Directory Services Funktionalitäten in Unternehmen. – Mit JNDI können Java Anwendungen Java Objekte jeden Typs gespeichert und eingelesen werden, sowie Standard Directory Operationen wie das Assoziieren von Attributen mit Objekten oder das Suchen nach Objekten über ihre Attribute ausgeführt werden. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 184 Java Naming and Directory Interface (JNDI) 2 LDAP Directory Role EJB Store src EJB Home A User a.java User b.java Role EJB Home C doc User EJB Home B Tut.txt JNDI Lookup Lookup Lookup Java Application EJB Servlet Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 185 Java Remote Method Invocation RMI RMI ( Remote Method Invocation ) – Erstellung von verteilten Java-Anwendungen ( Java-to-Java ). – Methoden eines remote Java Objekts werden von einer JVM aufgerufen, die auf einem anderen Host läuft. Ein Java Programm kann ein remote Objekt aufrufen sobald es eine Referenz des remote Objekts erhalten hat, entweder über den Bootstrap Naming Service von RMI oder über ein (Aufruf-) Argument bzw. einen Rückgabewert. Ein Client kann ein remote Objekt in einem Server aufrufen, wobei der Server wiederum ein Client aus remote Objekte sein kann. – RMI verwendet die Java Objekt Serialization zum Speichern und Zurückholen von Java Objekten, indem ihr Zustand serialisiert über einen Stream geschrieben und gelesen wird (wie in eine Datei). – Für Basis-Kommunikationsmechanismen stehen in Java Sockets zur Verfügung. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 186 Java Remote Method Invocation RMI Ablauf JNDI Stub 1: lookup Java VM Java VM 2: get Java Applikation 4: call Skeleton 8: result 3: call •Netz Skeleton 6: return result Stub 5: call OBJ Java Object 7: result to Stub Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 187 Java Remote Method Invocation RMI over IIOP RMI-IIOP (Remote Method Invocation - Internet Inter-ORB Protocol) – Kommunikation von RMI über das Corba-Protokoll IIOP. – Mittels dieser Brücke ist es möglich, Enterprise Javabeans direkt zu integrieren, beispielsweise in Visual Basic Clients - und umgekehrt IIOP (Internet Inter-ORB Protocol) – Kommunikationsprotokoll von CORBA. – Standard-Protokoll, das von jedem ORB unterstützt wird. – Besteht aus GIOP und TCP/IP. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 188 Enterprise Java Beans was ist das ? Enterprise Java Beans (EJB) – – – – – In EJB’s wird die Business-Logik abgebildet. Sie ist ein Begriff für eine serverseitige Komponente. Komponentenmodell für die Entwicklung und Verteilung von Java Komponenten in einer verteilten Multi-Tier-Umgebung. EJBs sind portabel und protokollneutral und somit unabhängig von einem bestimmten Webserver. EJBs werden oft mit den Java Beans der Client-Seite verwechselt. Beides sind jedoch unterschiedliche Technologien. Gemeinsam ist nur die Sprache Java und dass es sich um Komponenten handelt. EJBs können nicht nur mit Java-Clients und Java-Server-Komponenten kommunizieren, sondern über DCOM mit Windows-Programmen und über IIOP mit CORBA Servern und somit mit allen Arten von Anwendungen die via CORBA kommunizieren können. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 189 Enterprise Java Beans Prinzip JNDI ... MyBeanHome ... Client ... lookUp 1 EJB Container 3a 2 create or find on EJB Home OBJ 3c cast to EJB remote OBJ 6 5 invoke Method ... 4 Remote Stub 9 Architekturen von Web-Anwendungen, LMU, WS-01/02 EJB OBJ 3b Server Skeleton 7 8 Folie 190 Enterprise Java Beans aus Client Sicht try { //get naming context Properties properties = null; properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); properties.put(Context.PROVIDER_URL, "t3://localhost:7301"); properties.put(Context.SECURITY_PRINCIPAL, „user“); properties.put(Context.SECURITY_CREDENTIALS, „PWD“); Context ctx = new InitialContext(properties); //look up jndi name Object ref = ctx.lookup("com.bmw.ivsr.server.bpro.orderentryenquiry.OrderEntryEnquiryBPrOHome"); //cast to Home interface OrderEntryEnquiryBPrOHome orderEntryEnquiryBPrOHome = (OrderEntryEnquiryBPrOHome) PortableRemoteObject.narrow(ref, OrderEntryEnquiryBPrOHome.class); OrderEntryEnquiryBPrO orderEntryEnquiryBPrO = createBPro(); orderEntryEnquiryBPrO.createOrder(orderentry); catch (Exception e){ } Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 191 Enterprise Java Beans Deployment 1 <?xml version="1.0"?> <!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_2.dtd'> <ejb-jar> <enterprise-beans> <entity> <ejb-name>PurchaseOrderBEO</ejb-name> <home>com.bmw.ivsr.server.beo.purchaseorder.PurchaseOrderBEOHome</home> <remote>com.bmw.ivsr.server.beo.purchaseorder.PurchaseOrderBEO</remote> <ejb-class>com.bmw.ivsr.server.beo.purchaseorder.PurchaseOrderBEOBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>com.bmw.ivsr.server.pk.PurchaseOrderPK</prim-key-class> <reentrant>False</reentrant> <cmp-field> <field-name>purchase_order_id</field-name> </cmp-field> </entity> </enterprise-beans> Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 192 Enterprise Java Beans Deployment 1 <assembly-descriptor> <container-transaction> <method> <ejb-name>ManufacturerOrderBEO</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar> Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 193 Enterprise Java Beans Session Beans Es existieren zwei Arten von Session Beans: •Statefull: sind einer Session zugeordnet und speichern Informationen von einem Aufruf zum nächsten. •Stateless: sind keiner Session zugeordnet innerhalb der Session Bean dürfen keine Informationen gespeichert werden. Client Zeit Client Zeit Pool Pool Statefull Session Statefull Session Statefull Bean Session Statefull Bean Session Statefull Bean Session Bean Bean Architekturen von Web-Anwendungen, LMU, WS-01/02 Stateless Session Stateless Session Stateless Bean Session Stateless Bean Session Bean Bean Folie 194 Enterprise Java Beans Entity Beans Repräsentieren persistente Daten Bieten create find und delete Methoden Es existieren zwei Ausprägungen: • Entity Bean mit Container managed Persistance • Entity Bean mit Bean managed Persistance EJB Container Store newA to DB SetA(newA) Set newA CMP Entity SetA(newA) DB Set newA and Store Architekturen von Web-Anwendungen, LMU, WS-01/02 BMP Entity Store newA to DB Folie 195 Enterprise Java Beans Message Beans • Neuer Enterprise Java Bean Typ in JB 2.0 • Asynchron • Wird beim Serverstart erzeugt • Wird beim eintreffen einer Nachricht aktiviert • Ist Stateless • Hat kein Home oder Remote interface • Die Methode onMessage enthält die Business Logic • Ist einer JMS Queue oder einem Topic zugeordnet Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 196 Enterprise Java Beans Message Beans 2 EJB Container Stateless CMP Entity Sessionbean Interaction Interaction Message Bean onMessage JMS Provider Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 197 Java Database Connectivity (JDBC) Java Database Connectivity (JDBC) – API für die Anbindung an relationale Datenbanken, so dass die Abfrage und Aktualisierung der Datenbank mit Hilfe von SQL ermöglicht wird. – Funktionalität: Verbindung zur DB herstellen, SQL Befehle absetzten und Auswertung der Ergebnisse der Anfrage. – Für eine ODBC-fähige Datenbank genügt eine JDBC-ODBCBridge. – Es gibt vier JDBC-Lösungskategorien (Typen 1-4): 1. JDBC-ODBC-Bridge 2. plattformeigene JDBC-Treiber 3. universelle JDBC-Treiber 4. direkte JDBC-Treiber Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 198 Java Database Connectivity 2 (JDBC) Ablauf der Kommunikation mit einer JDBC DB Java VM erzeugen Ablauf DB Kommunikation erzeugen Connection PreparedStatement Statement Wird in DB gespeichert DB ausführen ausführen auswerten Ergebnis ResultSet Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 199 Java Message Service (JMS) Java Messages Service (JMS) – API für den Zugang zu Enterprise (unternehmensweite) Messaging Systemen. – Vereinfacht das Schreiben von Business Applications, welche asynchron Business Daten und Ereignisse schicken und empfangen. – Enterprise Beans können auf einfache Weise Nachrichten verschicken und empfangen. Zwei Arten: Point to Point – jede Nachricht hat genau einen Empfänger Publish Subscribe – jeder Subscriber erhält eine Nachrichten Kopie Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 200 Java Message Service (JMS) 2 Point to Point JMS Empfänger JMS Sender A JMS Provider A B Queue C C B DB Publish - Subscribe JMS Sender JMS Empfänger A JMS Provider A,B,C B TOPIC A,B,C C A,B,C DB Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 201 Java Transaction API und Service JTA (Java Transaction API) – JTA ist die Programmier-Schnittstelle für Ressourcen-Manager und Transaktions-Systeme. Java Transaction Service (JTS) – Definiert ein Standard Transaction Management API für die Java Plattform und bietet Zugang zu transaktionsorientierten Umgebungen wie Prozeßmonitore, Tansaktionsmanager oder Transaktionsapplikationen auf CORBA-Basis. – Der JTS wird von den Herstellern vom Transaktions-Manager implementiert. Die Integration von CICS ist somit ohne weiteres möglich. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 202 Java Transaction API (JTA) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 203 Java Transaction Service (JTS) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 204 Java Mail Java Mail-API – Das JavaMail API enthält einen Satz abstrakter Klassen für ein MailSystem, mit JavaMail erhält der Programmierer eine flexible Schnittstelle für die Entwicklung von Mail-Applikationen. – Das API liefert ein plattformunabhängiges, protokollunabhängiges Framework zur Entwicklung von Mail und Messaging Anwendungen basierend auf Java Technologie. Das API ist als eine Java Standard Extension implementiert. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 205 Java Mail Beispiel Session Store Transport getFolder(„A“) Folder A getFolder(„C“) Folder C Folder C Message 1 Message 1 getMessage(1) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 206 Java Connector Architecture Ist Schnittstelle für Applications-Komponenten Applikation Server Container-Component Contract EJB Appl. System Contract Ressource Adapter Container Services Connection Manager Transaction Manager Security Manager Enterprise System Interface Behandelt Connection, Transaction und Security Management zwischen Appserver und Enterprise System Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 207 Java Native Interface (JNI) Schnittstelle für Java Anwendungen um mit nativ Bibliotheken zu interagieren. Sind bestehende Anwendungen oder Bibliotheken in eine Serveranwendung Integrieren die über keine Komponenten Schnittstelle verfügen (CORBA/RMI/TP-Monitor) so kann mittels des JNI eine Proprietäre Zugriffsschicht erstellt werden. Sehr gut C – C++ Integration. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 208 Architekturen von Web-Anwendungen, LMU, WS-01/02 BO - Factory FAT BO - Object FAT BO - Object BO - Object BO - Object FAT BO - Object FAT BO - Object BO - Object BO - Object Controler Object Controler Object UI Object UI Object UI Object Controler Object Controler Object UI Object UI Object UI Object Client Server Client Rich Client Application DB-System Folie 209 Architekturen von Web-Anwendungen, LMU, WS-01/02 ‚thin‘ BO Object BO - Object ‚Thin‘ BO Object BO - Object BO - Factory ‚thin‘ BO Object BO - Object ‚thin‘ BO Object BO - Object Command Command - Object - Object Command Command - Object - Object UI Object UI Object UI Object Command - Object Command - Object UI Object UI Object UI Object Client Server Client Rich Client Application DB-System Folie 210 ‚thin‘ BO - Object BO - Object ‚thin‘ BO - Object BO - Object BO - Object Architekturen von Web-Anwendungen, LMU, WS-01/02 ‚thin‘ BO - Object BO - Object BO - Factory Client BO - Object Rich Client Application BO - Object ‚thin‘ BO - Object BO - Factory BO - Object ‚thin‘ BO - Object BO - Object Rich Client Application ‚thin‘ BO - Object Command - Object ‚Thin‘ BO - Object wenn Jabba von 1.000 Benutzern gleichzeitig benutzt würde Client BO - Object Command - Object BO - Object ‚thin‘ BO - Object BO - Object BO - Object ‚thin‘ BO - Object BO - Object Command - Object ‚Thin‘ BO - Object BO - Factory Command - Object Command - Object UI - Object UI - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object BO - Object BO - Object Client BO - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object ‚thin‘ BO - Object ‚thin‘ BO - Object BO - Factory BO - Object Rich Client Application BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object BO - Factory BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object BO - Object Command - Object BO - Object ‚thin‘ BO - Object BO - Object ‚thin‘ BO - Object Command - Object Command - Object BO - Factory Command - Object Command - Object UI - Object BO - Object ‚thin‘ BO - Object BO - Object ‚Thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object BO - Object BO - Object UI - Object ‚thin‘ BO - Object ‚thin‘ BO - Object UI - Object BO - Object UI - Object ‚Thin‘ BO - Object Command - Object BO - Object BO - Factory Command - Object Command - Object UI - Object UI - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object Command - Object UI - Object UI - Object BO - Object BO - Object UI - Object ‚thin‘ BO - Object ‚thin‘ BO - Object Client ‚Thin‘ BO - Object Command - Object Command - Object UI - Object BO - Object ‚thin‘ BO - Object Command - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object BO - Object BO - Object Command - Object ‚Thin‘ BO - Object BO - Factory Command - Object Command - Object UI - Object UI - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object Command - Object UI - Object UI - Object BO - Object BO - Object UI - Object ‚thin‘ BO - Object ‚thin‘ BO - Object Rich Client Application ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object UI - Object BO - Object BO - Factory ‚thin‘ BO - Object Client BO - Object Rich Client Application ‚thin‘ BO - Object Rich Client Application BO - Object ‚Thin‘ BO - Object Command - Object Client BO - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object Command - Object UI - Object BO - Object BO - Object UI - Object ‚thin‘ BO - Object ‚thin‘ BO - Object UI - Object BO - Object BO - Object BO - Factory ‚Thin‘ BO - Object Command - Object Command - Object Rich Client Application BO - Object Command - Object Command - Object UI - Object UI - Object BO - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object während einer JABBA Sitzung werden ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Client ‚Thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object BO - Factory BO - Object ‚Thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object BO - Object Client BO - Object Command - Object Command - Object UI - Object BO - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object ‚Thin‘ BO - Object Command - Object BO - Object BO - Factory Command - Object Command - Object UI - Object UI - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object Rich Client Application ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object UI - Object ‚thin‘ BO - Object BO - Factory BO - Object Client ‚thin‘ BO - Object Rich Client Application BO - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object BO - Object Rich Client Application BO - Object UI - Object ca 280.000 Command und BO Objekte !! Speicherbedarf: über 5 Gigabyte UI - Object ‚thin‘ BO - Object BO - Object BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object Command - Object BO - Object ca 280 Command Objekte und BO Objekte plus 20 View Objekte Speicherbedarf: ca 6 MB (laut Optimize) ‚thin‘ BO - Object BO - Factory Command - Object Client BO - Object Command - Object UI - Object Command - Object Command - Object UI - Object UI - Object Client ‚Thin‘ BO - Object Command - Object Command - Object UI - Object BO - Factory BO - Object ‚thin‘ BO - Object BO - Object ‚Thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object Rich Client Application ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object BO - Object Command - Object Command - Object UI - Object UI - Object Rich Client Application ‚thin‘ BO - Object BO - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object Client UI - Object BO - Object BO - Factory ‚Thin‘ BO - Object Command - Object BO - Object Command - Object Command - Object UI - Object UI - Object ‚thin‘ BO - Object Command - Object Command - Object UI - Object UI - Object Command - Object UI - Object UI - Object Client Server - und jetzt werden es viele Rich Client Application Client Am BSP JABBA: Rich Client Application Client Client DB-System Rich Client Application Rich Client Application Client Folie 211 Was macht WEB basierte Systeme komplex Applikation Server Client Client WEB Container EJB Container Backendsysteme Besandsführung I Client Callcenter Client Enterprise Applikation Mainframe Client Enterprise Applikation Client Client Client Architekturen von Web-Anwendungen, LMU, WS-01/02 ... Enterprise Applikation DB Folie 212 Ein WEB Hit aus J2EE Sicht KLICK oder ENTER Web Server Web Container Servlet Engine Web Browser Browser schickt request Browser rendert HTML Ergebnis Server empfängt request Servlet Engine sucht JSP/ erzeugt einen Thread Server sendet HTML zum Browser JSP benutzt JSP Bean JSP bildet Ergebnis in HTML ab EJB Conteiner Session EJB führt Businessmethoden aus JSP Bean benutzt EJB home und remote Methoden Entity EJB repräsentieren BO‘s Session EJB liefert Ergebnis an JSP Bean Persistente Daten RDBMS und/oder Persistence Schicht System liefern BO Daten Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 213 Things to consider with J2EE (and any other distributed Obj System) • Architektur • Transaktionsmodel • Objekt Zustand und Verteilung • Objekt Identität • Skalierung des Systems • O/R mapping Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 214 J2EE - Architektur - J2EE Schichten Client Server J2EE Containr (JSP/Servlet/...) DB Service Domain Persistence Renders HTML Content Invokes services Object Distribution Business behavior Basic CRUD services Field - Syntax Validation Maintain conversational state Use case control Semantic Validation O7R mapping Page flow Simple Data Types Transaction control Transaction support Enterprise Application Presentation Application EJB Container Application Domain Objects Objects or Entity Beans Domain Objects and or Object State Domain Object State Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 215 J2EE - Architektur - Service Architektur System verhaltens und Domain Grenze Domain Model Account Services JSP/Servlet Client Domain Objecte Application Objecte Order Services Java Client Rechnungs Services Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 216 J2EE - Transaktionsmodel 1 Transaktion über eine gesamten Use Case. Die Bearbeitung von BO Daten findet innerhalb der Transaktion statt. Die Bearbeitung von BO Daten findet ausserhalb einer Transaktion statt. Der Use Case wird in mehrerer kurze Transaktionen, die unterschiedliche Ressource binden zerlegt. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 217 J2EE - Transaktionsmodel 2 Write-Write Conflicts kennen wir: Zeit getAccount getAccount Account Services 2000+1000 2000+1000 2000,00 4000,00 3000,00 Write-Write Conflict Erkennung •Timestamps •Counters •State comparison Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 218 J2EE - Objekt Zustand und Verteilung 1 Remote Objekt Referenz und Serialisierung Remote Objekt Referenzen Das Problem mit der Serialisierung: Transitive Menge jeder Aufruf einer Methode ist ein remote Aufruf. Wenn X get Methoden benötigt werden, um den Namen, Vornamen etc. der Person darzustellen finden mindestens X-1 unnötige Remote Aufrufe statt. Ein System das sich so verhält wird als chatty bezeichnet. Gewünschte Menge Person Adresse Stadt Andere Daten Verzeichnis der Städte Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 219 J2EE - Objekt Zustand und Verteilung 2 Domain Model Methoden Aufruf Account Services Service Client Return Wert State Holder Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 220 J2EE - Objekt Zustand und Verteilung 3 Guide für Objekt Verteilung: •So wenig Objekte verteilen wie nötig •So wenig remote Referenzen wie möglich •Keine serialisierten Objektgeflechte versenden wenn nur ein Teil benötigt wird •Nur vom Client benötigte Daten senden. •Keine großen Objekt Sammlungen an den Client - Leichtgewichtigen Ersatz verwenden •Meistens sind State Objekte in unterschiedlicher Ausprägung eine gute Wahl. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 221 J2EE - Skalierung des Systems 1 Stateful versus Stateless Session Beans Stateless Beans können von vielen Sessions benutzt werden aber Session Status Informationen müssen irgend wo anders abgelegt werden. Entity Beans versus Java Classes Entity Beans sind Schwergewichte und dementsprechend belasten sie den EJB Containert sehr. Hier macht es die Mischung aus Entity Objekten und abhängigen Objekten die als ‚normale‘ Java Objekte implementiert werden könne. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 222 J2EE - Skalierung des Systems 2 JSPs and JSP Beans JSP‘s und JSP Beans sind, neben der HTTP Session eine Ort wo Session Status Informationen gespeichert werden können. Connection Pooling Verbindungen zur Datenbank sind eine ‚teuere‘ Ressource, die am besten zu 100 % genutzt werden sollte. Deshalb sollte sie vielen Clients zur Verfügung stehen. Ist nur in Verbindung mit dem Model der kurzen Transaktionen möglich. Große Ergebnismengen Eine Abfrage kann zu großen Ergebnismengen führen. In diesem Fall muß das System dem Client einen ‚Cursor‘ Mechanismus anbieten und sollte nicht die gesamte Ergebnismenge zurück liefern. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 223 J2EE - O/R mapping 1 Objekt Dirtiness Die Persistenzschicht muß in der Lage sein jede Änderung in einem Objekt zu erkennen um diese Persistent zu machen. Objekt Identität Oder wer gehört zu wem. Insb. Mit State Objekten ein Problem. A B C = C ?? Architekturen von Web-Anwendungen, LMU, WS-01/02 A B C Folie 224 J2EE - O/R mapping 2 Automatisch (CMP) oder von Hand (JDBC) ?? Beides !! •CMP rein zur Speicherung und Suche nach einzelnen, kompletten Objekten. •JDBC zur Bildung von Listen und immer wenn Optimierung nötig. Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 225 The BIG Picture Client Browser + JavaScript Backendsysteme I*Net JSP/Servlet WEB Container EJB Container One to One Marketing System WAP Gateway EMail Client MAIL SERVER Service Broker WAP Mobil - Device Content Management/ Web Authoring Portal UseCase Kunden Connector‘s BesandsBesandsBesandsführung I führung führung I II UseCase Connector‘s Callcenter UseCase UseCase Connector‘s ... ... Connector’s I*Net DB Connector’s Connector’s Message oriented Middleware Architekturen von Web-Anwendungen, LMU, WS-01/02 Directory Server Folie 226 J2EE Schichten - in der i*Net Plattform Backendsysteme I*Net WEB Container WAP Gateway MAIL SERVER UseCase UseCase UseCase Connector‘s Persistence Portal Service Domain Domain UseCase Service Broker One to One Marketing System WAP Mobil - Device EMail Client Kunden JSP/Servlet Content Management/ Web Application Authoring Presentation Browser + JavaScript EJB Container Connector‘s Connector‘s Enterprise Applicationen Client BesandsBesandsBesandsführung I führung führung I II Callcenter ... ... Connector’s I*Net DB Connector’s Connector’s Message oriented Middleware Architekturen von Web-Anwendungen, LMU, WS-01/02 Directory Server Folie 227 One to One Marketing System / Portal WEB Container One to One Marketing System Portal Mögliche Produkte: • • • • • • • Personalisierung Authentifizierung Tracking Business Rule Engine Business Rule Managment System Session Handling Rechte Rollen Konzept Broadvision ILOG JRules /USoft Developer Series + BEA Commerce Servers ILOG JRules /USoft Developer Series + IBM Enterprise Information Portal Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 228 Contentmanagament System/Web Authoring Content Management/ Web Authoring WEB Container Architekturen von Web-Anwendungen, LMU, WS-01/02 Verwaltet den Inhalt des I*NET Portals und ermöglicht die Erstellung von HTML Seiten ohne HTML Kenntnisse idealer weise als WEB Anwendung. Führt den Anwender (Inhouse/ Außendienst) am Cooperate Design entlang zu seinen neuen Seiten. Folie 229 Webanwendungen in der i*Net Plattform JSP/Servlet WEB Container Controller Servlet Browser WEB Anwendungen innerhalb der i*NET Plattform bilden das Model View Controller Pattern ab. Model(EJB‘s) dispatch Request forward View JSP UseCase OBJ get Data Contentmanagament Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 230 Service Broker Ist System / Plattformunabhänige Schnittstelle zu den Usecase Entkoppelt die Systeme/Dienste durch den Einsatz von XML dies macht eine unabhängige Weiterentwicklung der Subsysteme und ‚Anwednungen‘ möglich Architekturen von Web-Anwendungen, LMU, WS-01/02 Service Broker XML EJB Container dispatch Folie 231 UseCase Ein ‚Usecase‘ ist hier ein Teil einer Szenario Implementierung. Er stellt die für die Durchführung eines Szenarios nötigen Funktionen zur Verfügung. EJB Container UseCase Zusätzlich bildet er die Transaktionsklammen für alle ablaufenden Teilfunktionen. Dabei muß auch ein zwei Phasen Commit möglich sein (Einbindung von Basissystemen). Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 232 Szenario Logik Prozeß Logik Architekturen von Web-Anwendungen, LMU, WS-01/02 Entity Object UseCase/ „Szenario“ Entity Object Business activity Object EJB Container Entity Object Business activity Object Business activity Object Business activity Object Business activity Object Szenario Inferface Object UseCase/Szenario - genauer betrachtet UseCase Entity Logik Folie 233 Basis- / Backendsysteme Backendsysteme Connectoren werden für alle benötigten Basissysteme erstellt, so werden diese in der i*Net Plattform einheitlich verfügbar gemacht. Neben Connectoren zu Basissystemen sind auch Connectoren zu i*Net Plattform eigenen Diensten wie DB, Messaging und Directory nötig. Kunden Connector‘s Connector‘s Connector‘s Connector’s BesandsBesandsBesandsführung I führung führung I II Callcenter ... I*Net DB Connector’s Message oriented Middleware Architekturen von Web-Anwendungen, LMU, WS-01/02 Directory Server Folie 234 Szenario 1 in der Vision Interessent CICS/MQS/JNI/... Browser + JavaScript MAIL SERVER createInfo Request getTarifInfo Tarifengine respons createInter essent createInfo Request getAAP getMail Vorl Interessent getTarif getTarif Info Info create Interessent createInfo Request AAP SYS InfoRequest data (XML) Content Management Tarif INFO View AAP EMail Client Kunden Szenario 1 (XML) Service requ EMail Client EJB Container AAP JavaScript Contoler JSP/Servlet Servlet WEB Container Service Broker post TARIF+FORM Browser Backendsysteme I*Net I*Net DB postEMAIL Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 235 Szenario 1 in der Vision Interessent Browser + JavaScript EMail Info + Vorlage MAIL Client SERVER createInfo Request getTarifInfo createInter essent createInfo Request getAAP getMail Vorl Tarifengine Interessent AAP data (XML) getTarif getTarif Info Info create Interessent createInfo Request AAP SYS InfoRequest Tarif INFO View Kunden AAP EMail Client EJB Container Szenario 1 Service Broker JavaScript Contoler JSP/Servlet Servlet WEB Container Content Management post Info request Browser + Backendsysteme I*Net I*Net DB postEMAIL Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 236 Szenario 3 in der Vision AAP Portal Browser + JavaScript EMail Client Content Management/ Web Authoring Browser + JavaScript Logon + session MM One to One Marketing data (XML) EMail System Client EJB Container Szenario 3 getKunde getVorg getVorg Status Info Kunde JSP/Servlet WEB Container Service Broker post Info request Backendsysteme I*Net Workflow Connector Kunden Workflow get Vorgang getAAP create AkquiHint getMail Vorl postEMAIL MAIL SERVER AAP Kunde AAP SYS I*Net DB getTracink Data Architekturen von Web-Anwendungen, LMU, WS-01/02 Timed Service Folie 237 Szenario 3 in der Vision Vorlage + Link Browser + JavaScript Portal create WebPage getKunde getVorg getVorg Status Info Workflow Connector Kunden Workflow get Vorgang getAAP create AkquiHint getMail Vorl postEMAIL EMail Info + Vorlage MAIL Client SERVER getTracink Data Architekturen von Web-Anwendungen, LMU, WS-01/02 Kunde EJB Container Szenario 3 Service Broker Browser + JavaScript Logon + session MM One to One Marketing EMail System Client WEB Container Content Management/ Web Authoring JSP/Servlet AAP Backendsysteme I*Net Timed Service AAP Kunde AAP SYS Tracking Info I*Net DB nach Business Rules Folie 238 Szenario 3 in der Vision (Variante) WEB Container Szenario 3 One to One Marketing System Browser + JavaScript create WebPage Info requ Service Broker Portal AAP getKunde getVorg getVorg Status Info Content Management/ Web Authoring EMail Client EJB Container Kunde JSP/Servlet Browser + JavaScript EMail Client Backendsysteme I*Net Workflow Connector Kunden Workflow get Vorgang getAAP create HintEMail getMail Vorl postEMAIL MAIL SERVER AAP Kunde AAP SYS Tracking Info I*Net DB getTracink Data Architekturen von Web-Anwendungen, LMU, WS-01/02 Timed Service Folie 239 Wichtige Kriterien für die i*Net Plattform • • • • • • • ‚kleine‘ Subsysteme lose Kopplung zwischen den Subsystemen XML wo immer möglich Verteilung der Last auf alle Schichten Einsatz von Industriestandards Einsatz von etablierten Produkten frühe Ein-/Anbindung bestehender Systeme Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 240 XML und Performance 4000 3500 Millisec 3000 serobj mit 3 Param XML mit 3 Param serobj 6 Param XML 6 Param serobj 9 Param XML 9 Param 2500 2000 1500 1000 500 m it 10 m 0 it 50 m 0 it 9 m 00 it 13 m 00 it 17 m 00 it 21 m 00 it 25 m 00 it 29 m 00 it 33 00 0 Aufrufen Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 241 Ergebnisse der i*Net Plattform 1 UseCase/ „Szenario“ Service Broker Connector Content Management One to One Marketing System Portal Java Framework und Templates Server + EJB das über eine XML Schnittstelle jeglichen Service starten kann. Java Basisklassen und Templates + Connectoren Verbindung zum One to One System Einrichtung und Anbindung Templates für das Business Rule System Einrichtung der Business Rule Umgebung (Event System) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 242 Ergebnisse der i*Net Plattform 2 Message oriented Middleware Einrichten der Plattform Message Threads Standard Connectoren Directory Server Einrichten der Plattform Struktur Standard Connectoren Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 243 Things to keep in mind 1 Architektur: •System in die Schichten zerlegen entscheiden wo welches Objekt ‚lebt‘ •Benötigte Services und deren ‚Service Manager‘identifizieren •Definieren des Services API (XML ?) •Die Art benötigten Transaktionen festlegen •Entscheiden ob und wie write-write Konflikte erkannt werden •Objekt Verteilung festlegen - Referenzen - State Objekte - Distribution Objekte (enthalten Informationen aus mehreren Domain Objekten) Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 244 Things to keep in mind 2 Skalierung: •Wie viele konkurrierende Benutzer wird es geben ? •Wie viele statefull Beans wird das System verkraften ? •Was soll ‚gepoolt‘ werden und in welchem Umfang ? •Die Art benötigten Transaktionen festlegen ? •Wie werden große Ergebnismengen behandelt ? Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 245 Things to keep in mind 3 Persistenz: •RDBMS oder Objekt DB ? •Bei RDBMS O/R mapping build - buy ? •Persistenz für jeden Service betrachten •RDBMS Dantenbank Design muß das Objekt Model unterstützen •Anforderungen der benötigten Legacy Systeme beachten Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 246