4 EJBs & J2EE: Schnelleinstieg *



Ähnliche Dokumente
Der lokale und verteilte Fall

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Übung: Verwendung von Java-Threads

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Installation der SAS Foundation Software auf Windows

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Lizenzen auschecken. Was ist zu tun?

VB.net Programmierung und Beispielprogramm für GSV

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Beschreibung des MAP-Tools

Eine Einführung in die Installation und Nutzung von cygwin

Einrichten der Outlook-Synchronisation

Step by Step Webserver unter Windows Server von Christian Bartl

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

OP-LOG

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Objektorientierte Programmierung. Kapitel 12: Interfaces

Windows 8 Lizenzierung in Szenarien

Elexis-BlueEvidence-Connector

S.M. Hartmann GmbH IT Solutions

Adminer: Installationsanleitung

Programmieren in Java

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

OLXTeamOutlook 1.5 für Outlook 2003, 2002/XP, 2000 und 97/98

Anleitung über den Umgang mit Schildern

DOKUMENTATION VOGELZUCHT 2015 PLUS

4D Server v12 64-bit Version BETA VERSION

Internet Explorer Version 6

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Lizenzierung von System Center 2012

Lizenzierung von Windows Server 2012

Task: Nmap Skripte ausführen

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

GameGrid mit BlueJ Seite 1

WinVetpro im Betriebsmodus Laptop

Arbeiten mit UMLed und Delphi

Planung für Organisation und Technik

WebService in Java SE und EE

CADEMIA: Einrichtung Ihres Computers unter Windows

Computeria Solothurn

Multimedia im Netz. Wintersemester 2011/12. Übung 10. Betreuer: Verantwortlicher Professor: Sebastian Löhmann. Prof. Dr.

Live Update (Auto Update)

Software WISO Hausverwalter 2014 Datenübernahme aus WISO Mein Geld Version / Datum V 1.0 /

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Produktschulung WinDachJournal

Anwenderleitfaden Citrix. Stand Februar 2008

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Das Einzelplatz-Versionsupdate unter Version Bp810

Support-Tipp Mai Release Management in Altium Designer

PowerWeiss Synchronisation

Lokale Installation von DotNetNuke 4 ohne IIS

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

Webbasierte Installation des Cisco AnyConnect VPN-Client 3.1 unter Linux

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

Anwenderdokumentation PersoSim

Sicherung persönlicher Daten

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Installation und Inbetriebnahme von Microsoft Visual C Express

ObjectBridge Java Edition

Tutorial: Wie kann ich Dokumente verwalten?

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

ICS-Addin. Benutzerhandbuch. Version: 1.0

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Anleitung zur Webservice Entwicklung unter Eclipse

Reporting Services und SharePoint 2010 Teil 1

Zeiterfassung mit Aeonos. Bedienungsanleitung für die App

Persönliches Adressbuch

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Java: Vererbung. Teil 3: super()

Objektorientierte Programmierung

Einfügen von Bildern innerhalb eines Beitrages

Kommunikations-Management

Stand: Dokumentenverwaltung Modulbeschreibung

E-Cinema Central. VPN-Client Installation

Lizenzierung von SharePoint Server 2013

Collaboration Manager

IBM SPSS Data Access Pack Installationsanweisung für Windows

Wie richten Sie Ihr Web Paket bei Netpage24 ein

STRATO Mail Einrichtung Mozilla Thunderbird

LabTech RMM. Integration von Teamviewer. Vertraulich nur für den internen Gebrauch

Installation einer C++ Entwicklungsumgebung unter Windows --- TDM-GCC und Eclipse installieren

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Synchronisations- Assistent

Transkript:

