code jvm

Werbung
Enterprise Computing
Prof. Dr.-Ing. Wilhelm G. Spruth
WS 2010/11
Teil 9
Web Application Server
HTTP
Servlets
Web Application Server
Java Ausprägungen
Es existieren unterschiedliche Asprägungen von Java, z.B. :
Java
Java Script
Java Applet
Java Servlet
Java Server Pages
Java Bean
Enterprise Java Bean (EJB)
Alle Ausprägungen von Java erzeugen
nach ihrer Compilierung Java Byte Code,
der auf einer JVM ausgeführt werden
kann.
Für Java Script trifft das nicht zu. Deshalb
ist ein Java Script Programm auch kein
Java Programm.
Java Script hat mit Java außer einer
ähnlichen Syntax nichts gemeinsam, trotz
des (irreführenden) Namens.
Emulator
Auf einem Rechner mit der Hardware-Architektur x (Host) kann ein Rechner mit der HardwareArchitektur y (Gast) emuliert werden.
Beispiele sind:
Hercules und FLEX-ES emulieren einen zSeries Rechner mit dem z/OS Betriebssystem auf einem
Intel/AMD Windows oder Linux Rechner.
Microsoft VirtualPC emuliert einen Intel/AMD Windows Rechner auf einem (älterem) Apple MAC
PowerPC Rechner.(Vorsicht, unter dem gleichen Namen gibt es ein weiteres aber unabhängiges
Microsoft Produkt, welches ähnlich wie VMWare arbeitet.
Bochs ist ein in C++ geschriebener Open Source Emulator, der die Intel/AMD Architektur auf vielen
anderen Plattformen emuliert.
Eine Java Virtual Machine wird heute fast immer durch eine Emulation auf einer Pentium, PowerPC
oder System z Plattform usw. implementiert. Im Gegensatz zu anderen Emulatoren ist der
Leistungsverlust bei der Emulation der JVM Architektur relativ klein, z.B. Faktor 3 im Vergleich zu
einem Faktor 15 bei der Emulation der System z Architektur auf einem Intel Processor.
Maschinensprache der Java Virtual Machine (JVM)
Parallele Ausführung
von Java Klassen in
der Form von Java
Threads
Java Virtual Machine
Betriebssystem
Im Zusammenhamg mit Java ist eine neue Hardware Prozessor Architektur entwickelt worden,
vergleichbar zur System z, PowerPC oder Pentium Architektur. Diese Architektur wird als Java Virtual
Machine (JVM) Architektur bezeichnet.
Wenn Java Quellcode für eine JVM kompiliert wird, entsteht Object Code für die JVM. Dieser Objekt
Code wird als Byte Code bezeichnet.
Ausführungen für Java in Hardware erfolgen auf speziellen Java-Prozessoren. Dies sind
Mikroprozessoren, die Java-Bytecode als Maschinensprache verwenden. Sie wurden jedoch nie in
größeren Stückzahlen gebaut. Statt dessen werden JVMs auf anderen Rechner Plattformen emuliert.
Die JVM ist ein Emulator, vergleichbar mit Hercules oder XEN.
Cobol, PL/1, C++
Java
Quellcode
Compiler
MaschinenCode
Java
Programmausführung
Quellcode
Compiler
Java
Byte Code
Interpreter
JIT
Interpreter
MaschinenCode
Cobol, PL/1 oder C++ Quell Code wird
durch einen optimising Compiler in
Object Code übersetzt, aus dem nach
dem Linking und Loading ausführbarer
Maschinencode entsteht.
Bei Java erzeugt der Compiler statt
dessen Plattform-unabhängigen Byte
Code, der anschließend in einer JVM
durch einen Interpreter oder just-intime Compiler ausgeführt wird.
Die JVM selbst ist plattformabhängig.
Sie ist typischerweise in C++
implementiert.
Optimizing Compiler erzeugen für die Ausführung besonders schnellen Maschinencode. Interpreter und Just in Time
Compiler (JIT) sind in der Regel deutlich langsamer.
Java Source Code
System z Object Code
System z Hardware
Byte Code
JVM
Unter System z ist die Ausführung sowohl als System zObject Code als auch als Byte Code möglich. In
der großen Mehrzahl der Fälle wird die Ausführung als Byte Code gewählt.
Browser
http Server
z.B. Apache
statische HTML Pages
Statische HTML Pages
z.B. Google
HTML Forms
In vielen Fällen ist es wünschendwert, beim Aufruf einer URL zusätzlich Daten an den Server zu
senden, die von einem dortigen Programm benutzt werden, um eine Antwort mit dynamischer
Information zu erzeugen.
HTML Forms sind ein einfache Werkzeuge, mit dem ein Benutzer Daten mit Hilfe des HTTP-Protokolls
an einen Server schicken kann.
Ein HTML-Form besteht aus einem Code-Block, der mit dem <FORM> Tag anfängt und dem </FORM>
Tag aufhört. Eine HTML-Seite kann mehrere Forms enthalten.
Der FORM Tag spezifiziert:
• Die zu benutzende HTTP-Methode. In den meisten Fällen ist dies POST; die Daten werden innerhalb
des Bodys der Nachricht übertragen.
• Die Action. Dies ist meistens die URL, es kann aber auch die Action mit ihrem Namen angegeben
werden.
• Der Typ der MIME-Enkodierung der Daten in der FORM. Der Default ist "application/x-www-formencoded".
HTML Forms
Beispiel Screen
Der Web Server hat soeben die
hier dargestellte HTML Seite
gesendet.
Nach Eingabe in die Felder
Username und Password,
sowie klick auf den Submit
Button wird eine Get oder Post
Nachricht mit den
eingegebenen Parametern an
den Web Server gesendet:
Die hier dargestellte Wiedergabe auf einer HTML Seite erwartet eine Eingabe seitens des Benutzers in
den hiefür vorgesehenen Feldern. Die Darstellung wird mit Hilfe eines Form Tags innerhalb des HTML
Codes programmiert. Der Code auf der folgenden Seite stellt dies dar.
Login to Secure Site
Username:
Password:
Submit
Clear
< FORM METHOD=POST
ACTION="http://abc.de/servlet/xyz.servlet" >
Username: <INPUT TYPE="TEXT" NAME="username"
SIZE="25"><BR>
Password: <INPUT TYPE="PASSWORD"
NAME="password" SIZE="25"><P>
<INPUT TYPE="SUBMIT" VALUE="Submit">
<INPUT TYPE="RESET" VALUE="Clear">
</FORM>
<HTML>
<HEAD><TITLE> Login </TITLE> </HEAD>
<BODY>
<H2>Login to Secure Site</H2>
Der FORM Tag spezifiziert:
< FORM METHOD=POST
ACTION="http://abc.de/servlet/xyz.servlet" >
Username: <INPUT TYPE="TEXT" NAME="username"
SIZE="25"><BR>
Password: <INPUT TYPE="PASSWORD"
NAME="password" SIZE="25"><P>
<INPUT TYPE="SUBMIT" VALUE="Submit">
<INPUT TYPE="RESET" VALUE="Clear">
</FORM>
• Die zu benutzende HTTPMethode. Hier ist dies POST; die
Daten werden innerhalb des
Bodys der Nachricht
übertragen.
• Die Action. Dies ist meistens die
URL, es kann aber auch die
Action mit ihrem Namen
angegeben werden.
• Der Typ der MIME-Enkodierung
der Daten in der FORM. Der
Default ist "application/x-wwwform-encoded".
</BODY> </HTML>
HTML Forms
HTTP
Servlets
Web Application Server
HTTP
HTML
WEB
Server
CGI oder
Servlet
Programm
(WEB) Application Server
SQL
Datenbank
Server
Browser
Dynamischer WEB Seiten Inhalt (1)
Alternativen:
• CGI
• Java Servlet.
Ausführung eines CGI Programms unter z/OS Unix System Services
Servlets
Ein Applet Tag , z.B.
<APPLET CODE="HelloApplet.class"></APPLET>
in einer HTML-Seite bewirkt das Herunterladen des Applet Byte Codes vom Server auf den
Klienten, wo der Code ausgeführt wird.
Ein Servlet Tag , z.B.
<SERVLET CODE="HelloServlet"></SERVLET>
in einer HTML-Seite wird auf dem Server ausgeführt.
HTML
WEB
Browser
WEB
Browser
JDBC
WEB
Server
Java
Servlet
SQL
WEB
Browser
(WEB) Application Server
Datenbank
Server
the HTML code
<FORM METHOD=GET ACTION="/servlet/HelloWorld">
will always invoke a servlet named HelloWorld -- provided, of course, that
(1) the Web server being used supports servlets and
(2) a "Hello World" a servlet actually exists in the directory in which servlets are stored
on your Web server.
Servlet Container
Servlets laufen in einer Servlet-spezifischen Laufzeitumgebung, die auch als Container
oder Servlet Engine bezeichnet wird. Diese verbessert u.a. die Servlet-Ausführungszeit und
stellen dem Programmierer vorgefertigte Strukturen zur Verfügung.
Servlet Container haben keine Transactions-, Persistence- und Sicherheitseigenschaften.
Ein Servlet Container ist ein Programm, das Requests für Servlets und Java Server Pages
(JSP) behandelt. Der Servlet Container ist verantwortlich für:
•
•
•
•
Erstellung von Servlet-Instanzen,
Initialisierung von Servlets,
Dispatching von Requests,
Verwaltung des Servlet-Kontextes für die Nutzung durch die Web-Anwendungen.
Eine Java Klasse erbt mit Hilfe von „extends HttpServlet“ die Servlet Eigenschaften.
public
class HalloWeltServlet extends HttpServlet
{
public final static String message = "<html>\n" +
"<head><title>Hallo Welt</title></head>\n" +
"<body>\n" +
"<h1>Hallo Welt</h1>\n" +
"</body></html>\n";
public void init()
{
System.out.println("In HalloWeltServlet init");
}
public void destroy()
{
System.out.println("In HalloWeltServlet destroy");
}
Beispiel:
HalloWeltServlet.java
Die Methode service ist für die
Bearbeitung des Servlet
Aufrufs zuständig.
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException
{
PrintWriter out = res.getWriter();
out.println(message);
}
}
Java Server Pages (JSP)
Java Server Pages sind in der Java Programmiersprache geschrieben. Eine JSP ist in
Wirklichkeit eine andere Darstellungsform eines Servlets.
JSPs benutzen XML-artige Tags und Scriplets um die Logik zu kapseln, die den Inhalt der
Seite generiert.
Alternativ kann die Anwendungslogik woanders liegen, und die Java Server Page greift
hierauf mit den Tags und Scriplets zu.
Dies ermöglicht eine Trennung der Seiten-Logik vom Seitenentwurf und der
Seitenwiedergabe.
Einfache Java Server Page (1)
Java Server Pages sind im Aufbau vergleichbar mit HTML-Dokumenten. Sie bestehen
jedoch aus zwei Teilen, einem HTML – Text sowie beliebig vielen, darin eingebetteten
Anweisungen an den JSP – Server .
Den folgenden Text in einer Datei mit der .jsp extension im JSP directory speichern und mit
einem Browser ansehen:
<html>
<head>
<title>JSP Example </title>
</head>
<body>
Hello! The time is now <%= new java.util.Date() %>
</body> </html>
Die Zeichenfolgen <%= und %> schließen Java Epressions ein. Diese werden zur Run
Time ausgewertet. Bei jedem Reload der HTML Seite in den Browser wird die gültige Zeit
wiedergegeben.Normalerweise enthält ein JSP Programm eine komplexere
Präsentationslogik, z.V. in der Form eines Scriplets.
http://www.jsptut.com/
JSP Scriptlet
Eine JSP Scriptlet hat folgende Form:
<% Java Code %>
Dies ergibt die Möglichkeit, kompliziertere Ausdrücke auszuwerten und mit out.println an
den Outstream zu übergeben. Diese Variante ermöglicht arbiträren Code einzufügen, wie
zum Beispiel Anbindung an Datenbanken und andere aufwendigere Zugriffe. Alle in Java
verwendbaren Konstrukte können hier verwendet werden.
Beispiel:
<%
String queryData = request.getQueryString();
Out.println(“Attached GET Data: “ + queryData);
%>
Eine normale URL ruft eine HTML Seite auf. Beispiel
www.xxx.yyy/index.html
Statt dessen ist es möglich, ein Servlet direkt aufzurufen
www.xxx.yyy/Servlet
oder auch eine Java Server Page
www.xxx.yyy/jsp
Web Server
Servlet Container
Browser
Interaktion Servlet JSP
Request
Servlet
Call Page
In der Praxis ist es eher selten,
dass eine JSP direkt aufgerufen
wird.
Response
Java
Server Page
Web Application
Server
In der Regel wird ein Servlet
aufgerufen, welches wiederum
eine JSP aufruft.
HTTP
Servlets
Web Application Server
Web Application Server
Plattform für die Ausführung von
Java Servlets, Java Server Pages und EJBs
BEA Web Logic
IBM WebSphere
verfügbar auf allen Plattformen
Windows, Unix, Linux, z/OS
Deutlich mehr als die Hälfte aller in der Wirtschaft eingesetzten Web Application Server.
Verwenden die Firmen-eigenen Transaktionsmonitore: Tuxedo, CICS
Der SAP Netweaver Web Application Server wird in der Regel in Verbindung mit SAP
Software Komponenten eingesetzt.
Microsoft Dotnet Alternative
Während Web Application Server ursprünglich nur Java Code verarbeiten konnten, werden
heute alle gängigen Programmiersprachen unterstützt, spezifisch also auch Cobol, PL/1
und C++ .
Web Application Server
Open Source Web Application Server sind:
• Tomcat (nur Servlets)
• Geronimo der Apache Foundation
Pseudo-Open Source :
• JBOSS
JBOSS und Geronimo liegen bezüglich ihrer Funktionalität weit hinter WebLogik,
WebSpere oder Netweaver zurück.
Presentation
Business
Logik
DatenbankProzeß
z.B. Oracle,
DB2
AnwendungsProzess
PC
Registrierkasse
Geldausgabeautomat
Web Application Server
Business Logic (Anwendungslogik) verarbeitet die Eingabedaten des Endbenutzers und erzeugt
Ausgabedaten für den Endbenutzer, z.B. in der Form einer wenig strukturierten Zeichenkette (oft als
„Unit Record“ bezeichnet.
Präsentationslogik ist der Teil, in dem die Ergebnisse der Berechnungen so aufgearbeitet werden, daß
sie dem Benutzer in einer ansprechenden Art auf dem Bildschirm dargestellt werden können.
Präsentations- Logik formt die rohen Ausgabedaten in eine für den Endbenutzer gefällige Form um,
z.B. in Form einer grafischen Darstellung.
Java Beans
Unter Java Beans versteht man kleine Java-Programme (Klassen) mit festgelegten Konventionen für
die Schnittstellen, die eine Wiederverwendung in mehreren Anwendungen (Applikationen, Servlets und
Applets) ermöglichen, ähnlich wie bei Unterprogramm-Bibliotheken in anderen Programmiersprachen.
Dies ist vor allem im Hinblick auf das Software-Engineering von komplexen Programmsystemen
interessant.
Dafür gibt es ein eigenes Beans Development Kit BDK, das man zusätzlich zum JDK installieren kann,
und ein Package java.beans, das ab Version 1.1 im JDK enthalten ist,
JavaBeans sind ein Objektorientiertes Java Komponenten Modell, JavaBeans sind Java binary parts.
Sie werden häufig für visuelle Komponenten eingesetzt (etwa Buttons und Scrollbalken)
Hauptmerkmale der Java Beans sind:
•
•
•
•
•
Properties (Eigenschaften, z.B. get und set)
Methoden und
Events (Ereignisse)
Namens Konventionen
Introspection (BeanInfo Klasse)
Java Beans Komponenten Modell
Der Java Beans Komponenten Modell Teil des JDK Lieferumfangs unterstützt:
•
•
•
•
•
•
•
•
•
Sicherheit (benutzt den Java Security Manager)
Versionsmanagement
Life-Cycle Management
Event Notification,
Configuration und Property management
Scripting
Meta-Daten und Introspection
Persistenz (über Serialisierung)
Benutzbarkeit (die „BeanBox“ des JDK ist ein Prototyp einer grafischen Umgebung für das
Zusammensetzen von Beans)
• Eigeninstallation(über Java Archiv Files)
Für unternehmensweite Anwendungen (Enterprise Applications) fehlen jedoch
Schlüsseleigenschaften, z.B Transaktionsdienste, Namensdienste und Sicherheitsdienste. Werden
JavaBeans hiermit angereichert, spricht man von Enterprise JavaBeans.
Browser
HTML
Page
(Form )
Web Application Server
Servlet
call
HTML
Page
(Ergebnis)
JSP
prepare Bean
Bean
DB2
access Bean
Nutzung von Java Beans
Ein Servlet ist ein Java Programm, das Bildschirm Output in der Form einer HTML Datei produziert.
Eine JAVAServerPage ist eine HTML Seite mit zusätzlichen JSP Tags.
Wird eine JSP Seite aufgerufen, so kompiliert sie ein JSP Übersetzer in ein Servlet.
In der Praxis: Servlets und JSP werden von verschiedenen Leuten erstellt (Model-View-Controller
Ansatz). Eine JSP ist zwar eine vollwertige Java Komponente, aber der Java Code Anteil innerhalb der
JSP wird in der Regel auf ein Minimum reduziert.
Es existieren (wie für HTML Seiten) spezielle Werkzeuge für das Erstellen von JSP´s, die das Handcoding von HTML Statements automatisieren.
Architektur einer JSP
Web Anwendung
Erläuterung siehe unten
Model - View - Controller Ansatz
1. HTML page: static or dynamic HTML page, created from a previous step, contains one or multiple forms that invoke a servlet for
processing of the next interaction.
2. Servlet gets control from the Application Server to perform validation and control of flow; sets up and calls command beans that
perform the business logic.
3. Command beans control the processing of the business logic; logic may be imbedded in the command bean, or it can be delegated to
back-end or enterprise systems, such as relational databases, transactions systems (CICS, MQSeries, IMS, and so forth); command bean
may perform one specific function or it may contain many methods, each for a specific task (task wrappers). Command beans invoke
database and transaction systems using „connectors“.
4. Results of command beans (or back-end systems) processing are stored in data beans. Data beans could contain an SQL result or a
CICS communication area.
5. View beans provide the contract between the output producing JSPs and the data beans that contain the dynamic data to be displayed
in the output; servlet initializes the view beans and registers them with the request block so that the JSPs can find them.
6. Servlet calls a JSP for output processing and formatting depending on the results of the command beans; JSPs generate the output
for the browser.
7. JSP use tags to declare the view beans and get access to all the dynamic data that must be displayed in the output.
8. View beans contain one or multiple data beans and provides tailored methods so that the JSP has access to the data stored in the data
beans; data beans may not provide the necessary methods for a JSP to access the data.
9. JSP assembles the output and sends it back to the browser as an HTML page with dynamic data; in many cases, that output again
contains form(s) to enable the user to continue the dialog with the application.
Servlet is the controller
Command beans provide the model
JSP is the view
Herunterladen