1 / 105

Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details. Entwicklung von Java. 1990: Team bei Sun Microsystems (James Gosling) entwickelt neu OO-Sprache, insbesondere für Embedded Systems 1994: Erkenntnis, dass Sprache für Web-Anwendungen geeignet ist Kompakter Code

wyanet
Download Presentation

Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rolle von JavaVerteilte Verarbeitung mit JavaJ2EE ÜbersichtJ2EE Details

  2. Entwicklung von Java • 1990: Team bei Sun Microsystems (James Gosling) entwickelt neu OO-Sprache, 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)

  3. 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)

  4. Java Entwicklung und Ausführung Java SourceCodes Class Loader Java Compiler ByteCode Verifier Laden vom Filesystem oder über das Netz Just in Time Compiler Java ByteCodes Java Virtual Machine Java Developers Kit IDE´s Binary Code IDE: Integrated Development Environment z.B. JBuilder von Borland Java Platform

  5. 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

  6. Java in .NET (JUMP) Ca. 20 Sprachen Class Loader Visual Baisc Visual J# .NET C# Compiler Compiler Compiler Laden vom Filesystem oder über das Netz Common Language Runtime CLR JUMP Converter MSIL Java ByteCodes Visual Studio .NET .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

  7. Verteilte Verarbeitung mit Java

  8. 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

  9. 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 CORBA/IDL sorgt für Mapping der Interfaces

  10. 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

  11. 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

  12. IIOP CORBA über Internet Generiert aus Interface beschrieben in IDL Generiert aus Interface beschrieben in IDL Client Server Client Stub Server Skeleton ORB-1 ORB-2 • Client und Server können • in beliebigen • auch unterschiedlichen • Sprachen geschrieben sein CORBA/IDL sorgt für Mapping der Interfaces IIOP – Internet Inter-ORB Protocol

  13. 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

  14. 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

  15. Verteilte Verarbeitung mit Java (Beispiel) Web Browser Applet Lädt Applet HTTP RMI Remote Method Invocation Web Server EJB File System Application Server DB

  16. 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

  17. 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

  18. J2SE J2SE IIOP RMI über IIOP Server (Java) Client (Java) Server Skeleton Client Stub • Wie Standard RMI • Benutzung des IIOP Protokolls • Damit Verteilung über das Internet

  19. Verteilte Verarbeitung mit RMI über IIOP (Beispiel) Web Browser Internet Inter-ORB Protocol Applet Lädt Applet HTTP RMI über IIOP Web Server Nur Java zu Java EJB File System Application Server DB

  20. J2SE IIOP Kooperation RMI und CORBA (Java Client) Generiert aus Interface beschrieben in IDL Client (Java) Server (bel. Sprache) Client Stub Server Skeleton 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

  21. Verteilte Verarbeitung mit CORBA (Beispiel) Web Browser Applet Lädt Applet HTTP • IIOP – Kommunikationzwischen J2SE und ORBs verschiedener Hersteller • Einbindung unterschiedl.Sprachen möglich IIOP Web Server File System Object Request Broker Java C++ Andere Sprachen DB

  22. ORB IIOP Kooperation RMI und CORBA (Java Server) Generiert aus Interface beschrieben in IDL Client (bel. Sprache) Server (Java) Client Stub Server Skeleton J2SE • Server ist in Java und Client in beliebiger Sprache (von CORBA unterstützt) geschrieben • Interfacebeschreibung in IDL wird aus Interface in Java generiertJ2SE kommuniziert über IIOP mit beliebigem ORB • Skeleton wird von J2SE (aus Java) und Stub von ORB (aus IDL) generiert

  23. 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

  24. Java 2 Platform, Enterprise Edition; Übersicht

  25. 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

  26. Database ERP Systems Legacy Systems Application Component J2EE Stufen Architektur Tiers fat Client Web Browser Client Container Client HTML Applet Appl. Client Web Container J2EE Platform Web JSP Servlets J2EE Server EJB Container Business Entity EJB´s Session EJB´s Message-Driven EJB´s Enterprise Information System J2EE Container J2EE Platform

  27. 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

  28. 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

  29. 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)

  30. Firewall Portal Server Verzeichnis Schnittstellen Benutzer-Schnittstellen Komponenten Business Komponenten Integrations Services Datenbank-Zugriffe Referenzarchitektur HTTP LAN Verzeichnis Services Geschäfts Partner Sicherheit Messaging Services Content Management Prozess-Management Transaktions-Management ERP Systeme Alt-Anwend. Datenbanken Datenbanken

  31. Firewall Referenzarchitektur mit J2EE Komponenten Blaue Schrift in gestreiften Boxen kennzeichnen Komponenten der J2EE Definition HTTP LAN Portal Server Verzeichnis Services JNDI JSP Servlet Geschäfts Partner JAAS JMS - JavaMail Content Management Prozess-Management JTA Enterprise JavaBeans JAXP ERP Systeme JCA WebServices JDBC API Alt-Anwend. Datenbanken Datenbanken

  32. Java 2 Platform, Enterprise EditionDetails Christian Menk Software Architektur Berater Softlab GmbH

  33. 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)

  34. 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 DB-Verbindung 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

  35. Java Servlet API 2 HTTP Server Java VM HTTPServlet doGet(HttpServletRequest request, HttpServletResponse response); doPost(HttpServletRequest request, HttpServletResponse response); HTTPServlet doGet(HttpServletRequest request, HttpServletResponse response); doPost(HttpServletRequest request, HttpServletResponse response); HTTPServlet doGet(HttpServletRequest request, HttpServletResponse response); doPost(HttpServletRequest request, HttpServletResponse response);

  36. Java Servlet API 3 HTTP Server Java VM request HTTPServlet request HTTPServlet request HTTPServlet request HTTPServlet thread CGI Process request CGI Process request request request CGI Process CGI Process

  37. 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); } ...

  38. 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)

  39. Java Server Pages (JSP) 2 HTTP Server 5:response Java VM + JSP Engine 1:request 1 HTTPServlet 6:request 2-n 5:response 4:Kompiliert und lädt 2:lädt 3:erzeugt JSP Seiten (HTML+JAVA) Servlet Source

  40. 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>

  41. 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 Smart Card Biometric

  42. 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"; • }

  43. 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-Javabeans-Komponenten-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.

  44. Java Naming and Directory Interface (JNDI) 2 LDAP Directory EJB Store Role src EJB Home A User a.java EJB Home B User b.java EJB Home C Role doc User Tut.txt JNDI Lookup Lookup Lookup Java Application EJB Servlet

  45. 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.

  46. 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 5: call OBJ Java Object Stub 7: result to Stub

  47. 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.

  48. 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.

  49. Enterprise Java Beans Prinzip JNDI...MyBeanHome... 1 Client...lookUpcreate or find on EJB Home OBJcast to EJB remote OBJinvoke Method... EJB Container 3a 2 EJB OBJ 3c 3b 6 Remote Stub 5 Server Skeleton 4 7 9 8

  50. 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){ }

More Related