19 4 EJBs & J2EE: Schnelleinstieg * Auch ohne bereits umfassende Kenntnisse über den Aufbau verteilter Anwendungen und die Feinheiten der J2EE-Architektur zu besitzen, soll an dieser Stelle ein erster praktischer Zugang zur Entwicklung von J2EE-Modulen, den Enterprise JavaBeans (EJB), erprobt werden. Der»Lebensraum«von EJBs ist ein J2EE-Applikationsserver. Er organisiert den Zugang zu den EJB-Modulen durch Anwendungen und Datenquellen und verwaltet ihren Lebenszyklus, lädt sie also bei Bedarf in den Arbeitsspeicher des Serversystems, speichert sie zwischen oder beendet ihre Nutzung. Wenn Sie alle Beispiele praktisch nachvollziehen wollen, dann müssen Sie alle notwendigen Software-Werkzeuge auf Ihrem Computersystem installiert haben. Ist dies noch nicht der Fall, dann gehen Sie entsprechend dem folgenden Wissensbaustein vor:!»vor dem Start: Werkzeuge«(S. 17) Kenntnisse für den Einstieg Was müssen Sie für den Einstieg wissen? Zunächst einige Erläuterungen zur verwendeten Terminologie. Bei verteilten Anwendungen im Rahmen der J2EE-Spezifikation werden in den Beispielen dieses Buches zwei Arten von Client-Anwendungen verwendet, um serverseitig bereitgestellte Programme aufzurufen: Java-Anwendungen, die über die Grenzen von JVMs hinweg EJBs auf einem Server ausführen und Web-Anwendungen, die über einen Web-Browser serverseitigen Java-Code ausführen. In einem solchen Fall wird z.b. über die Kombination JSP/Servlet und JavaBean auf EJBs zugegriffen. Ein Eclipse-J2EE-Projekt fasst die verschiedenen, auf einem Server bereitgestellten Teile einer Java Enterprise-Anwendung als Projektmodule zusammen. Dabei kommen Web- Eclipse-Projekt Gruppierung

20 4 Schnelleinstieg * Projektmodule, EJB-Projektmodule und Enterprise-Projektmodule zum Einsatz. EJB-Modul Eine Enterprise JavaBean besteht aus einer Bean-Klasse, in der der Programmierer die Geschäftslogik implementiert, und mehreren Schnittstellen und Hilfsklassen. Die Bean- Klasse wird im Folgenden als Implementierungsklasse bezeichnet, während für den Zusammenhang aller notwendigen Klassen einer EJB der Begriff EJB-Modul verwendet wird. Die Schnittstellen eines EJB-Moduls werden benötigt, um die Implementierungsklasse in den Organisationszusammenhang eines J2EE-Applikationsservers einzubetten. Der Applikationsserver stellt bei Bedarf Systemressourcen wie Datenbank-Konnektoren oder einen Authentifizierungskontext zur Verfügung. Der Gesamtzusammenhang von Client-Anwendungen, EJB-Modulen und bereitgestellten Systemressourcen wird hier als J2EE-Anwendung bezeichnet. Das Lomboz-Werkzeug ein Plugin der Eclipse-Entwicklungsumgebung unterstützt den J2EE-Entwickler nun gleich auf mehrere Arten. Mithilfe von Assistenten-Programmen (Wizards) kann zunächst der Rumpf der Implementierungsklasse des EJB-Moduls erzeugt werden. Der Programmierer kann diesen Rumpf durch eigene Attribute und Methoden der Geschäftslogik beliebig erweitern. Nach Abschluss der Programmierung unterstützt das Lomboz-Werkzeug dann durch das automatische Erstellen der notwendigen Schnittstellen und Hilfsklassen und bei der Zusammenstellung der für das Deployment des EJB-Moduls an den J2EE-Applikationsserver erforderlichen Deployment-Informationen (deployment descriptors). Beispiel ServerZeit- Holen Als einführendes Beispiel soll das Lesen der Zeit auf dem Server und danach die Anzeige der Zeit auf dem Client verwendet werden. Die Kombination eines UML-Verteilungsdiagramms mit einer Darstellung der verwendeten Java-Klassen des Beispiel- Gruppierung

4 Schnelleinstieg * 21 projekts zeigt die Ausgangsfragestellung (Abb. 4.0-1) der Beispielanwendung ServerZeitHolen. Java-Client:JVM 1 ServerZeitHolen -getcontext() -gethome() +holeserverzeit()? JBoss Applikationsserver:JVM 2 EJB-Container ServerInfoBean -zeitdatum -holeserverzeit() -setzeitdatum() +getzeitdatum() Legende: Methodenaufruf/Attributabfrage Abb. 4.0-1: Beispielanwendung ServerZeitHolen. Wie wird ein EJB-Modul durch eine Client-Anwendung aufgerufen? Es handelt sich bei der Anwendung ServerZeitHolen um eine Java-Client-Anwendung, die über die Grenzen der Client-JVM (JVM1) auf Methoden der EJB ServerInfoBean zugreift und den Wert des Attributs zeitdatum zurückliefert (JVM2). An diesem Beispiel sollen die grundlegenden Abläufe beim entfernten Zugriff auf eine EJB gezeigt werden, insbesondere soll geklärt werden, welche Rolle der EJB-Container des Applikationsservers dabei spielt. Darüber hinaus soll der Entwicklungsprozess von Client-Anwendung und EJB in Eclipse genauer betrachtet werden. Wie funktioniert nun das Management des EJB-Containers in Bezug auf das EJB-Modul? Die gepunkteten Pfeillinien in Abb. 4.0-2 verdeutlichen die Methodenaufrufe bzw. Attributsabfragen des EJB-Moduls durch die Java-Anwendung. Hierbei ist insbesondere die Vermittlerposition des EJB-Containers zwischen Java-Anwendung und EJB-Modul über die verwendeten Schnittstellen zu beachten. Gruppierung

22 4 Schnelleinstieg * Java-Client:JVM 1 JBoss Applikationsserver:JVM 2 ServerZeitHolen -getcontext() -gethome() +holeserverzeit() Management (3) ServerInfoBean (2) Schnittstelle ServerInfo +getzeitdatum() «extend» Schnittstelle (1) Schnittstelle ServerinfoHome EJB-Container ServerInfoSession SessionBean Legende: Management des EJB-Containers Abb. 4.0-2: Überblick über Nutzung der J2EE-Anwendung ServerZeitHolen/ServerInfo (EJB-Modul). Zeitinfo abrufen (1) (2) (3) Die Java-Anwendung führt nacheinander drei Operationen aus: Die Operation getcontext() fragt über die Schnittstelle ServerInfoHome den Computernamen und den Namen des EJB- Moduls ab und beauftragt den EJB-Container zur Bereitstellung des EJB-Moduls für die Anwendung. Nachfolgend ermöglicht die Operation gethome() der Anwendung Zugriff auf die Schnittstelle ServerInfo. Schließlich führt der EJB-Container vermittelt über diese Schnittstelle die Geschäftsmethoden hier die Operation getzeitdatum() der Implementierungsklasse ServerInfoBean des EJB-Moduls aus. Der Aufrufmechanismus von EJB-Modulen wird in»anwendung ruft EJB«(S. 32) näher erläutert. Das Deployment desfertigenejb-modulsgeschieht wie auch sonst bei Java üblich durch Java-Archive. Bei J2EE-Anwendungen werden die einzelnen Komponenten allerdings getrennt verpackt, die Java-Klassen in EJB-Archiven (JAR), mögliche Web-Anwendungen in Webarchiven Gruppierung

4 Schnelleinstieg * 23 (WAR) und alles zusammen dann in einem Enterprise-Archiv (EAR). Damit der Applikationsserver mit den Paketen, die an ihn ausgeliefert werden, etwas anfangen kann, müssen Deployment-Informationen an ihn mitgegeben werden. Diese»Versandpapiere«werden grundsätzlich im Datenformat XML abgespeichert.»versandpapiere«anwender Java-Client:JVM 1 JBoss Applikationsserver:JVM 2 ServerZeitHolen ServerInfo:EJB-Modul Programm ausführen Deployment EJB-Modul Entwickler Entwicklungscomputer ServerZeitHolen Client-Anwendung erstellen «component» Eclipse IDE: Lomboz-Plugin Autom. Erstellen der EJB-Klassen ServerInfoSession ServerInfo ServerInfoHome Deployment Descriptors ejb-jar.xml jboss.xml Klassenrumpf erstellen ServerInfoBean Abb. 4.0-3: Projektentwicklung und Deployment mit der Eclipse-IDE. Auch diese Aufgaben übernimmt das Entwicklungswerkzeug Lomboz in Eclipse (siehe Abb. 4.0-3). Sie werden die verschiedenen Deployment-Dateien im Verlaufe des Buchs näher kennenlernen, einige davon auch selbst erstellen. Für den Einstieg sind tiefere Kenntnisse darüber aber noch nicht erforderlich. Um ein lauffähiges EJB-Modul zur Ausführung ihrer Programmsequenzen zu bewegen, benötigen Sie jetzt noch eine Client-Anwendung, die es über den J2EE-Applikationsserver (EJB-Container) anspricht. Gruppierung

24 4 Schnelleinstieg * Fürs erste kann eine einfache Java-Anwendung ohne umfangreiche Benutzungsoberfläche dazu verwendet werden. Später lernen Sie zusätzliche andere, Web-basierte Anwendungen kennen. Der Schnelleinstieg in der Übersicht Auch für den Schnelleinstieg, wie für die Arbeit mit verschiedenen Entwicklungswerkzeugen im Allgemeinen, ist eine gute Systematik wichtig. Lernen Sie Schritt für Schritt die grundlegenden Funktionen des Lomboz-Werkzeugs bei der Erarbeitung eines ersten J2EE-Projekts kennen. Die Wissensbausteine des Schnelleinstiegs behandeln die folgenden Themen:»Das erste J2EE-Projekt«(S. 25)»Anwendung ruft EJB«(S. 32)»Die erste EJB-Methode«(S. 38) Glossar deployment (deployment) bezeichnet die Auslieferung von Ergebnissen der Softwareentwicklung an eine installierende Serveranwendung. Bei der Entwicklung von Enterprise-Anwendungen werden aus den Entwicklungsergebnissen verschiedene Archive erzeugt, denen Installationsund Nutzungsanweisungen beigefügt sind. Diese Anweisungen werdeninxml-schematagefasstund in XML-Dateien abgelegt. Sie werden deployment descriptors, also als Auslieferungs- und Installations-Beschreibungen bezeichnet. deployment descriptor (deployment descriptor) sind Dateinen mit Installations- und Nutzungsanweisungen für Serveranwendungen. Es handelt sich um XML-Dateien, die Informationen und Installationsanweisungen für Serveranwendungen enthalten, die diese Anwendungen für eine Nutzung durch Anwender bereitstellen sollen. Syn.: Auslieferungs- und Installations-Beschreibung XML (XML; extensible Markup Language) 1 Universell einsetzbare Sprache zum Austausch strukturierter Informationen. Basiert wie die Standard Generalized Markup Language (SGML) auf der Trennung von Inhalt und Struktur. 2 Eine Sprache (oder Meta-Sprache) zur Beschreibung der inhaltlichen Struktur von Dokumenten. XML ist ein W3C-Standard und in der Industrie inzwischen weit verbreitet.

4.1 Das erste J2EE-Projekt * 25 4.1 Schnelleinstieg: Das erste J2EE- Projekt * Die Beispielanwendung ErstesProjekt zeigt den strukturellen Aufbau eines einfachen J2EE-Projekts. Die Beispiel-EJB ist gekennzeichnet durch Kapselung und Einbettung in den Organisationszusammenhang des EJB- Containers des JBoss-Applikationsservers, der durch lokale oder entfernte Methodenaufrufe angesprochen werden kann. Beispiel-EJB: Zeitauskunft Um den Einstieg in die Arbeit mit J2EE-Anwendungen zu erleichtern, sollen anhand eines vorgefertigten kleinen Beispielprojektes die Grundstrukturen von EJB-Programmen gezeigt werden. Damit erhalten Sie eine stabile Basis für Ihre ersten J2EE-Schritte und können das Projekt später selbst weiter ausbauen. Es handelt sich dabei um eine einfache Java-Anwendung, die über eine EJB eine Zeitauskunft (Serverzeit) abruft und auf der Systemkonsole anzeigt. Neben der Erläuterung der am Projekt beteiligten Komponenten geht es hier exemplarisch auch um die Arbeitsschritte von der Entwicklung einer Anwendung über die Auslieferung bis zur Lauffähigkeit. Als Applikationsserver wird der zuvor ausgewählte und eingerichtete JBoss-Server verwendet. Laden Sie das Beispielprojekt ErstesProjekt wie in dem kostenlosen e-learning-kurs zu diesem Buch beschrieben auf Ihr Computersystem herunter und importieren Sie es in Ihre Eclipse-Arbeitsumgebung (workspace). Beispielprojekt Verschaffen Sie sich einen ersten Überblick über das Beispielprojekt. Im Ordner ErstesProjekt/src finden Sie den Quellcode der EJB und der Java-Anwendung. Bestandteile des Beispielprojekts Die Anwendung besteht aus einem EJB-Modul ServerInfo und einer Java-Anwendung, die diese EJB über den Applikations-

26 4 Schnelleinstieg * server aufruft. In dem modifizierten Klassendiagramm in Abb. 4.1-1 wird der detaillierte Aufbau des EJB-Moduls gezeigt. EJB-Container EJBHome ServerInfo «extend» «extend» -holeserverzeit() +getzeitdatum(...) EJBObject ServerInfoHome +COMP_NAME +JNDI_NAME +create() ServerInfoBean -zeitdatum -holeserverzeit() -setzeitdatum(...) +getzeitdatum() «extend» ServerInfoSession +ejbcreate() +ejbremove() +setsessioncontext(...) +ejbactivate() +ejbpassivate() SessionBean Legende: Management des EJB-Containers Methodenaufruf/Attributabfrage Abb. 4.1-1: Modifiziertes Klassendiagramm des EJB-Moduls ServerInfo unter der Verwaltung des EJB-Containers. Beispiel ServerInfoBean Die Implementierungsklasse ServerInfoBean des EJB-Moduls ist kurz und übersichtlich. Sie implementiert die Schnittstelle SessionBean und definiert das Attribut zeitdatum, die Methode holeserverzeit() sowie die get- und set-methoden für das Attribut zeitdatum. package com.erstesprojekt.ejb; import javax.ejb.sessionbean; import java.text.simpledateformat; import java.util.date; // (durch Lomboz generierte EJB) /** * @ejb.bean name="serverinfo" * jndi-name="serverinfobean" * type="stateless" * **/

4.1 Das erste J2EE-Projekt * 27 public abstract class ServerInfoBean implements SessionBean { // Attribut initialisieren private String zeitdatum = ""; // Datum und Zeit vom Server holen und formatieren // Rueckgabe des Datums als Zeichenkette // im Format: JJJJ-MM-TT SS:MM private void holeserverzeit() { Date now = new Date(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-mm-dd HH:mm" ); setzeitdatum(formatter.format(now)); } // get zeitdatum // (Methode mit Lomboz erstellt) /** * @ejb.interface-method * view-type="both" **/ public String getzeitdatum() { holeserverzeit(); return zeitdatum; } } // set zeitdatum private void setzeitdatum(string zd) { zeitdatum = zd; } Die Aufgabe, die in der Methode getzeitdatum() bearbeitet wird, ist das Erstellen und Formatieren einer Zeichenkette mit dem aktuellem Datum und der Zeit über die Methode holeserverzeit(). Das Attribut zeitdatum ist private deklariert und wird über eine öffentliche get-methode angesprochen. Die zugehörige set-methode wie auch die Methode holeserverzeit() werden dagegen nur innerhalb der Implementierungsklasse verwendet. Kapselung Sie finden in den Kommentarzeilen innerhalb der Klasse einige Anweisungen, die elementar für das automatische Ge-

28 4 Schnelleinstieg * nerieren der EJB-Klassen durch das Lomboz-Werkzeug sind. Diese Anweisungen werden mit @ejb.bean bzw. @ejb.interface eingeleitet. Danach folgen meist verschiedene Parameter wie name oder type. Was es mit diesen Anweisungen genau auf sich hat, wird an späterer Stelle erläutert (siehe dazu»scripting«(s. 82)). Die Anweisungen werden bei Erstellen von EJB-Klassen und Methoden durch das Lomboz-Werkzeug automatisch erzeugt. Aufruf über Schnittstellen Die Kapselung der EJB muss unter zwei Gesichtspunkten gesehen werden, einerseits werden die Attribute und Methoden nur durch öffentlich deklarierte Methoden von außen angesprochen, andererseits werden die Methoden dieser EJB nicht direkt durch eine Client-Anwendung aufgerufen, sondern immer vermittelt über ihre Schnittstellen. Der Applikationsserver allein organisiert im Containermanagement den»lebenszyklus«einer EJB, d.h. er startet, aktiviert, deaktiviert und entfernt bei Bedarf die EJB in und aus seinem Aktionsraum, dem EJB-Container. Drei Schnittstellen Der Aufruf von Methoden des EJB-Moduls durch eine Anwendung wird über die beiden Schnittstellen ServerInfo auchalsremote-schnittstelle bezeichnet und ServerInfoHome auch als Home-Schnittstelle bezeichnet vermittelt. Sie finden diese Klassen im Projektordner unter ErstesProjekt/ejbsrc/com.erstesprojekt.ejb. Die Home-Schnittstelle liefert zunächst den Computernamen und den Java-Namen des EJB-Moduls an die Anwendung und weist den Applikationsserver über die Methode create() an, das Modul für die Anwendung bereitzustellen. Die Remote-Schnittstelle ServerInfo deklariert alle Methoden der Implementierungsklasse abstrakt. Sie dient damit als Vermittler der Methodenaufrufe der Geschäftslogik des EJB- Moduls. Beide Schnittstellen erweitern die allgemeinen Schnittstellen EJBHome und EJBObject, die durch Klassen des EJB-Containers implementiert werden (Abb. 4.1-1).

4.1 Das erste J2EE-Projekt * 29 Eine weitere Schnittstelle SessionBean deklariert Methoden zur Verwaltung des Lebenszyklus des EJB-Moduls im EJB- Container durch den Applikationsserver. Diese Schnittstelle wird durch die Klasse ServerInfoSession, die die Implementierungsklasse ServerInfoBean erweitert, implementiert. Beachten Sie, dass die Methoden der Schnittstelle SessionBean durch den EJB-Container verwendet werden. Überlassen Sie also dem EJB-Container seine Arbeit und konzentrieren Sie sich bei diesem Beispielprojekt zunächst auf die anderen genannten EJB-Klassen. Sichten Sie in Eclipse die Home und Remote-Schnittstellen des Projektbeispiels und vergleichen Sie sie mit dem Aufbau der oben angegebenen Implementierungsklasse SessionBean. Lokaler oder externer Aufruf von EJBs Bei Durchführung der Übung werden Sie festgestellt haben, dass sich in dem Projektordner ErstesProjekt/ejbsrc noch weitere Schnittstellen und Hilfsklassen befinden. Insbesondere finden Sie dort zwei»schwesterklassen«der genannten Schnittstellen, ServerInfoLocal und ServerInfoLocalHome. Ein Vergleich mit den beiden Schnittstellen aus der Übung zeigt, dass sie die gleichen Aufgaben haben und sich die Erstgenannten nur durch den Einbezug der Ausnahmebehandlung java.rmi.remoteexception von den lokalen Schnittstellen unterscheiden. Hintergrund dafür ist die Möglichkeit, eine EJB aus der unmittelbaren Nähe, d.h. lokal (local) oder aber aus der Ferne (remote) anzusprechen. Nah und fern definieren sich einfach über die gleiche oder unterschiedliche Java-Laufzeitumgebungen (JVM) unter der Java-Anwendung und EJB-Container arbeiten (Abb. 4.1-2). Beim entfernten Methodenaufruf kann noch der Aufruf über mehrere JVMs hinweg und von einem Methodenaufruf über die Grenzen eines oder mehrerer Computersysteme hinweg in einem Computernetzwerk unterschieden werden. Um welche Art von Anwendung handelt es sich bei diesem kleinen Beispiel? local externer Aufruf

30 4 Schnelleinstieg * Java-Client:JVM 1 JBoss Applikationsserver:JVM 2 ServerZeitHolen -getcontext() -gethome() +holeserverzeit() Management (3) ServerInfoBean (2) Schnittstelle ServerInfo +getzeitdatum() «extend» Schnittstelle (1) Schnittstelle ServerinfoHome EJB-Container ServerInfoSession SessionBean Legende: Management des EJB-Containers Abb. 4.1-2: Überblick über Nutzung der J2EE-Anwendung ServerZeitHolen/ServerInfo (EJB-Modul). Im Beispielprojekt wird ein externer Aufruf von EJB-Methoden ausgeführt. Der Applikationsserver und die Java-Anwendung laufen zwar auf demselben Computersystem, jedoch in unterschiedlichen Java-Laufzeitumgebungen. Das bedeutet, dass die Parameterübergabe beim Methodenaufruf nach Wert (call by value) erfolgt und nicht wie beim lokalen Aufruf nach Referenz (call by reference). Es handelt sich daher um eine lose Bindung zwischen aufrufender Anwendung und EJB-Modul. Deployment des EJB-Moduls an den Applikationsserver Schließlich müssen die Ergebnisse der Programmierung sowie Informationen zu Nutzung und Installation der J2EE-Anwendung noch an den angeschlossenen Applikationsserver ausgeliefert und installiert werden. Da die notwendigen EJB- Klassen in diesem Beispiel bereits vorhanden und in einem EJB-Archiv zusammengestellt wurden und auch die EJB-Deployment Descriptors schon vorliegen, wählen Sie nun mit der Maus den Projektordner ErstesProjekt/ErstesProjektEAR aus.

4.1 Das erste J2EE-Projekt * 31 EAR steht dabei für Enterprise Archive, in dem alle J2EE-Ressourcen und Deployment Descriptors für die Auslieferung an den Applikationsserver gesammelt werden. Mit einem rechten Maus-Klick auf diesen Ordner erreichen Sie das J2EE-Kontextmenü des Lomboz-Werkzeugs und können nun das Deployment durch Auswahl des Menüpunktes Lomboz J2EE... - Deploy Module ausführen (Abb. 4.1-3). Abb. 4.1-3: Auslieferung von EJB-Modulen mit Lomboz J2EE-Funktionen. Die J2EE-Anwendung, verpackt in der EAR-Datei, wird in das Installationsverzeichnis c:\j2ee\appserver\jboss\server\default\deploy kopiert. Dabei ist es unerheblich, ob der JBoss-Server bereits gestartet wurde oder nicht. JBoss überprüft auch nach dem Start dieses Verzeichnis in regelmäßigen Abständen auf Veränderungen und führt gegebenenfalls eine neue Auslieferung auch im laufenden Betrieb durch (Hot Deployment). Weiterführende Informationen zum Deployment finden Sie in»deployment«(s. 73). /Rupp 05/ Literatur EJB-Container (EJB container) Eine Spezifikation (kein Produkt) für eine Umgebung, in der EJBs ablaufen können. Ein EJB-Container läuft als Anwendung auf einem J2EE-Server. JVM (JVM; Java Virtuelle Maschine) Bezeichnung für Java-Interpreter, die den Java-Bytecode zur Laufzeit analysieren und interpretieren. Syn.: Java virtual machine, VM, Virtuelle Machine Glossar