Inhaltsverzeichnis

Werbung
Leistungsanalyse_JBOSS
Name der Autoren:
Lars Brügger, Christian Klein, Alexander Wieland
Titel der Arbeit:
?Leistungsanalyse JBoss?
Hochschule und Studienort: FOM Essen
Inhaltsverzeichnis
• 1 Abkürzungsverzeichnis
• 2 Abbildungsverzeichnis
• 3 Tabellenverzeichnis
• 4 Einleitung
• 5 Grundlagen
♦ 5.1 Application Server
♦ 5.2 Java Enterprise Edition
♦ 5.3 JBoss Application Server
◊ 5.3.1 Geschichte
◊ 5.3.2 Zielgruppen
⋅ 5.3.2.1 JBoss
Community
Version
⋅ 5.3.2.2 JBoss
Enterprise Version
◊ 5.3.3 Marktanteile
◊ 5.3.4 Lizenzierung
• 6 Leistungsanalyse
♦ 6.1 Systemanforderungen
♦ 6.2 Java EE Konformität
◊ 6.2.1 Einleitung
◊ 6.2.2
Applikationskomponenten
◊ 6.2.3 APIs
◊ 6.2.4 Web-Container
◊ 6.2.5 EJB-Container
♦ 6.3 Konfiguration und
Administration
◊ 6.3.1 Einleitung
◊ 6.3.2 Dateibasiert
◊ 6.3.3 Programmbasiert
♦ 6.4 Entwicklung und Deployment
◊ 6.4.1 Einleitung
◊ 6.4.2 Architektur
◊ 6.4.3 Prozess
♦ 6.5 Performance, Skalierbarkeit
und Verfügbarkeit
◊ 6.5.1 Einleitung
◊ 6.5.2 Clustering
⋅ 6.5.2.1
Session-Replikation
⋅ 6.5.2.2 JNDI
Inhaltsverzeichnis
1
Leistungsanalyse_JBOSS
⋅ 6.5.2.3
Konfiguration
◊ 6.5.3 Verfügbarkeit
⋅ 6.5.3.1 Smart
Stubs
⋅ 6.5.3.2 Load
Balancer
♦ 6.6 Interoperabilität
◊ 6.6.1 Einleitung
◊ 6.6.2 Serviceorientierte
Architekturen
◊ 6.6.3 Technologien
⋅ 6.6.3.1 Web
Services
⋅ 6.6.3.2 CORBA
und RMI
♦ 6.7 Sicherheit
◊ 6.7.1 Einleitung
◊ 6.7.2 JBossSX
⋅ 6.7.2.1
Authentifizierung
und Autorisierung
⋅ 6.7.2.2
Verbindung /
Kommunikation
♦ 6.8 Zusammenfassender Überblick
• 7 Fazit
• 8 Fußnoten
• 9 Literatur- und Quellenverzeichnis
1 Abkürzungsverzeichnis
Abkürzung
AOP
API
AS
AXIS
BSH
CA
CORBA
CPU
CRM
CSR
DBMS
DSA
Bedeutung
Aspect-oriented Programming
Application Programming Interface
Application Server
Apache Extensible Interaction System
Bean Shell Script
Certificate Authority
Common Object Request Broker Architecture
Central Processing Unit
Customer Relationship Management
Certificate Signing Request
Database Management System
Digital Signature Algorithm
1 Abkürzungsverzeichnis
2
Leistungsanalyse_JBOSS
EAR
EIS
EJB
EJBoss
GB
GPL
GUI
HA-JNDI
HAR
HSQLDB
HTML
HTTP
IDE
IDL
IIOP
IP
IT
J2EE
J2SE
JAAS
JACC
JAF
JAR
JAXP
JAXR
JAX-RPC
JAX-WS
JBossSX
jBPM
JCP
JDBC
JDK
JEE
JEMS
JMS
JMX
JNDI
JRMP
JSP
JSSE
JTA
Enterprise Archive
Enterprise Information System
Enterprise Java Bean
Enterprise Java Beans Open Source Software
Gigabyte
GNU General Public License
Graphical User Interface
High Availability - Java Naming And Directory Interface
Hibernate Archive
Hypersonic SQL Database
Hypertext Markup Language
Hypertext Transfer Protocol
Integrated Development Environment
Interface Definition Language
Internet Inter-ORB Protocol
Internet Protocol
Information Technology
Java 2 Enterprise Edition
Java 2 Standard Edition
Java Authentication And Authorization Service
Java Authorization Contract For Containers
Java Beans Activation Framework
Java Archive
Java API For XML Processing
Java API For XML Registries
Java API For XML Remote Procedure Calls
Java API For XML Web Services
JBoss Security Extension
Java Business Process Management
Java Community Process
Java Database Connectivity
Java Development Kit
Java Enterprise Edition
JBoss Enterprise Middleware Suite
Java Message Service
Java Management Extensions
Java Naming And Directory Interface
Java Remote Method Protocol
Java Server Page
Java Secure Socket Extension
Java Transaction API
1 Abkürzungsverzeichnis
3
Leistungsanalyse_JBOSS
JTS
JVM
LDAP
LGPL
MB
MBean
MHz
MIME
OMG
POJO
RAID
RAM
RAR
REST
RMI
RMI-IIOP
RPC
RSA
SAAJ
SAN
SAR
SLA
SOA
SOAP
SSL
TLS
UDDI
UNIX
URL
WAR
WS4EE
WSDL
XHTML
XML
XML-DTD
XSD
XTP
Java Transaction Service
Java Virtual Machine
Lightweight Directory Access Protocol
GNU Lesser General Public License
Megabyte
Managed Bean
Megahertz
Multipurpose Internet Mail Extensions
Object Management Group
Plain Old Java Object
Redundant Array Of Independant Disks
Random Access Memory
Resource Adapter Archive
Representational State Transfer
Remote Method Invocation
Remote Method Invocation - Internet Inter-ORB Protocol
Remote Procedure Calls
Verschlüsselungsverfahren benannt nach den Erfindern Rivest, Shamir and Adleman
SOAP With Attachments API For Java
Storage Area Network
Service Archive
Service Level Agreement
Service-oriented Architecture
Simple Object Access Protocol
Secure Socket Layer
Transport Layer Security
Universal Description, Discovery And Integration
Uniplexed Information And Computing System
Uniform Resource Locator
Web Application Archive
Web Service 4 Enterprise Edition
Web Services Description Language
Extensible Hypertext Markup Language
Extensible Markup Language
Extensible Markup Language - Document Type Definition
XML Schema Definition
Extreme Transaction Processing
2 Abbildungsverzeichnis
Abb.-Nr.
2 Abbildungsverzeichnis
Abbildung
4
Leistungsanalyse_JBOSS
1
2
3
4
5
6
7
8
J2EE-Tiers für verschiedene Applikationen
Gartner: magischer Quadrant
J2EE Application Model
JBoss Architektur
J2EE-Interoperabilität
JBossSX
Sicherheit anhand des Beispiels einer Web-Anwendung
Zusammenspiel zwischen JaasSecurityDomain, Truststore, Security Domain und Security Datastore
3 Tabellenverzeichnis
Tabelle Nr.
1
2
3
4
5
6
7
8
9
10
11
12
13
Bezeichnung
Rechte und Pflichten der JBoss-Nutzer
supportete Betriebssysteme, Chipsätze und Java Virtual Machines - JBoss Certified
Configurations - v4.2
zertifizierte Datenbanken und Datenbanktreiber - JBoss Certified Configurations - v4.2
benötigte J2SE 1.4 Optional Packages
Ordnerstruktur ausgehend vom Basisverzeichnis
Ordnerstruktur ausgehend vom Verzeichnis einer Konfiguration
Auswahl an Konfigurationsdateien
MBeans von zentraler Bedeutung
JBoss Deployer
Attribute der ClusterPartition MBean
Attribute der HANamingService MBean
Attribute der HASessionStateService MBean
Zusammenfassender Überblick
4 Einleitung
Die Spezifikation der Java Enterprise Edition (bis Version 1.4 J2EE, ab Version 1.5 JEE) und der Application
Server JBoss sind zwei wichtige Themen im Bereich der Java-Enterprise-Anwendungen. So ist die Java
Enterprise Edition faktisch der Standard in vielen Unternehmen, wenn es um die Entwicklung von Java
Applikationen geht, die zunehmend herstellerunabhängig und damit interoperabel sein sollen. Mit der
Entscheidung diese Spezifikation einzusetzen wird gleichzeitig ein Server benötigt, auf dem diese Anwendungen
bereitgestellt werden können und der zudem mit der Java Enterprise Edition konform ist.
Ziel der Arbeit ist es, grundlegende Informationen zum JBoss Application Server zu geben und die wesentlichen
von ihm unterstützten Technologien zu erläutern. Der Kern der Arbeit ist die Durchführung einer
Leistungsanalyse, in der die wichtigsten Features des Application Servers ermittelt und anschließend näher
betrachten werden. Dabei werden lediglich qualitative Kriterien berücksichtigt, da die Analyse von quantitativen
Kriterien zu keinem aussagekräftigen Ergebnis führte. Die erlangten Erkenntnisse werden abschließend in einem
Fazit durch eine subjektive Beurteilung aufgegriffen.
Der Fokus dieser Arbeit liegt auf dem vierten Release des JBoss Application Servers. Dieser basiert auf der Java
Enterprise Edition Version 1.4 (J2EE). Für die Sammlung von Informationen gibt es hierzu die meiste und nach
wie vor aktuelle Fachliteratur, welche zusätzlich durch die Nutzung von Internetquellen unterstützt wird. Die
fünfte Version wurde erst während der Leistungsanalyse als ?stabiles? Release deklariert und folglich bei Red Hat
3 Tabellenverzeichnis
5
Leistungsanalyse_JBOSS
als kommerzielle Version in die JBoss Enterprise Middleware Suite (JEMS) integriert und angeboten. Zudem war
die Auswahl von geeigneter Literatur bereits abgeschlossen.
Die Arbeit ist in zwei Hauptthemen eingeteilt. Zum einen sind im Kapitel Grundlagen die wichtigsten Aspekte zu
den Themen Application Server, J2EE und JBoss selbst abgedeckt. Dazu gehören die allgemeine
Begriffsdefinition eines Application Servers, wichtige Informationen, die zum Verständnis der
J2EE-Spezifikation beitragen, ein kurzer Einblick in die Geschichte des JBoss Application Servers sowie
Aussagen bezüglich der Zielgruppen, Marktanteile und Lizenzierung.
Zum anderen stellt die Ausarbeitung der Leistungsanalyse den Hauptteil dar. Dabei werden keine Vergleiche zu
anderen Application Servern und deren Technologien gezogen. Die Analyse beginnt mit den hardware- und
softwaretechnischen Systemanforderungen, welche die Voraussetzung für den Betrieb des Application Servers
bilden. Die darauf folgenden Kapitel beginnen mit einer kurzen Einführung zum jeweiligen Thema, um sich
besser mit den genannten Informationen auseinandersetzen zu können. Im Kapitel Java EE Konformität sind
Bezüge zu den enthaltenen Applikationskomponenten, den Application Programming Interfaces (APIs) und dem
Web- bzw. EJB-Container des JBoss Application Servers hergestellt. Konfiguration und Administration sind die
Stichworte zur Verwaltung des Servers, bei welcher verschiedene Möglichkeiten in dem gleichnamigen Kapitel
betrachtet werden. Das darauf folgende Kapitel gibt einen Einblick in die Architektur und in den Prozess der
Entwicklung und des Deployments von JBoss-spezifischen Anwendungen. Der Punkt Performance, Skalierbarkeit
und Verfügbarkeit klärt Fragen zur Antwortzeit und dem Datendurchsatz eines Servers. Zusätzlich wird das
Thema Clustering aufgegriffen. Das Kapitel Interoperabilität nimmt Bezug auf die benötigte Unabhängigkeit
verschiedener Systeme. So wird auf eine serviceorientierte Architektur eingegangen und damit einhergehende,
mit dem JBoss umsetzbare Technologien wie Web Services, CORBA und RMI erläutert. Der letzte Punkt der
Analyse umfasst das Thema Sicherheit, welches den Fokus auf die im JBoss integrierte JBoss Security Extension
(JBossSX) legt. Der zusammenfassende Überblick zeigt in komprimierter Form die wichtigsten Aspekte der aus
der Analyse gewonnenen Informationen. Das Fazit schließt mit den Erkenntnissen aus den gewonnenen
Informationen und der eigenen Bewertung zu dem JBoss Application Server und den Spezifikationen ab.
5 Grundlagen
5.1 Application Server
Eine eindeutige Definition eines Application Server (deutsch: Applikationsserver, Anwendungsserver) existiert
nicht. Der Begriff ist in der Geschäftspraxis stark verwässert und unterliegt einem inflationären Gebrauch.[1]
Die Entstehung des Begriffs geht auf die Einführung der 3-Tier-Architektur zurück. Der Unterschied zur
klassischen Client-Server-Architektur (2-Tier) besteht darin, dass eine separate Ebene für die Geschäftslogik in
Form eines eigenständigen Servers eingesetzt wird. Das Ziel soll die Verwendung der Geschäftslogik unabhängig
vom jeweiligen Clienttypen sein.[2] Diese separate Ebene wird auch als Business Tier, Middle Tier, Application
Tier oder Server Tier bezeichnet.[3]
Ein wichtiger Aspekt bei der Betrachtung eines Application Server ist die J2EE-Spezifikation der Firma Sun
Microsystems. Sie ist dafür verantwortlich, dass unter einem Application Server im Allgemeinen ein
Java-J2EE-Application Server verstanden wird.[4] Diese Spezifikation fordert, dass ein J2EE-konformer
Application Server einen Servlet-Container, einen EJB-Container und eine Reihe unterstützender APIs besitzt.
Damit scheiden reine Webserver wie Apache Tomcat oder Jetty aus, da sie lediglich einen Servlet-Container
implementieren.[5] Beispiele für vollwertige Application Server sind z.B. JBoss von Redhat, Websphere von IBM,
BEA Weblogic (jetzt Oracle) und Glassfish von Sun. Nähere Informationen zu dieser Thematik finden sich hier
[[1] Java Enterprise Edition] und hier [[2] Java EE Konformität].
4 Einleitung
6
Leistungsanalyse_JBOSS
Die Anbieter von Application Servern bezeichnen ihre Produkte als Web Application Server, Legacy Application
Server oder Enterprise Application Server. Ein Web Application Server ist auf Web-basierte Anwendungen wie
z.B. Online-Shops spezialisiert und betreibt den dafür notwendigen Web-Server neben dem Application Server.
Ein Legacy Application Server unterstützt keine Web-basierten Anwendungen. Stattdessen ist diese Variante für
herkömmliche, transaktionsbasierte Desktop-Anwendungen konzipiert. Ein Enterprise Application Server ist eine
Kombination aus Web Application Server und Legacy Application Server.[6]
5.2 Java Enterprise Edition
Die Java Enterprise Edition ist ein von Sun Microsystems entwickeltes Rahmenwerk für Design, Entwicklung,
Zusammenbau und Verteilung von Unternehmens-Anwendungen auf Basis von Komponenten. J2EE wurde Ende
1999 offiziell veröffentlicht.[7]
Die Java Enterprise Edition ist also im Wesentlichen kein Produkt, sondern ein Satz von Spezifikationen und
Technologien, die vor allem die Entwicklung von sicheren, stabilen und portablen Unternehmens-Anwendungen
ermöglichen sollen. Ausgefüllt werden diese Spezifikationen durch Implementierungen verschiedener Anbieter,
zwischen denen der Programmierer wählen kann. Den Kern der Spezifikation bildet dabei ein modulares,
komponentenbasiertes Modell, dessen Bestandteile über standardisierte Schnittstellen (APIs) miteinander
kommunizieren und zusammenarbeiten.[8]
Der große Vorteil des Java Enterprise Edition Anwendungsmodells ist, dass bereits viele komplexe Themen, die
mit der Entwicklung von Unternehmens-Anwendungen einhergehen - wie z.B. Transaction Management,
Life-Cycle Management oder Resource Pooling ? ein fester Bestandteil der Plattform sind und automatisch den
unterstützten Komponenten zur Verfügung stehen. So wird es den Entwicklern von Komponenten und
Anwendungen ermöglicht, sich auf die Kernthemen wie die Entwicklung von Business Logik oder
Benutzeroberflächen zu konzentrieren.[9]
Die Java Enterprise Edition basiert auf einem Komponenten-Container-Modell. Vier Kern-Container liefern mit
Hilfe ihrer jeweiligen APIs die spezifischen Laufzeitumgebungen, die für die verschiedenen Komponenten
erforderlich sind:
• Java Applications sind eigenständige Programme, die innerhalb des Application Client Containers
ablaufen.
• Applets sind Java Applets, die innerhalb eines Applet-Containers ablaufen.
• Servlets und Java Server Pages laufen innerhalb eines Web-Containers eines Web-Servers.
• Enterprise Java Beans laufen innerhalb eines EJB-Containers und stellen die Kern-Komponenten der
J2EE-Spezifikation dar.[10]
Die J2EE-Plattform bietet eine spezielle Unterstützung für die Applikationsentwicklung auf Basis einer
4-Tier-Architektur an. Die Komponentenmodelle orientieren sich am Vorbild dieser Architektur.[11]
Die 4-Tier Architektur besteht aus den vier Schichten Client-Tier, Web-Tier, Business-Tier und EIS (Enterprise
Information System)-Tier. Je nachdem ob eine Web-basierende oder eine nicht-Web-basierende Anwendung
entwickelt wird, kommen alle vier bzw. nur drei der vier Schichten zum Einsatz.[12]
Dies ist auch in der folgenden Abbildung zu sehen, in der die Applikation 2 eine Web-basierende und die
Applikation 1 eine nicht-Web-basierende Anwendung darstellt.
5.1 Application Server
7
Leistungsanalyse_JBOSS
Abbildung 1: J2EE-Tiers für verschiedene Applikationen[13]
5.3 JBoss Application Server
5.3.1 Geschichte
Im März 1999 entwickelt Marc Fleury den Open-Source Application Server EJBoss (Enterprise Java Beans Open
Source Software) und stellt das erste Release bereits im November zur freien Verfügung. Der Application Server
unterliegt dabei nicht der GNU General Public License (GPL), sondern der Lesser GPL (LGPL) (siehe [[3]
Lizenzierung]). Aufgrund eines Hinweises von Sun Microsystems, dass das Wort EJB (Enterprise Java Bean)
geschützt ist, wird der Application Server in JBoss umbenannt. Die Weiterentwicklung des JBoss Application
Servers wird nun in Form einer Community übernommen, an der sich auch Fleury beteiligt.
Um Expertenwissen in Form von Dokumentationen, Beratungen und Schulungen anbieten zu können, wird 2001
die JBoss Group LCC gegründet. 2002 wird das Angebot erweitert und seitdem auch Unterstützung für
Entwickler angeboten. Fast gleichzeitig wird der JBoss Application Server in seinem 3. Release als
Hauptbestandteil in der JBoss Enterprise Middleware Suite (JEMS) angeboten.[14]
Aus der JBoss Group LCC wird 2004 das Unternehmen JBoss Inc., deren Inhaber die Entwickler des Application
Servers selbst sind und die durch die Venture Capital-Geber Matrix Partners, Accel Partners und Intel unterstützt
werden.[15] Mit dem vierten Release des JBoss Application Servers werden nun auch gezielt Firmen
angesprochen, indem Dienstleistungen zur Unterstützung bei der Produktion durch die JBoss Inc. angeboten
werden.[14]
In den kommenden Jahren wird die Produktpalette weiter ausgebaut, sodass die im JBoss Application Server
integrierten Anwendungen, wie JBoss Cache, Hibernate, jBPM und JBoss Rules, auch außerhalb des Application
Servers lauffähig sind.[14]
Im Jahr 2006 wird die JBoss Inc. von Red Hat für 350 Millionen US-Dollar gekauft. Weitere 70 Millionen
US-Dollar folgen, als vorher vereinbarte Ziele von JBoss erreicht werden.[16] Beide Firmen setzen dabei auf
Open-Source als Softwaremodell und erwirtschaften Geld, indem sie Support- und Service-Abonnements
vertreiben. Red Hat bietet die supportete und ebenso weiter gewachsene Version 5 als JBoss Enterprise
5.2 Java Enterprise Edition
8
Leistungsanalyse_JBOSS
Application Platform an. Das Community Projekt des JBoss Application Servers ist seit dem 02.12.2009 in der
sechsten Version (6.0.0 M1) erhältlich. Seit dieser Zeit werden die verschiedenen Releases nicht mehr als alphaoder beta-Versionen angeboten, sondern es werden bestimmte Projekte zu einem Meilenstein zusammengefasst.
Erst wenn dieser Meilenstein in seiner finalen Version vorliegt und getestet wurde, wird das Release zum
Download freigegeben.
5.3.2 Zielgruppen
Die Entscheidung, welche Version des JBoss Application Servers die Nutzer bzw. Unternehmen bevorzugen, liegt
in deren Bedürfnissen und den Vorgaben, die sie zu erfüllen haben.
5.3.2.1 JBoss Community Version
Die JBoss Community Version ist unter www.jboss.org herunterladbar. Benutzer sind demnach Personen, die
einfache Anforderungen haben oder neue Technologien testen wollen. Sie müssen demnach die Projekte selbst
integrieren, absichern, pflegen und supporten. Weiterhin werden während der Entwicklung von Applikationen
auftretende Fehler und Bugs selbständig gelöst bzw. durch den Bezug von Lösungsvorschlägen aus der
Community eigenständig behandelt. Diese Version enthält zusätzlich unausgereifte bzw. noch zu testende
Features, für die es weder Patches noch Hot Fixes gibt. Auch nicht möglich sind Zertifizierungen auf Basis der
Community Version. Ein wichtiger Vorteil dieser Version ist der breite Entwicklerkreis, der mit neuen Features
und Innovationen die Weiterentwicklung des JBoss Application Servers vorantreibt.[17]
5.3.2.2 JBoss Enterprise Version
Bei der Enterprise Version handelt es sich um eine von Red Hat offerierte Variante, die für Unternehmen und
Entwickler geeignet ist, die geschäftskritische Anwendungen in einer Produktionsumgebung bereitstellen wollen.
Der Erhalt der Software ist über ein entgeltliches Abonnement geregelt und beinhaltet eine bereits vorgefertigte
Plattform, in der keine weiteren Integrationen von benötigten Projekten notwendig sind. Zusätzlich wird ein 24x7
Support angeboten, sowie Updates bzw. Patches ausgeliefert, um zum Beispiel Sicherheits-, Performance- und
Stabilitätsprobleme zu beheben. Das Thema Sicherheit ist zusätzlich über den ?security response process? von
Red Hat gewährleistet, in dem Ratschläge zu Sicherheitsfragen gegeben werden. Weiterhin bietet Red Hat seinen
Kunden Schulungen, Zertifizierungen und Beratungen für Betriebssysteme, Hardware und Datenbanken.[17] Die
Enterprise Version baut dabei auf der Community Version des JBoss Application Servers auf. Sobald die aktuelle
Community Version durch Tests auf nahezu vollständige Fehlerfreiheit und Stabilität geprüft wurde, wird diese
als Enterprise Version von Red Hat vertrieben. Daher wird diese Variante meist mit einer niedrigeren
Versionsnummer als die aktuellste Version aus der Community angeboten.
5.3.3 Marktanteile
Im November 2004 führte BZ Research, ein Tochterunternehmen der SD Times, eine Java Studie durch, bei der
757 Abonnenten der Zeitschrift teilnahmen[18]. Den Ergebnissen zufolge werden immer mehr Java-Applikationen
in Produktivumgebungen genutzt. Im Gegensatz zum Vorjahr, in dem 26,9 % den JBoss als Application Server
verwendeten, hat sich der Anteil in 2004 auf 34,8 % erhöht, und sich die Marktstellung zu kommerziellen
Application Servern, wie zum Beispiel dem IBM Websphere, dem BEA WebLogic oder ORACLE Application
Servern weiter verbessert.[19]
5.3.1 Geschichte
9
Leistungsanalyse_JBOSS
Laut einer Umfrage der Webseite Javamagazin.de setzen 41 % der Teilnehmer den JBoss Application Server als
Test- und Produktivplattform ein. Sieben Prozent nutzen diesen ebenfalls nur als Testplattform, weitere 39 %
geben an, den JBoss Application Server überhaupt nicht zu verwenden.[20] Mit der Zeit haben sich auch weitere
bekannte Größen wie Novell und Hewlett-Packard dazu entschieden, sich von ihren eigenen J2EE-Technologien
zu trennen und liefern den JBoss-Code nun mit ihren Produkten aus.[21]
In einer Marktuntersuchung des Unternehmens Gartner, welche im September 2009 veröffentlicht wurde, hat sich
Red Hat mit dem JBoss Application Server als einzige Open-Source-Plattform neben den kommerziellen
Angeboten von Microsoft, Oracle und IBM in dem Quadranten der Marktführer platziert. Marktführer sind nach
Gartner diejenigen, die Verständnis von dem Markt haben und dessen Richtung beeinflussen. Weiterhin sind es
jene, die einen gewissen Ruf bzw. eine gewisse Verbreitung haben und dadurch lang auf dem Markt aktiv sind.[22]
Gartner ist ein Anbieter von Marktforschung und Analyse der Technologie-Industrie und teilt seinen ?magischen
Quadranten? in vier Kategorien ein:
• Marktführer
• Herausforderer
• Visionäre
• Nischenbesetzer[22]
Zusätzlich ist der Quadrant in die zwei Dimensionen ?Vollständigkeit der Vision?, mit den hoch gewichteten
Kriterien Angebots- bzw. Produktstrategie, Innovation und Marktkenntnis, und ?Fähigkeit zur Umsetzung?, mit
den hochgewichteten Kriterien Produkt/Dienstleistung und Verkaufsabwicklung/Preise, gegliedert[22].
5.3.3 Marktanteile
10
Leistungsanalyse_JBOSS
Abbildung 2: Gartner: magischer Quadrant.[23]
Nach Gartner ist Red Hat mit dem JBoss Application Server der Marktführer im Open-Source-Bereich. Die
Stärken seien dabei die größte installierte Basis und die größte Anzahl an Partnern, die Red Hat begleiten.
Außerdem habe die JBoss-Technologie einen exzellenten Ruf und ist zusammen mit dem breiten Portfolio an
Open-Source-Angeboten bestens positioniert, um mit führenden kommerziellen Anbietern mitzuhalten. Probleme
sieht Gartner bei den geschäftlichen Anforderungen von Red Hat, die der JBoss-Abteilung höhere Margen und
Erträge auferlegt. Dies führe teilweise zu einer Verlangsamung der Entwicklung von technischen Innovationen
oder anderen Tätigkeiten. Weiterhin sieht Gartner Probleme bei dem Übergang vom etablierten, aber schmalen
Application-Server-Markt zum breiter angelegten und unverzichtbaren Applikation-Infrastruktur-Markt und der
damit einhergehenden Neustrukturierung der Marketing-, Vertriebs- und Geschäftsperspektive. Ebenso machen
die begrenzten Investitionen in XTP, Event-Verarbeitung und Cloud-Technologien das Unternehmen
möglicherweise anfälliger für die nächste Welle von Wettbewerbern.[22]
5.3.4 Lizenzierung
Der Source Code des JBoss Application Servers ist unter der LGPL (der GNU Lesser General Public License)
lizenziert, welche unter http://www.gnu.org/copyleft/lesser.txt eingesehen werden kann.[24] Die LGPL gehört zu
den Open-Source Lizenzen und hat das Ziel, den Quelltext der Anwendung frei zugänglich zu lassen.[25] Dadurch
ergeben sich die folgenden Rechte und Pflichten für Nutzer und Weiterentwickler des JBoss Application Servers:
Der JBoss AS kann als Teil einer spezifischen Geschäfts-Anwendung ohne
Einschränkungen verwendet werden, Querverweise zwischen JBoss und proprietären
Softwareprodukten sind erlaubt.[25]
JBoss Kunden, Partnern und der JBoss Gemeinde steht es frei, Kopien des JBoss AS
Keine Lizenzgebühren
herunterzuladen, ohne dass dadurch Lizenzgebühren entstehen.[25]
Sowohl JBoss Kunden, Partner als auch End-Nutzer dürfen Kopien des JBoss AS an
Weitergabe an Dritte
Dritte weitergeben.[25]
Für den internen Gebrauch ist es gestattet, Änderungen am JBoss AS vorzunehmen. Es
Modifikation für internen
entsteht keine Verpflichtung, diese Änderungen in irgendeiner Weise zu
Gebrauch
veröffentlichen.[25]
Weitergabe von
Nutzern des JBoss AS ist es gestattet, geänderte Versionen an Dritte weiterzugeben.
modifizierter Software an Dieser geänderte Quelltext muss aber unter der LGPL lizenziert und für alle frei
Dritte
zugänglich gemacht sein.[25]
Der Unterschied zwischen der herkömmlichen GPL (der GNU General Public License)
Einbettung in
und der LGPL, liegt darin, dass eine durch LGPL geschützte Programmbibliothek
kommerzielle Produkte nicht nur von freier Software verwendet werden darf, sondern auch von kommerziellen
Programmen.[26]
Tabelle 1: Rechte und Pflichten der JBoss-Nutzer
Nutzungsfreiheit
6 Leistungsanalyse
6.1 Systemanforderungen
Die Aussagen, welche minimalen Hardwarevoraussetzungen für die Benutzung des JBoss Applikation Servers 4.2
benötigt werden, differieren sehr stark. So gelten teilweise Anforderungen von 512 MB Arbeitsspeicher, 400
MHz CPU-Taktrate und 100 MB Festplattenspeicherplatz für ein Rechnersystem als ausreichend.[27] Andere
5.3.4 Lizenzierung
11
Leistungsanalyse_JBOSS
wiederum sprechen von einem Rechner mit einem 2,6 MHz Dual-Core-System und ca. 4 GB Arbeitsspeicher[28].
Dies ist auf die individuellen Anforderungen der Nutzer zurückzuführen. So sind die Bedürfnisse durch
Performance- und Balancing-Tests zu überprüfen und entsprechend der eigenen Vorgaben, wie zum Beispiel der
Anzahl der gleichzeitigen Benutzerzugriffe, der Anzahl der Applikationen oder deren Arbeitsspeicherbedarf,
anzupassen. Reicht die Rechnerleistung eines Systems nicht aus, kann mit Hilfe eines Cluster-Betriebs Abhilfe
geschaffen werden, bei dem die auf dem Application Server liegende Last durch Hinzunahme eines weiteren
Application Servers geteilt werden kann (siehe [[4] Performance, Skalierbarkeit und Verfügbarkeit]).[29] Da der
JBoss Application Server auf einem 32-Bit-System höchstens ca. 2 GB Hauptspeicher zuordnen kann[29], wird in
den beiden o.g. Fällen die Installation auf einem 64-Bit-System bevorzugt, da damit eine bessere
Speicherverwaltung genutzt werden kann.
Als softwaretechnische Voraussetzung für die Benutzung des JBoss Application Servers ist eine vorhandene
Installation des Java Development Kit 1.4[30]. Doch um auch die EJB3-Technologien benutzen zu können, sollte
Java in der Version 1.5 installiert sein[31].
Red Hat teilt die Enterprise Version des JBoss Application Servers in eine kompatible und in eine zertifizierte
Variante bzw. Konfiguration ein, für die Support angeboten wird. Diese unterscheiden sich generell in der
Kombination von Betriebssystem und der Chipsatzarchitektur, sowie der verwendeten Java Virtual Machine
(JVM). Bei der kompatiblen Version des JBoss 4.2 ist nur die Version der JVM vorgegeben, die einem Release
1.5.x entsprechen muss. Das Betriebssystem und der benutze Chipsatz sind nicht weiter spezifiziert.[32]
Die zertifizierten Konfigurationen bestehen aus speziell geprüften und getesteten Kombinationen aus
Betriebssystemen, Chipsatzarchitekturen, Java Virtual Machines und Datenbanken, die bei den meisten Kunden
von Red Hat zum Einsatz kommen[32]:
Betriebssystem
Chipsatz Architektur Java Virtual Machine(s)
Sun JDK 1.5.0_15
Red Hat Enterprise Linux v5 x86, x86_64
BEA JRockit JDK 1.5.0_08
IBM JDK 1.5.0 SR6
IBM System z
IBM JDK 1.5.0 SR5
Red Hat Enterprise Linux v5
s390x (64-bit)
Sun JDK 1.5.0_15
BEA JRockit JDK 1.5.0_08
Red Hat Enterprise Linux v4 x86, x86_64
IBM JDK 1.5.0 SR6
Azul JDK 1.5.0_11
IBM System z
Red Hat Enterprise Linux v4 s390x (64-bit)
IBM JDK 1.5.0 SR5
s390 (31-bit)
Sun JDK 1.5.0_15
Microsoft Windows 2003
x86
BEA JRockit JDK 1.5.0_10
Sun JDK 1.5.0_15
Microsoft Windows 2003
x86_64
BEA JRockit JDK 1.5.0_08
Solaris 10
x86, SPARC
Sun JDK 1.5.0_15
Solaris 9
SPARC
Sun JDK 1.5.0_15
HP-UX i2
RISC, ia64
HP-UX JDK 1.5.0.06
Tabelle 2: supportete Betriebssysteme, Chipsätze und Java Virtual Machines - JBoss Certified Configurations v4.2[32]
6.1 Systemanforderungen
12
Leistungsanalyse_JBOSS
Während des Release-Prozesses der JBoss Enterprise Application Plattform 4.2 wurden die folgenden
Datenbanken und Datenbanktreiber geprüft und zertifiziert[32]:
Datenbank
IBM DB2 v9.1 Fixpack 3
IBM DB2 v8.2.7
Datenbanktreiber
IBM DB2 Universal JDBC Driver v3.1.57
IBM DB2 Universal JDBC Driver v2.10.52
Oracle JDBC driver v10.2.0.1
Oracle 10g R2
Oracle JDBC driver v10.2.0.2
Oracle JDBC driver v10.2.0.1
Oracle 9i
Oracle JDBC driver v10.2.0.2
Sybase ASE15
Sybase jConnect JDBC driver v6.0 (Build 26023)
Microsoft SQL Server 2005 Microsoft SQL Server 2005 driver v1.1.1501.101
MySQL v5.0
mysql-connector-java v5.0.7
PostgreSQL v8.1
PostgreSQL v8.2 JDBC3 with SSL (build 504)
Tabelle 3: zertifizierte Datenbanken und Datenbanktreiber - JBoss Certified Configurations - v4.2[32]
Neben diesen Anforderungen bringt der JBoss von Haus aus bereits einen WebServer und eine Servlet-Engine
(JBossWeb oder Tomcat), eine relationale Datenbank (HSQLDB - Hypersonic SQL DB) und den eigentlichen
Application-Server für die EJBs mit[33].
6.2 Java EE Konformität
6.2.1 Einleitung
Wie bereits in Kapitel 5.2 beschrieben, stellt J2EE ein Rahmenwerk für die Entwicklung von
Unternehmens-Anwendungen dar. Anwendungsentwickler sowie Hersteller von Java Application Servern werden
dazu aufgefordert, sich an diese Standards zu halten, um die Portabilität von Anwendungen herstellerübergreifend
zu gewährleisten.
Das von Sun Microsystems geleitete Konsortium des Java Community Process (JCP) entwickelt zu jeder
veröffentlichten Java Enterprise Edition Spezifikation auch eine aktualisierte Compatibility Test Suite. Anhand
dieser Testumgebung kann ein Application Server hinsichtlich seiner J2EE Kompatibilität überprüft werden.[34]
Die Compatibility Test Suite für J2EE 1.4 beinhaltete bereits über 5000 Testfälle und es werden von Spezifikation
zu Spezifikation mehr. Die Testumgebung überprüft die Kompatibilität, indem sie spezielle Funktionen der
Anwendung aufruft und die zurückgelieferten Ergebnisse überprüft.[35]
Um sich J2EE-kompatibel nennen zu dürfen, muss ein Application Server die Kompatibilitätstests bestehen, die
durch die Compatibility Test Suite ausgeführt werden. Die Test-Suites werden den Herstellern der Application
Server allerdings nicht unentgeltlich überlassen, so dass Open-Source-Projekte wie JBoss offenbar lange Zeit
Schwierigkeiten hatten, die nötige Summe aufzubringen.[36]
Mit der J2EE 1.4 Version gewährte Sun Microsystems erstmalig auch JBoss den Zugang zu den
Kompatibilitäts-Tests und bot somit den JBoss-Entwicklern die Möglichkeit ihren Application Server offiziell als
J2EE-konform zertifizieren zu lassen. Dies geschah zwar nicht unentgeltlich, aber offensichtlich für JBoss zu
6.2 Java EE Konformität
13
Leistungsanalyse_JBOSS
annehmbaren Konditionen.[37] In der von Sun veröffentlichten J2EE 1.4 Spezifikation werden umfangreiche
Anforderungen an J2EE konforme Application Server gestellt, die in den folgenden Kapiteln bezüglich ihrer
Umsetzung im JBoss 4 Server genannt werden sollen.
6.2.2 Applikationskomponenten
Jeder J2EE Server muss Methoden zur Ausbringung, zur Verwaltung und zur Ausführung von J2EE konformen
Applikationskomponenten zur Verfügung stellen. Diese Applikationskomponenten können bezüglich ihrer
Abhängigkeit vom J2EE Server in drei Kategorien eingeteilt werden:
• Komponenten, die auf dem J2EE Server ausgebracht, verwaltet und ausgeführt werden, z.B.
Web-Komponenten und Enterprise Java Beans (EJBs)
• Komponenten, die auf dem J2EE Server ausgebracht und verwaltet werden, jedoch auf einem Client
ausgeführt werden, z.B. HTML-Seiten oder in HTML-Seiten eingebettete Applets
• Komponenten, deren Ausbringung und Verwaltung nicht vollständig in der J2EE Spezifikation enthalten
sind, wie z.B. eigenständige Application Clients[38]
Abbildung 3: J2EE Application Model.[39]
Um Web-Komponenten und EJBs zur Verfügung stellen zu können, muss jeder J2EE Server einen
Web-Container (auch Servlet-Container) und einen EJB-Container zur Verfügung stellen.[40]
6.2.3 APIs
Alle vier in der J2EE 1.4 Spezifikation genannten Container, also auch der Web- und der EJB-Container müssen
die folgenden, zum Umfang der Java 2 Platform, Standard
6.2.1 Einleitung
14
Leistungsanalyse_JBOSS
Edition, v1.4 (J2SE) gehörenden APIs implementieren[41]:
• Java IDL / Interface Definition Language - ermöglicht den Aufruf von CORBA Objekten[42]
• JDBC / Java Database Connectivity - zum Zugriff auf relationale Datenbanken[43]
• RMI-IIOP / Remote Method Invocation - Internet Inter-ORB Protocol - ermöglicht den Zugriff auf
CORBA Dienste[42]
• JNDI / Java Naming and Directory Interface - für den Zugriff auf und die Bereitstellung von Namensund Verzeichnisdiensten[43]
• JAXP / Java API For XML Processing - zur Bearbeitung und Transformation von XML Dokumenten[43]
• JAAS / Java Authentication and Authorization Service - stellt Dienste zur Authentifizierung von
Benutzern und zur Zuweisung von Rechten an diese zur Verfügung[44]
Web-Container und EJB-Container müssen zusätzlich zu den bereits genannten J2SE 1.4 APIs noch die in der
folgenden Tabelle ersichtlichen Java Optional Packages implementieren:
Java Optional Package
EJB 2.1 / Enterprise Java
Beans
Servlet 2.4
JSP 2.0 / Java Server
Pages
JMS 1.1 / Java Message
Service
JTA 1.0 / Java
Transaction API
Web-Container EJB-Container Aufgabe
Abbildung von Geschäftslogik und
Ja (Client API) Ja
Persistenzierung der Geschäftsdaten
Ja
Nein
Packen und Ausbringen von Web-Applikationen[45]
JavaMail 1.3
JAF 1.0 / Java Beans
Activation Framework
Connector 1.5 / J2EE
Connector Architecture
Web Services
Ja
Nein
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
Ja
JAX-RPC 1.1 / Java API
For XML Remote
Ja
Procedure Calls
SAAJ 1.2 / SOAP with
Ja
Attachments API for Java
JAXR 1.0 / Java API for
Ja
XML Registries
J2EE Management 1.0 /
Java 2 Platform,
Enterprise Edition
Management API
JMX 1.2 / Java
6.2.3 APIs
Erstellung dynamischer Websites[46]
Austausch von asynchronen Nachrichten zwischen
Anwendungen[47]
Transaktionverarbeitung zwischen AS und anderen
Systemen (z.B. Datenbanken)[48]
Erzeugung, Versand und Empfang von E-Mails aus
einer Anwendung[49]
Framework zur Behandlung von Daten in
verschiedenen MIME-Typen[43]
Anbindung von Enterprise
Informationssystemen[50]
Zusammenführung mehrerer Java Technologien zur
Bereitstellung von Web Services[44]
Ja
Bereitstellung von Client APIs zum Zugriff auf
Web Services[51]
Ja
Manipulation von SOAP Nachrichten[51]
Ja
Ja
Ja
Ja
Ja
Bereitstellung von Client APIs zum Zugriff auf
XML basierende Verzeichnisdienste wie z.B.
UDDI[51]
Bereitstellung von Schnittstellen für Management
Tools z.B. zur Abfrage des Status und der
ausgebrachten Anwendungen eines J2EE
Servers[52]
Management von J2EE Komponenten innerhalb
15
Leistungsanalyse_JBOSS
Management Extensions
JACC 1.0 / Java
Authorization Contract
Ja
Ja
For Containers
Tabelle 4: benötigte J2SE 1.4 Optional Packages[55]
des J2EE Servers[53]
Auslagerung von Autorisierungsentscheidungen
beim Zugriff auf EJB-Methoden und
Webressourcen[54]
Als J2EE 1.4 zertifizierter Applikationserver implementiert der JBoss 4 alle geforderten APIs der J2SE 1.4, sowie
alle geforderten Java Optional Packages. Dadurch stehen dem Entwickler bereits umfangreiche Funktionalitäten
zur Verfügung, welche nicht mehr eigens implementiert werden müssen.
6.2.4 Web-Container
Der Web-Container stellt die Laufzeitumgebung für die J2EE Web-Komponenten, den Java-Servlets und den Java
Server Pages zur Verfügung. Seine Infrastruktur ermöglicht das Kompilieren und Ausführen von JSPs. Eigene
Web-Komponenten können implementiert werden, wenn sie mit der Java-Servlet-API ausgestattet sind. Alle
Web-Komponenten werden in Paketen gebunden und eingesetzt. Neben Java-Servlets und JSPs können auch
andere Klassen und Klassenbibliotheken oder statische Dokumente, wie HTML, XHTML, XML oder Grafiken
repräsentiert werden.[40]
Ein J2EE konformer Web-Container muss den Servlet 2.4 sowie den JavaServer Pages (JSP) 2.0 Spezifikationen
entsprechen.
Die Servlet 2.4 Spezifikationen betreffen das Packen und Ausbringen von Web-Applikationen sowohl als
eigenständige Anwendung, als auch als Teil einer J2EE Anwendung. Des Weiteren muss der Web-Container, um
verteilte Anwendungen zu ermöglichen, das Ablegen von Objekten in der javax.servlet.http.HttpSession zulassen.
Dadurch ist der Austausch von Objekten mit anderen Teilnehmern gewährleistet.[45]
Die Java Server Pages Technologie ermöglicht es Webentwicklern und -designern, einfach zu wartende,
informationsreiche und dynamische Webseiten in bestehende Business-Anwendungen zu integrieren. Dabei
werden Benutzeroberfläche und Inhaltsgenerierung voneinander getrennt.[56]
Der JBoss Application Server in der Version 4 beinhaltet keine Eigenimplementierung eines Web-Containers
seitens des Herstellers, sondern integriert eine bereits vorhandene Web-Containerlösung, den Tomcat 5. Dieser
unterstützt die geforderten Servlet 2.4 und JSP 2.0 Spezifikationen bereits vollständig. Er wird über einen
?Deployable Service? durch das jboss-tomcat-5.0.sar-Paket im deploy Verzeichnis des JBoss zur Verfügung
gestellt. Der Dienst ist einfach über die META-INF\jboss-service.xml Datei konfigurierbar[57] und wird beim
Start des JBoss Server vom JMX Mikrokernel (siehe Kapitel 6.3) als MBean nachgeladen.[58]
Durch den modularen Aufbau des JBoss Servers lässt sich der integrierte Tomcat Web Container mit
überschaubarem Aufwand durch jeden anderen J2EE konformen Web-Container ersetzen. Es wurde die
org.jboss.web.AbstractWebContainer Klasse entwickelt, um eine möglichst einfache Implementierung dieser
Web-Container zu ermöglichen.[57]
6.2.5 EJB-Container
Enterprise Java Bean ist die Bezeichnung für die Spezifikation der serverseitigen Komponenten-Architektur der
J2EE-Plattform. Das Ziel dieser Komponenten-Architektur ist die Schaffung einer geschäftslogik-orientierten
Mittelschicht.[59] Laut der EJB 2.1 Spezifikation, welche zwar nicht direkt zum Umfang der J2EE Spezifikation
6.2.4 Web-Container
16
Leistungsanalyse_JBOSS
gehört, deren Erfüllung aber die Grundvoraussetzung für die Erfüllung der J2EE 1.4 Spezifikation ist[60],
unterscheidet man zwischen den folgenden drei EJB-Typen, die sich im Wesentlichen durch ihre
Einsatzmöglichkeiten unterscheiden[61]:
• Session Beans bilden typische Abläufe oder Vorgänge der Geschäftslogik ab und führen konkrete
Operationen auf den Datenbeständen aus.
• Entity Beans repräsentieren eine konkrete Entität innerhalb der Geschäftslogik, wie zum Beispiel ein
Kunde oder eine Rechnung, die dauerhaft z.B. in einer Datenbank gespeichert werden. Ihre Aufgabe ist es
die dem Modell zugrunde liegenden Daten zu kapseln und über einfache Schnittstellen zugänglich zu
machen.
• Message Driven Beans dienen als Empfänger von asynchronen Nachrichten und reagieren demnach auf
Ereignisse, die von Clients oder Beans ausgelöst werden. Sie modellieren ebenfalls konkrete Abläufe und
Aktionen innerhalb der Geschäftslogik.
Der EJB-Container stellt die Laufzeitumgebung dar, die für die Ausführung der EJB-Komponenten benötigt wird.
Er implementiert alle für die Ausführung von EJB-Komponenten benötigten Funktionalitäten. Die
Kommunikation zwischen dem EJB-Container und der EJB-Komponente selbst erfolgt über die in der
EJB-Spezifikation definierten Schnittstellen.[62]
Durch die geprüfte J2EE 1.4 Konformität des JBoss Application Servers 4 und somit auch seines EJB-Containers,
ist sichergestellt, dass Applikationskomponenten, zu denen auch die Enterprise Java Beans gehören, auf allen
J2EE konformen J2EE Servern lauffähig sind, so dass der Wechsel von anderen Application Servern wie
WebLogic oder Websphere zum JBoss aber auch umgekehrt kein Problem darstellt. Die EJBs können einfach von
einem J2EE Server zum anderen migriert werden.[63]
Als ein Nachteil der EJB 2.1 Spezifikation wird häufig die für Entity Beans verfügbare Container Managed
Persistence (CMP) genannt. Diese stellt Funktionalitäten zur Abspeicherung und zum Zugriff auf Entity Beans in
einer Datenbank zur Verfügung, die aber häufig nicht den Ansprüchen der Entwickler gerecht werden kann. So ist
es z.B. nicht möglich in Java definierte Vererbungshierarchien auf eine relationale Datenbank abzubilden. Um
dennoch eine Abbildung der objektorientierten Vererbungshierarchien zu ermöglichen wird deshalb häufig auf
nicht zum J2EE Standard gehörige Persistenz-Schnittstellen verwendet, wie z.B. Hibernate [64], welches im
Auslieferungsumfang des JBoss Application Servers enthalten ist. Durch die Verwendung solcher J2EE fremder
Schnittstellen wird allerdings die Portabilität der Anwendung beeinträchtigt.
Für die Ausbringung der EJBs auf dem JBoss Server ist die EJBDeployer-MBean zuständig. Um die EJB 2.1
Konformität der bereitgestellten EJB-Komponenten zu gewährleisten, bietet diese MBean über das
VerifyDeployment-Attribut die Möglichkeit die auszubringende EJB auf Validität zu überprüfen. Es wird
überprüft, ob alle benötigten Schnittstellen implementiert wurden und die richtigen Typen für Übergabeparameter
der Schnittstellen verwendet wurden. Tauchen Fehler bei der Ausbringung auf, so werden aussagekräftige
Fehlermeldungen generiert, die es dem Programmierer oder Deployer erleichtern den Mangel zu beheben.[65]
6.3 Konfiguration und Administration
6.3.1 Einleitung
Die Konfiguration und Administration hängt von der speziellen Architektur des JBoss Application Servers ab.
Denn dieser basiert nicht auf einem monolithischen Kern, sondern auf einem Mikrokernel. Grundlage für diesen
Mikrokernel ist die JMX (Java Management eXtensions) von Sun, weshalb dieser auch JMX-Mikrokernel
genannt wird. Andere Bezeichnungen für den Kern sind z.B. WebOS oder JBoss server spine. Die
Funktionalitäten der J2EE-Plattform wie persistence, transactions, security, naming, messaging, logging usw.
setzen als Dienste auf diesem Mikrokernel auf. Im Kontext von JMX heißen diese Dienste MBeans. Durch die
6.2.5 EJB-Container
17
Leistungsanalyse_JBOSS
Modularität besteht die Möglichkeit, nicht benötigte MBeans wegzulassen oder eigene MBeans zu integrieren.[66]
Abbildung 4: JBoss Architektur[67]
Für die Konfiguration und Administration sind drei Verfahren von Bedeutung. Erstens das Editieren von
verschiedenen XML-Dateien, den so genannten Deskriptoren. Zweitens die Arbeit mit der JMX-Console, sowie
der JBoss Web-Console, die beide per Web-Oberfläche erreichbar sind. Drittens die Arbeit mit dem Programm
Twiddle per Kommandozeile. Dabei gilt zu beachten, dass alle Änderungen über die Variante zwei und drei bei
einem Neustart des Servers verloren gehen und somit nicht persistent sind.[68]
6.3.2 Dateibasiert
Die zur Konfiguration relevanten XML-Dateien sind zahlreich und hängen stark davon ab, welche Dienste
konfiguriert werden sollen. Zum näheren Verständnis und zur besseren Orientierung ist an dieser Stelle die
Ordnerstruktur ausgehend vom JBoss Basisverzeichnis erläutert. Diese bezieht sich auf die Version 4.0.2, gilt
aber prinzipiell für alle Veröffentlichungen der Version 4.
Ordner
bin
client
docs
lib
server
server/all
Inhalt
Start- und Stoppskript für den JBoss Server, Skript zum Start des Programms Twiddle sowie
diverse JAR-Dateien, die von den Skripten benötigt werden.[69]
Java-Biblitheken (JAR-Dateien) die clientseitig für die Kommunikation mit dem JBoss
Application Server notwendig sind.[70]
Hier befindet sich nicht wie vermutet die JBoss Dokumentation, sondern diverse Unterordner mit
Lizenzen für alle Dienste, XML-DTDs für JBoss spezifische Deskriptoren, XSDs für die J2EE
Standard Deskriptoren.[71]
Java-Bibliotheken (JAR-Dateien), die der JBoss Application Server zum Start verwendet. Dieser
Ordner darf keine eigenen Bibliotheken enthalten.[69]
Verschiedene JBoss Konfigurationen, von denen jede in einem eigenen Unterordner abgelegt ist.
Der Name des Unterordners repräsentiert dabei den Namen der Konfiguration.[70]
Diese Konfiguration enthält alle Funktionalitäten von JBoss. Es ist oftmals einfacher mit dieser
Konfiguration zu starten und alle nicht benötigten Dienste zu entfernen, als die
Default-Konfiguration um die zusätzlich benötigten Dienste zu erweitern.[72]
6.3.1 Einleitung
18
Leistungsanalyse_JBOSS
Dies ist die Standardkonfiguration und gleichzeitig die am meisten verwendete. Dienste wie
IIOP, JAXR oder clustering fehlen.[72]
Diese Konfiguration enthält nur rudimentäre Dienste wie logging, JNDI naming services und
URL deployment scanning. Sie bietet keine Unterstützung für EJBs, Web-Anwendungen, JMS
server/minimal
oder andere höherwertige Dienste. Sie wird verwendet, wenn wenig Speicher zur Verfügung
steht oder genau kontrolliert werden soll, welche Dienste geladen werden.[72]
Tabelle 5: Ordnerstruktur ausgehend vom Basisverzeichnis
server/default
Des Weiteren enthält jede Konfiguration identische Unterordner. Die Ordner in Klammern legt der JBoss
Application Server erst dann an, wenn dieser mit entsprechender Konfiguration erstmalig gestartet wird.[73]
Ordner Inhalt
Dieser Ordner enthält verschiedene Konfigurationsdateien. Hier liegt z.B. die jboss-service.xml, die alle
conf
fixen Kerndienste für die gesamte Laufzeit des JBoss Application Servers definiert.[69]
(data) Dieser Ordner steht für Dienste zur Verfügung, die ins Dateisystem schreiben.[69]
Dieser Ordner wird vom Hot-Deployment Dienst überwacht.[69] Dateien oder Ordner, die in dieses
deploy Verzeichnis gelegt werden, werden automatisch deployed. Das gilt z.B. für EJB-Anwendungen, WARund EAR-Dateien sowie Dienste.[74]
Java-Bibliotheken, die beim Start der Konfiguration geladen werden.[74] Diese können von allen
lib
Diensten verwendet werden.[75]
Dies ist der Standardordner, in den die log-Dateien mittels des frei verfügbaren Frameworks log4j
(log)
geschrieben werden.[75]
(tmp) Diesen temporären Ordner verwendet JBoss, um deployte Anwendungen zu entpacken.[75]
(work) Dieser Ordner beinhaltet von JBoss kompilierte JSPs, falls diese zum Einsatz kommen.[75]
Tabelle 6: Ordnerstruktur ausgehend vom Verzeichnis einer Konfiguration
Um den JBoss Application Server beispielsweise mit der Konfiguration minimal zu starten, ist das Startskript mit
dem Attribut -c aufzurufen: run -c minimal. Ohne die Angabe eines Zusatzes startet JBoss mit der Konfiguration
default. Eine eigene Konfiguration kann erstellt werden, indem z.B. eine Kopie des Ordners default auf gleicher
Hierarchieebene angelegt wird. Der Name des neuen Ordners stellt den Namen der Konfiguration dar, die an das
Startskript mittels run -c zu übergeben ist.[76] Das Stoppen des Servers kann auf drei unterschiedliche Arten
erfolgen. Dieser Vorgang kann simultan zum run-Skript per shutdown eingeleitet werden. Weiterhin kann
innerhalb des durch das run-Skript hervorgerufenen Fensters die Tastenkombination STRG+C gedrückt werden.
Für die dritte Variante ist die JMX-Console zu verwenden.[77]
Da die Konfiguration jedes einzelnen Dienstes umfangreich sein kann und dies zudem nicht Kern dieser Arbeit
ist, sind an dieser Stelle nicht alle XML-Dateien aufgeführt. Ziel ist vielmehr die Identifikation einiger wichtiger
Dateien, um sich somit einen Überblick verschaffen zu können. Die Pfade in der folgenden Tabelle beziehen sich
auf das Wurzelverzeichnis einer Konfiguration.
Datei(en)
conf/jboss-service.xml
conf/jboss-minimal.xml
Funktion
Legt die Kerndienste der Konfiguration fest.
Stellt ein Beispiel für die Mindestimplementierung der Datei
jboss-service.xml dar. Die Datei wird in dieser Form für die
Konfiguration minimal verwendet.
conf/jndi.properties
6.3.2 Dateibasiert
19
Leistungsanalyse_JBOSS
conf/login-config.xml
conf/log4j.xml
conf/props/jmx-console-roles.properties,
Legt die Eigenschaften für den JNDI-Dienst des JBoss Application
Servers fest. Die Einstellungen greifen, wenn der InitialContext mit
dem Standardkonstruktor aufgerufen wird.
Dient zur Konfiguration der Sicherheit. Nähere Details finden sich hier
[[5] Sicherheit].
Dient zur Konfiguration des logging Frameworks log4j von Apache.
Dienen zur Konfiguration von Benutzern und Rollen, die beim Zugriff
auf die JMX-Console greifen.
conf/props/jmx-console-users.properties
Tabelle 7: Auswahl an Konfigurationsdateien[78]
6.3.3 Programmbasiert
Neben der Konfiguration auf Dateiebene stellt der JBoss Application Server die JMX-Console bzw. agent view
bereit, mit der der Benutzer alle Dienste direkt zur Laufzeit konfigurieren kann. Damit lassen sich die MBeans
auslesen, anzeigen und aktualisieren. Die JMX-Console ist eine Web-Oberfläche und nach dem Start des Servers
unter http://localhost:8080/jmx-console/ erreichbar.[79] Voraussetzung dafür ist, dass der dafür notwendige Dienst
in der Konfiguration enthalten ist. Bei der Konfiguration default ist dieser unter deploy/jmx-console.war
installiert.[80] Die JMX-Console eignet sich z.B. für Entwickler, zur Steuerung des Servers ist dieses Werkzeug
jedoch unzureichend. Eine Datasource (Java-Objekt für eine Datenquelle z.B. Datenbank) ist beispielsweise über
vier MBeans verteilt und bietet somit keine zentrale Konfigurationsmöglichkeit. Außerdem besteht bei einigen
MBeans nur lesender Zugriff. Hinzu kommt, wie bereits erwähnt, dass alle Änderungen nicht in den
entsprechenden XML-Dateien nachgezogen werden und somit beim Neustart des Servers verloren gehen.[81]
Für die Web-Console gilt das gleiche wie für die JMX-Console. Ist diese installiert, kann sie unter
http://localhost:8080/web-console/ aufgerufen werden. Bei der Konfiguration default befindet sich die
Anwendung unter management/console-mgr.sar. Die Web-Console ist eine Kombination aus Applet und
HTML-Seite. Sie umfasst die gleichen Zugriffsmöglichkeiten wie die JMX-Console.[82] Sie bietet im Vergleich
lediglich eine reichhaltigere Darstellungsweise.[80]
Neben der oberflächengestützten Bearbeitung der Dienste via JMX-Console bzw. Web-Console, steht zusätzlich
das Kommandozeilenwerkzeug Twiddle zur Verfügung. Die Bezeichnung ist in Anlehnung an das englische Wort
Twiddle gewählt und steht im Kontext von JBoss für das Herumdrehen von Bits über JMX. Twiddle
kommuniziert über Remote Method Invocation (RMI, Port 1099) mit dem JMX-Server. Das Skript zum Start von
Twiddle liegt im Ordner bin. Unter der Angabe des Argumentes -h bzw. --help-commands zeigt das Werkzeug
eine Hilfestellung an.[83] Gegenüber der JMX-Console bietet Twiddle den Vorteil, dass dessen Aufruf über ein
Skript erfolgen kann. Somit lassen sich Aufgaben automatisieren. Trotzdem eignet es sich genau wie die
JMX-Console nicht zur täglichen Verwaltung des Servers, da alle durchgeführten Änderungen den Neustart des
Servers nicht überdauern.[84]
Auch ohne komfortables Management-Werkzeug sollte das Bewusstsein dafür sensibilisiert sein, dass MBeans
ein mächtiges Konzept darstellen. Die Änderung einer MBean sollte nur erfolgen, wenn die genauen
Konsequenzen bekannt sind. Unachtsamkeit oder Unwissenheit können die Lauffähigkeit des Servers
beeinträchtigen.[81] Die folgende Tabelle zeigt eine Aufstellung über MBeans, die von zentraler Bedeutung sind.
MBean
jboss:name=SystemProperties,type=Service
jboss:service=JNDIView
jboss.system:service=Logging,type=Log4jService
6.3.3 Programmbasiert
Funktion
Anzeige von System Properties.
Zeigt den Inhalt des JNDI an.
Konfiguration der Logging Intensität.
20
Leistungsanalyse_JBOSS
jboss.system:service=ThreadPool
jboss.system:type=Server
jboss.system:type=ServerConfig
jboss.system:type=ServerInfo
Konfiguration der Thread Pool Size.
Informationen zum Server, z.B. Startzeit oder Version.
Informationen zum Server, z.B. Name der gestarteten
Konfiguration, diverse Pfade wie Basis-, Log-,
Deployverzeichnis usw.
Informationen zum Server, z.B. Java-Version, Hostname,
IP-Adresse des Hosts, Name und Version des
Betriebssystems.
Tabelle 8: MBeans von zentraler Bedeutung[85]
Die Macht, die hinter dem Konzept der MBeans steht, bietet zugleich auch Angriffsmöglichkeiten. Deshalb ist
eine Absicherung der gesamten JMX-Architektur zwingend erforderlich. Im Auslieferungszustand des JBoss
Application Servers sind die JMX-Console, die JBoss Web-Console sowie die HTTP- und JMX-Invoker nicht
abgesichert.[86] Konkret bedeutet dies z.B., dass ein Angreifer mittels modifizierter Google- oder Yahoo-Suche[87]
eine nicht abgesicherte JMX-Console auffinden und im Anschluss vollen Zugriff darauf haben kann.
Beispielsweise könnte er den Server herunterfahren oder schadhafte Programme über das MBean
jboss.system:service=MainDeployer einschleusen.[88]
6.4 Entwicklung und Deployment
6.4.1 Einleitung
Der JBoss Application Server basiert auf J2EE. Folglich kommen bezogen auf Entwicklung und Deployment
grundsätzlich sämtliche in diesem Standard definierte Java-Technologien zum Einsatz.
Für die Entwicklung einer Anwendung kann auf eine beliebige IDE (integrated development environment) mit
Java-Unterstützung zurückgegriffen werden, wie z.B. Eclipse.[89] Weiterhin existiert das JBoss Developer Studio
von RedHat, welches im Kern auch auf Eclipse basiert und zudem weitere Komponenten integriert.[90] Eine
Analyse und Bewertung der Entwicklung hängt neben der verwendeten IDE auch von den zusätzlich verwendeten
Hilfsprogrammen und Plugins wie z.B. Ant, JBossTools (früher JBossIDE)[91] ab, weshalb dieser Schritt entfällt.
6.4.2 Architektur
Das Deployment bzw. die Bereitstellung ist ein vorgelagerter Schritt zu der Ausführung und Verwendung einer
Anwendung. Zunächst muss der Application Server über eine deployte Anwendung informiert werden.
Anschließend kann dieser die nötigen Änderungen veranlassen, damit diese verwendet werden kann.[92] Seit der
Version 2.0 unterstützt der JBoss Application Server das so genannte Hot-Deployment sowie das Redeployment
ohne Neustart des Servers für Anwendungen vom Typ EJB-JAR, WAR, und EAR. Ab Version 3.0 gilt das Hotund Redeployment für alle Dienste des Mikrokernels, sogar wenn Abhängigkeiten zwischen diesen bestehen.[93]
Jede Deployment-Anfrage wird an den MainDeployer geschickt. Dieser entscheidet, ob die Anfrage an einen der
registrierten SubDeployer weitergeleitet wird. Dabei kümmert sich der erste passende SubDeployer um die
Abarbeitung der Anfrage. Der MainDeployer, JAR-Deployer und SAR-Deployer sind fester Bestandteil des
JBoss-Kerns, alle anderen Sub-Deployer sind MBeans und melden sich beim MainDeployer an.[94] Dadurch bleibt
die Deployment-Architektur modular.[95] Die folgende Tabelle zeigt einige der zur Verfügung stehenden
Deployer.
6.4 Entwicklung und Deployment
21
Leistungsanalyse_JBOSS
Name
Dateiendung Dateityp
AbstractWebDeployer *.war
EARDeployer
*.ear
EJBDeployer
*.jar
JARDeployer
*.jar
RARDeployer
*.rar
SARDeployer
*.sar
XSLSubDeployer
/
HARDeployer
*.har
AspectDeployer
*.aop
ClientDeployer
*.jar
BeanShellSubDeployer *.bsh
Tabelle 9: JBoss Deployer[96]
Dateiinhalt (obligatorisch) Anmerkung
Kann zusätzlich
Web Application
WEB-INF/web.xml
WEB-INF/jboss-web.xml
Archive
enthalten.
Kann zusätzlich
Enterprise
META-INF/application.xml META-INF/jboss-app.xml
Archive
enthalten.
Kann zusätzlich
Java Archive
META-INF/ejb-jar.xml
META-INF/jboss.xml
(EJB)
enthalten.
Darf keinen Ordner
Java Archive
/
namens WEB-INF
(Bibliothek)
enthalten.
Resource
META-INF/ra.xml
/
Adapter Archive
Kann auch eine Datei mit
der Endung *-service.xml
META-INF/jbosssein. Dabei wird
Service Archive
service.xml
META-INF/jbossservice.xml nicht benötigt.
Kann generell für
XML-Dateien verwendet
XML-Datei
/
werden. JBoss verwendet
diesen Deployer z.B. für
ds.xml.
Hibernate
META-INF/hibernate/
Archive
service.xml
Kann auch eine Datei mit
der Endung *-aop.xml
Aspektorientierte
META-INF/jboss-aop.xml sein. Dabei wird
Programmierung
META-INF/jbossaop.xml nicht benötigt.
Java Archive
Kann zusätzlich
(J2EE
META-INF/applicationMETA-INF/jbossclient.xml
Application
client.xml enthalten.
Clients)
Bean Shell Script /
/
Die Tabelle unterstreicht die Tatsache, dass JAR-Dateien rein technisch gesehen identisch zu EAR-, WAR- und
SAR-Dateien sind. Lediglich die Ordner-Struktur und die vorhandenen Konfigurationsdateien unterscheiden
sich.[97] JBoss unterstützt das Arbitrary Nesting bzw. Russian Doll Packaging. Das heißt, dass jeder beliebige
Archivtyp in einem anderen Archivtyp geschachtelt sein kann, also z.B. eine EAR-Datei in einer EAR-Datei oder
eine WAR-Datei in einer EAR-Datei.[98]
6.4.2 Architektur
22
Leistungsanalyse_JBOSS
6.4.3 Prozess
Genau wie bei er Konfiguration und Administration [siehe [6]] kann das Deployment auf Dateiebene oder per
Aufruf des MBean jboss.system:service=MainDeployer mittels Twiddle oder JMX-Console erfolgen. Auch hier
besteht die Problematik, dass das Deployment per MBean nicht persistent ist. Das heißt, dass keinerlei Dateien
oder Ordner im JBoss-Verzeichnis verändert werden und nach einem Neustart des Servers die Anwendung nicht
mehr deployed ist.[95]
Stattdessen empfiehlt es sich, die Anwendung manuell im Deploy-Verzeichnis der jeweiligen Konfiguration zu
platzieren. Zur Laufzeit überwacht der Deployment-Scanner das Verzeichnis in periodischen Abständen und
merkt, wenn eine Anwendung in dieses gelegt, eine Anwendung aus diesem gelöscht oder eine Anwendung durch
eine neue Version ersetzt wird.[95] Dafür ist das MBean jboss.deployment:flavor=URL,type=DeploymentScanner
verantwortlich.[99] Es besteht die Möglichkeit, entweder die Archivdatei in das Deploy-Verzeichnis zu legen oder
den gesamten Inhalt des Archives im Deploy-Verzeichnis zu entpacken. Das Entpacken des Archives funktioniert
mit jeder Java-Archivdatei.[98]
Die erste Variante bietet den Vorteil, dass lediglich eine Datei verwendet wird. Ersetzt man jedoch eine
Archivdatei durch eine neue Version, wird die alte zuerst undeployed bzw. gelöscht und die neue danach wieder
deployed. In einer Produktivumgebung verlieren dadurch alle verbundenen Benutzer die Verbindung zur
Anwendung, weshalb äußerste Vorsicht geboten ist.[95] Beim Deployment einer Archivdatei entpackt JBoss den
Inhalt in das Verzeichnis tmp/deploy der jeweiligen Konfiguration. In diesem Verzeichnis können zwar
Änderungen durchgeführt werden, die dann nicht zu einem neuen Deployment führen, allerdings werden die
Änderungen auch nur für statische Web-Inhalte und JSP-Dateien übernommen und für Deployment-Deskriptoren
beispielsweise nicht.[100]
Das Extrahieren des kompletten Archives in das Deploy-Verzeichnis der jeweiligen Konfiguration stellt die
zweite Variante dar und bietet den Vorteil, dass JBoss diesen Schritt nicht selbst mit Hilfe des Verzeichnisses
tmp/deploy durchführen muss. Außerdem werden auch die Änderungen an Deployment-Deskriptoren
übernommen, allerdings wird dabei die Anwendung automatisch neu deployed. Dadurch werden alle mit der
Anwendung verbundenen Benutzer auch hier getrennt. Bei Änderungen an statischen Web-Inhalten und
JSP-Dateien entfällt wie bei der ersten Variante das neue Deployen. Ein wesentlicher Nachteil gegenüber der
ersten Variante liegt darin, dass mit einer ganzen Ordnerstruktur anstatt mit einer einzigen Archivdatei gearbeitet
wird.[98]
6.5 Performance, Skalierbarkeit und Verfügbarkeit
6.5.1 Einleitung
Die am häufigsten genannten Kennzahlen für Performance sind die Antwortzeit und der Durchsatz. Die
Antwortzeit beschreibt, wie schnell das System auf die Anforderungen eines Benutzers reagiert. Dabei kann sie
von einer Anforderung zur nächsten sehr unterschiedlich ausfallen, selbst wenn es sich um dieselbe Anforderung
handelt. Daher wird meistens die durchschnittliche Antwortzeit für eine konkrete Anforderung ausgewertet und
nicht die Einzelzeiten. Man unterscheidet nochmals zwischen Verarbeitungszeit und Roundtrip-Antwortzeit. Die
Verarbeitungszeit ist die Zeitdauer von dem Moment, in dem das System die Anforderung erstmals empfängt, bis
zu dem Moment, in dem es die Antwort zurückgibt. Die Roundtrip-Antwortzeit umfasst die Latenz, also die Zeit,
die es braucht, um die Anforderung des Benutzers von dessen Eingabegerät zum System und wieder zurück zu
transportieren. Daher ist die Antwortzeit immer länger als die Verarbeitungszeit und hängt in der Regel von dem
Kommunikationsnetzwerk zwischen Benutzer und System ab. Der Durchsatz gibt an, wie viele Anforderungen
6.4.3 Prozess
23
Leistungsanalyse_JBOSS
das System pro Zeiteinheit bewältigen kann.[101]
Im Folgenden sind die Komponenten genannt, die einen Einfluss auf die Antwortzeit und den Durchsatz des
Systems haben:
• Hardware und Netzwerk
• Betriebssystem
• Java Virtual Machine
• JBoss Application Server
• die eigene Anwendung[102]
Entsprechen Antwortzeit und Durchsatz nicht oder nicht mehr den geforderten Werten, welche meistens zu
Beginn eines Projektes in so genannten Service Level Agreements (SLAs) definiert werden, so kann die Leistung
eines Systems durch Skalierung verbessert werden. Dabei unterscheidet man zwischen vertikaler und horizontaler
Skalierung.[101]
Unter vertikaler Skalierung versteht man das Hinzufügen von Ressourcen innerhalb einer logischen Einheit, um
die Kapazität zu erhöhen. Ein Beispiel könnte das Hinzufügen von CPUs zu einem existierenden Server sein oder
die Erweiterung des Speicherplatzes durch das Hinzufügen von Festplatten zu einer existierenden
RAID/SAN-Installation.
Die horizontale Skalierung beschreibt das Hinzufügen mehrerer logischer Ressourcen-Einheiten, die dazu
gebracht werden, wie eine einzige Einheit zu arbeiten. Die meisten Cluster-Lösungen, verteilten Dateisysteme
und Lastverteiler dienen der horizontalen Skalierung.[103]
6.5.2 Clustering
Bereits kleine bis mittlere Applikationen können einen einzelnen Application Server komplett auslasten. So kann
es zu Antwortzeiten kommen, die für den Benutzer als störend wahrgenommen werden. In diesem Fall werden die
Application Server meist redundant ausgelegt. Das heißt, dass nicht mehr ein einzelner Rechner die
Clientanfragen bedient, sondern dass sich eine Gruppe von Application Servern die Clientanfragen teilen. Dieses
Verfahren wird auch als Clustering bezeichnet. JBoss bietet diesbezüglich eine Menge an Funktionalitäten.[104]
Die J2EE Spezifikation beinhaltet dabei selbst keine Standards, die das Clustern von Anwendungen betreffen.
Jeder Application Server implementiert das Clustern auf seine eigene Art und Weise, und bietet dazu
unterschiedliche Dienste an.[105]
6.5.2.1 Session-Replikation
Der JBoss Application Server kann sowohl HTTP-Sessions als auch EJB Sessions replizieren.[106] HTTP-Sessions
können repliziert werden, um den Status eines Web-Clients, der mit dem Web-Container verbunden ist, bzw. der
eine aktive Session besitzt, auch an die anderen Web-Container im Cluster weiterzugeben. Bei Ausfall eines
Web-Containers kann die Session auf einem anderen Web-Container fortgesetzt werden. Wird der JBoss
Application Server im Clusterbetrieb verwendet, so findet automatisch die Replikation der HTTP-Sessions unter
den Web-Containern statt.[107] Allerdings muss die Web-Anwendung die Session-Replikation explizit
unterstützen. Dazu muss das <distributable/> Element in die WEB-INF/web.xml Datei eingetragen sein.[108] Auch
alle EJB Typen, Stateless Session Beans, Stateful Session Beans sowie Entity Beans können im Clusterbetrieb des
JBoss repliziert werden. Sie müssen jedoch ebenfalls explizit als replizierbar gekennzeichnet sein. Dies geschieht
durch das Tag <clustered>true</clustered> im Deployment-Deskriptor jboss.xml.[109] Es ist von Projekt zu
Projekt zu entscheiden, welche Sessions wirklich repliziert werden sollen und welche nicht. Natürlich könnte man
6.5.1 Einleitung
24
Leistungsanalyse_JBOSS
einfach ohne Rücksicht auf Verluste alle HTTP-Sessions und alle EJB-Sessions auf allen Servern replizieren
lassen. Es gilt jedoch, je mehr Sessions innerhalb eines Clusters repliziert werden müssen, desto mehr hat JBoss
mit administrativen Dingen zu tun. Praxisberichte zeigen, dass die einzelnen JBoss innerhalb eines Clusters ab
einer gewissen Applikationsgröße sehr intensiv miteinander kommunizieren, so dass die Performance der
Gesamtapplikation drastisch sinkt.[106]
6.5.2.2 JNDI
JNDI steht für Java Naming and Directory Interface. Analog zu einem Telefonbuch können beim JNDI-Dienst für
jedes Objekt eine Anschrift, d.h. die Referenz des Objektes, welches sich auf einem beliebigen Rechner und in
einem beliebigen Prozess befinden kann, sowie sein symbolischer Name hinterlegt sein. Die Anmeldung eines
Objektes beim JNDI-Dienst wird automatisch durch den EJB-Container vorgenommen.[110] Jeder JBoss Server
stellt einen eigenen lokalen JNDI-Dienst zur Verfügung, in der die lokalen EJBs registriert sind. Wird nun JBoss
als Cluster eingesetzt, so ist es von Vorteil, wenn die Applikationen, die die EJBs kontaktieren, diese nicht erst
auf den einzelnen Rechnern des Clusterverbunds suchen müssen.[111]
Dazu wurde der HA-JNDI (High Availability JNDI) Dienst entwickelt, welcher auf jedem Cluster Knoten
ausgeführt wird und diesen ermöglicht, sich mit Hilfe von JGroups gegenseitig zu erkennen und miteinander zu
kommunizieren. Dieser Dienst bietet Ausfallsicherheit für an den Client gebundene Objekte, welche durch einen
replizierten Cache, der innerhalb des JBoss Cache implementiert ist, ermöglicht wird. Die Ausfallsicherheit
beschränkt sich allerdings lediglich auf das JNDI Lookup, die Ausfallsicherheit einer EJB selbst muss anderweitig
garantiert werden. Objekte, die an den lokalen JNDI Dienst gebunden sind, werden nicht repliziert.[112]
Bei einem Lookup seitens des Clients wird die Anfrage immer an einen Rechner innerhalb des Clusterverbunds
gerichtet. Dort delegiert HA-JNDI die Anfrage an das normale JNDI des jeweiligen Rechners weiter. Befindet
sich das gesuchte Objekt nicht auf diesem Rechner, so delegiert HA-JNDI die Anfrage an die übrigen Rechner im
Clusterverbund. Auf jedem einzelnen Rechner wiederholt sich die Suche nach dem Objekt.[113]
6.5.2.3 Konfiguration
Um einen JBoss Cluster zu erstellen, sollten mehrere JBoss Instanzen innerhalb eines Netzwerkes existieren.
Diese werden durch die Zuweisung zu einer so genannten ?Partition? gruppiert. Innerhalb eines Netzwerkes
können mehrere Cluster definiert werden, die durch einen eindeutigen Partitionsnamen identifizierbar sein
müssen. Generell ist es möglich, dass ein JBoss Server Mitglied mehrerer Cluster sein kann, jedoch ist dies
aufgrund der erschwerten Administration nicht empfehlenswert. Leider lässt die Version 4 des JBoss keine
Unterpartitionen zu. Dies bedeutet, dass z.B. bei Einsatz von 10 JBoss Servern, jeder Server eine Replikation aller
9 weiteren Server beinhaltet. Der Abgleich untereinander führt zu enormem Performanceverlust. Es würde Sinn
machen kleinere Untergruppen zu bilden, so dass nur die Mitglieder der Untergruppen sich untereinander
replizieren. Alle Untergruppen zusammen würden jedoch weiterhin als eine Einheit nach außen erscheinen. Diese
Funktionalität ist erst für die folgenden Versionen des JBoss vorgesehen.[107]
Die Ausgangsbasis für einen JBoss Cluster ist der ?all?-Modus, in dem der JBoss Application Server gestartet
werden kann. Es wird empfohlen, dass eine JBoss Instanz, die innerhalb eines Clusters agieren soll, unter Angabe
des Rechnernamens bzw. der IP-Adresse gestartet wird. Der Aufruf könnte dann wie folgt aussehen:
c:\j2ee\jboss\bin\run -c all --host=myhost. Werden beispielsweise zwei JBoss Instanzen im Netzwerk im
?all?-Modus gestartet, so finden diese sich automatisch, ohne dass eine weitere Konfiguration nötig ist.[114] Dies
liegt an den vorhandenen Default-Werten in der Datei cluster-config.xml im Verzeichnis \server\all\deploy. In
dieser Datei werden verschiedene MBeans konfiguriert, welche administrative Funktionalitäten bezüglich des
Clusterns vornehmen.[115]
6.5.2.1 Session-Replikation
25
Leistungsanalyse_JBOSS
Die ClusterPartition MBean spezifiziert, welchem Cluster bzw. welcher Partition eine JBoss Server Instanz
beitritt. Alle Instanzen, die die gleiche ClusterPartition MBean Konfiguration haben, gehören zum selben
Cluster..[107] Die folgende Tabelle zeigt die Attribute der ClusterPartition MBean:[115]
Attribut
PartitionName
NodeAddress
Funktion
Gibt den eindeutigen Namen der Partition an.
Dient der Bindung des Cluster-Knotens an eine IP-Adresse.
Fällt ein JBoss im Clusterverbund aus, so kann dies in Erfahrung gebracht werden, indem
DeadlockDetection
der Wert auf True gesetzt wird.
Wird der Zustand einer EJB auf einen anderen Server repliziert, so benötigt dies eine
StateTransferTimeout gewisse Zeit. Dieser Parameter legt die maximale Zeit fest, die dieser Vorgang dauern
darf.
JBoss verwendet das Komponentenmodell JGroups, um innerhalb des Clusters zu
kommunizieren. JGroups benötigt diverse Initialisierungsparameter, die innerhalb dieses
PartitionConfig
Attributes vorgegeben werden. So wird z.B. die Multicast-Adresse oder die Dauer eines
Pings, der zum Auffinden neuer Mitglieder gesendet wird, festgelegt.
Tabelle 10: Attribute der ClusterPartition MBean
Die HANamingService MBean legt die Einstellungen für den HA-JNDI Dienst fest. Dieser ist immer eng mit
einer Partition verbunden. Auch diese MBean wird über Attribute konfiguriert[116], von denen die wichtigsten in
der folgenden Tabelle aufgelistet werden:
Attribut
PartitionName
Funktion
Gibt den eindeutigen Namen der Partition an, für die der Dienst zuständig ist.[116]
Dient der Bindung des Dienstes an eine IP-Adresse, an der er auf Client-Anfragen
BindAddress
wartet.[116]
Port
Port, den ein Client verwendet, um einen JNDI-Server zu finden.[101]
Nachdem der Server ermittelt wurde, verwendet der Client diesen Port, um mit dem
RmiPort
JNDI-Dienst zu kommunizieren und Namensauflösungen zu tätigen.[101]
Legt fest, wie viele unbehandelte Namensauflösungen in der Warteschlange stehen
backlog
dürfen, bevor Clients die Nachricht ?connection refused? erhalten.[101]
Multicast Adresse zum Versand von Namensauflösungsanfragen an andere
autoDiscoveryAddress
HA-JNDI-Instanzen.[116]
Tabelle 11: Attribute der HANamingService MBean
Mit Hilfe der HASessionStateService MBean wird der Zustandsreplikationsmechanismus spezifiziert, der die
Zustände von Stateful Session Beans innerhalb des Clusters repliziert.[116] Dieser Dienst wird durch die folgenden
Attribute konfiguriert.[107]:
Attribut
PartitionName
JndiName
BeanCleaningDelay
Funktion
Gibt den eindeutigen Namen der Partition an, für die der Dienst zuständig ist.
Gibt den JNDI Namen vor, unter dem der HASessionState Dienst gebunden wird.
Gibt die Zeit in Millisekunden an, nach der der HASessionState Dienst einen Status löschen
kann, welcher nicht modifiziert wurde. Dies ist nötig, damit bei Ausfall eines für eine
Stateful Session Bean zuständigen Servers die Bean wieder von anderen Servern verwendet
6.5.2.3 Konfiguration
26
Leistungsanalyse_JBOSS
werden kann.
Tabelle 12: Attribute der HASessionStateService MBean
6.5.3 Verfügbarkeit
Um die Hochverfügbarkeit einer Anwendung sicherzustellen, ist zunächst einmal wichtig, über welchen Weg und
auf welche Art und Weise die einzelnen Clients letztlich auf den Cluster bzw. die einzelnen Knoten zugreifen.
Abhängig davon muss eine Strategie angewandt werden, die darauf reagiert, wenn ein Knoten des Clusters nicht
mehr erreichbar ist.[117]
6.5.3.1 Smart Stubs
Smart Stubs werden häufig auch als Proxy oder Interceptor bezeichnet. Die meisten Remote Services, die vom
JBoss Application Server zur Verfügung gestellt werden, dazu gehören JNDI, EJB, RMI und JBoss Remoting,
stellen dem Client ein Smart Stub Objekt zur Verfügung, welches auf den Client geladen wird.[107] Erfragt ein
Client beispielsweise das Home-Interface einer EJB innerhalb eines Clusters, so sorgt das dynamische
ClassLoading von RMI dafür, dass der zugehörige Smart Stub der EJB an den Client übertragen wird, sobald
dieser die create-Methode des Home-Interfaces aufruft. Innerhalb dieses von JBoss generierten Smart Stubs
befindet sich der notwendige Code, um die EJB innerhalb des Clusters zu finden.[114] Der Smart Stub enthält auch
Informationen über das Cluster, welche bei jeder Verbindung mit einem aktiven Knoten aktualisiert werden.
Dieser kennt die IP Adressen aller verfügbaren Server Knoten, den Algorithmus zur Lastenverteilung zwischen
den Knoten, und er weiß, wie er bei Ausfall eines Servers zu reagieren hat.[107]
6.5.3.2 Load Balancer
Wird eine Web-Applikation auf einem JBoss Cluster bereitgestellt, so können keine Smart Stubs für das Load
Balancing und die Ausfallsicherheit sorgen. In diesem Fall wird ein Load Balancer benötigt, der alle Requests
verarbeitet und an die entsprechenden Clusterknoten weiterleitet. Der Load Balancer ist in der Regel selbst ein
Mitglied des Clusters und kennt dessen Konfiguration und Ausfallregeln. Der Client selbst kennt nur den Load
Balancer und wendet sich ausschließlich an diesen.[107] Es gibt sowohl hardware- als auch softwarebasierte Load
Balancer. Ein typisches Exemplar für eine softwarebasierte Lösung ist das mod_jk Modul von Apache für
Tomcat, ein typisches hardwarebasiertes Pendant ist Ciscos CSS 11150.[118]
6.6 Interoperabilität
6.6.1 Einleitung
In Unternehmen zielen bestimmte Systemintegrationsstrategien in Bezug auf Anwendungssysteme darauf ab, dass
alte, neue und auch dazu gekaufte Anwendungen integriert werden können[119]. Dadurch erfährt die
Interoperabilität heutzutage immer mehr an Bedeutung. Durch sie soll gewährleistet werden, dass in einer
heterogenen Systemlandschaft Informationen herstellerübergreifend zwischen zwei oder mehreren Komponenten
ausgetauscht und auch weiter verarbeitet werden können[120]. Der Austausch von Informationen muss sich dabei
aber nicht nur auf firmeninterne Systeme beschränken, sondern kann auch mit entfernten Partnern über das
Internet stattfinden. In Verbindung mit Softwaresystemen wird die Interoperabilität durch folgende 5 Faktoren
bestimmt[121]:
• Datenkompatibilität
6.5.3 Verfügbarkeit
27
Leistungsanalyse_JBOSS
• Anpassungsfähigkeit der Geschäftsprozesse
• Anbindung an bestehende (Legacy)-Systeme
• Steuerbarkeit der Transaktionen
• Sicherheit des Netzes
Wie bereits in Kapitel 6.2 erwähnt, ist der JBoss Application Server 4.x mit der J2EE Version 1.4 konform und
entspricht durch die Verwendung von Standards der in der Spezifikation geforderten Interoperabilität von
Anwendungssystemen. Aber auch Frameworks und genormte Schnittstellen, wie zum Beispiel der Interface
Definition Language (IDL) und der Extensible Markup Language (XML)[122] tragen dazu bei, dass unter J2EE
entwickelte Anwendungen zueinander kompatibel sind und eine entsprechende Portabilität gegenüber anderen
Betriebssystemen aufweisen.
6.6.2 Serviceorientierte Architekturen
Werden Anwendungssysteme in der eigenen Firmenumgebung oder auch über diese hinweg zu einer
zusammenhängenden Architektur integriert, so kommt man zu dem Ansatz einer serviceorientierten Architektur
(SOA). Eine SOA ist aber nicht nur eine reine technische Architektur, sondern ist ebenfalls ein
Geschäftsmodell-Konzept, ein Teil der IT-Infrastruktur und ein Programmierschema[123]. Die miteinander
agierenden Systeme verwenden bestimmte Dienste (Services), um miteinander zu kommunizieren und um
benötigte Daten auszutauschen. Diese Services beruhen auf vorher gekapselte Funktionen der einzelnen Systeme,
die wiederum zu einem übergeordneten Service zusammengefügt werden können.
6.6.3 Technologien
6.6.1 Einleitung
28
Leistungsanalyse_JBOSS
Abbildung 5: J2EE-Interoperabilität[124]
In den folgenden Abschnitten werden Technologien und Standards innerhalb des JBoss Application Servers
genannt, mit denen eine Unabhängigkeit zu den verwendeten Programmiersprachen und Betriebssystemen
umgesetzt werden kann.
6.6.3.1 Web Services
Mit Hilfe von Web Services kann eine SOA umgesetzt werden, da diese nicht an eine bestimmte Technologie
gebunden und auch mit den unterschiedlichsten Entwicklungsumgebungen realisierbar ist. Aber ebenso werden
Web Services in Form von Remote Procedure Calls (RPC) oder einem Representational State Transfer (REST)
verwendet[125]. Ein Client bekommt so den Zugriff auf bereitgestellte Funktionen bzw. Methoden, die der Server
implementieren muss.
Ein Web Service ist dabei nichts anderes, als eine Sammlung von bereits schon länger existierender Standards, die
miteinander genutzt werden. Dies sind in der Regel:
• HTTP (Hypertext Transfer Protocol - als Übertragungsprotokoll im Internet / Intranet)
• SOAP (Simple Object Access Protocol - als Kommunikationsprotokoll)
• XML (Extensible Markup Language - als Dateiformat in der die übertragenen Nachrichten vorliegen)
• WSDL (Web Services Description Language - als Web Service Beschreibungssprache)
• UDDI (Universal Description, Discovery and Integration - als Verzeichnisdienst)
6.6.3 Technologien
29
Leistungsanalyse_JBOSS
Auf eine genauere Erläuterung zu diesen Standards soll in diesem Kontext verzichtet werden.
Mit Hilfe dieser Standards ist es möglich, einen Web Service, der in einer Sprache geschrieben wurde, in einer
anderen zu benutzen und somit die Interoperabilität zu gewährleisten. Die Datenkompatibilität der verwendeten
Sprachen wird mittels eines Wrappers erzeugt, der die erhaltenen Daten bzw. Informationen aus der XML-Datei
auflöst und in die benötigte Programmiersprache ?übersetzt?. Für die Kontrolle, ob eine Web Service von einem
bestimmten Client aufgerufen werden darf, können so genannte Handler eingesetzt werden, die die
Zugriffsberechtigungen des Client prüfen.
Die in den JBoss Application Server 4 integrierte Web Service Engine ist die Web Service Enterprise Edition
(WS4EE), oder auch JBossWS genannt. Diese ist zu ca. 75 Prozent an das Open-Source-Framework AXIS
angelehnt und wurde durch die Integration des in der J2EE-Spezifikation 1.4 vorgegebenen Komponentenmodells
Java API for XML Remote Procedure Calls (JAX-RPC) erweitert.[126]
Die Spezifikation JAX-RPC ist dabei die Schnittstelle aus der J2EE-Spezifikation, die benötigt wird, um Web
Services zu erstellen. Um Web Services für den JBoss Application Server zu implementieren, werden zum
Beispiel Enterprise Java Beans (EJBs) nach entsprechenden Vorgaben dazu befähigt, als Web Service zu agieren
und ermöglichen dadurch die Interoperabilität zu anderen Herstellern.[126] Neben der Überführung einer EJB in
einen Web Service kann auch ein Servlet zur Entwicklung eines Web Services benutzt werden. Die
Programmlogik ist dann aber nicht mehr im Application Container des JBoss realisiert, sondern ist im Web
Container des in den JBoss Application Server integrierten Tomcats zu finden. Auf diese Art und Weise können
zum Beispiel Applikationen erstellt werden, die keine EJB-Administration implementiert haben müssen.[126]
Mit der Java Enterprise Edition 5 und der Einführung des EJB-3.0-Standards ist die Entwicklung eines Web
Services weiter vereinfacht worden. So sind zum Beispiel die Konfigurationsdatei webservice.xml und externe
Tools, wie zum Beispiel das Java Webservice Deployment Pack, nicht mehr unbedingt nötig. Vielmehr kann man
nun entsprechende Stateless Session Beans bzw. normale Java Objekte (POJOs - Plain Old Java Objects) mit
Annotations wie zum Beispiel @WebService oder @WebMethod ? entsprechend der JAX-WS 2.0-Spezifikation versehen, um diese als Web Service zu deklarieren. Diese werden dann vom Application Server erkannt, der
weitere Schritte übernimmt. Dies ist zum Beispiel die automatische Generierung der WSDL-Datei während des
Deployens des Web Services.[127]
Wie bereits erwähnt, beschränken sich die Zugriffe von ?außen? nicht nur auf die Verwendung von Web Services.
Neben diesen ist es ebenso möglich, EJBs über die Common Object Request Broker Architecture (CORBA) der
Object Management Group (OMG) oder über die Remote Method Invocation (RMI) von Sun Microsystems
anzusprechen.[128]
6.6.3.2 CORBA und RMI
Die Middleware-Technologie CORBA ist ebenso wie Web Services darauf ausgelegt, interoperabel mit einem
Partner zu kommunizieren, der nicht in Java geschrieben wurde. Die Sprache, in der CORBA seine Interfaces
beschreibt, ist die Interface Definition Language (IDL). Mit dieser wird ebenfalls wie bei der WSDL-Datei bei
Web Services beschrieben, wie Objekte und Methoden angesprochen werden können bzw. welche Parameter oder
Datentypen erwartet werden.[129] Bei der Benutzung von RMI ist eine weitere Beschreibungssprache nicht
notwendig, da dieses hauptsächlich für die Kommunikation von einem Java-Programm zu einem anderen
Java-Programm gedacht ist. Für den Transport werden, anders als bei Web Services per SOAP, die Daten bei
CORBA mittels IIOP (Internet Inter-ORB Protocol) und bei RMI über das JRMP (Java Remote Method Protocol)
bzw. auch das IIOP übertragen.[129] Sun Mircosystems hat im Jahr 2001 IIOP in RMI integriert, um kompatibel zu
CORBA zu sein und ebenfalls mit diesem Protokoll mit CORBA-Anwendungen kommunizieren zu können.[130]
6.6.3.1 Web Services
30
Leistungsanalyse_JBOSS
Bei der Verwendung der unterschiedlichen Technologien sollte man in Erwägung ziehen, ob eine Interoperabilität
zwischen den verschiedenen Applikationen gebraucht wird. Sollte man diese nicht benötigen, zum Beispiel in
dem Fall, dass das Client- und Serverprogramm beide in Java geschrieben sind, dann sollte man das in der Regel
performantere Duo RMI / JRMP benutzen.[131]
In Sachen Performance verhält sich der JBoss Application Server bei der Nutzung von RMI / JRMP aber anders,
als man erwartet. Die beim JBoss verwendeten EJBs arbeiten im Standard über RMI / JRMP. Kommunizieren
diese aber wiederum über RMI / IIOP, so ergibt sich ein Geschwindigkeitszuwachs von ca. 30 Prozent. Dies steht
in einem erheblichen Widerspruch zu den allgemeinen Erfahrungen, dass Kommunikation per IIOP langsamer ist,
als die über JRMP.[132] Wegen der besseren Eigenschaften der Protokollierung des Datenstroms wird aber meist
die Verwendung von IIOP bevorzugt.[131]
Ob nun eine Kommunikation über einen Web Service oder über RMI / IIOP bzw. RMI / JRMP zwecks
Interoperabilität implementiert werden soll, hängt von weiteren Fragen ab, wie zum Beispiel:
• Ist es sicher, den Application Server direkt an das Internet anzubinden?
• Arbeitet der Kommunikationspartner ebenso mit Java?
• Ist mit allen Partnern eine Kommunikation per IIOP möglich?[133]
Sollte eine dieser drei Fragen mit ?Nein? beantwortet werden, so sollte in Erwägung gezogen werden, die
gewünschte Applikation als einen Web Service zu implementieren und zur Verfügung zu stellen.[133]
6.7 Sicherheit
6.7.1 Einleitung
Das Thema Sicherheit spielt bei der Entwicklung von Anwendungen grundsätzlich eine wichtige Rolle. Vor allem
im Bereich von Unternehmensanwendungen können Sicherheitslücken sowie der Verlust von sensiblen Daten
kostspielig sein. Der Schutz vor unbefugtem Zugriff muss zum einen für die Informationen innerhalb der
Anwendung und zum anderen für die Umgebung, in der diese läuft, sichergestellt sein.[134] Da die Sicherheit sich
durch die gesamte Anwendung oder das gesamte System durchzieht und somit ein globaler Aspekt ist, spricht
man auch von einem Cross-Cutting Concern.[135]
Die drei wesentlichen Aspekte bzgl. der Sicherheit sind Authentifizierung, Autorisierung (Zugriffskontrolle) und
Verbindung bzw. Kommunikation. Die Authentifizierung ist die Validierung der Benutzeridentität meist in Form
von Benutzername und Passwort. Nach erfolgreicher Authentifizierung wird bei der Autorisierung überprüft,
welche Aktionen der Benutzer im System durchführen darf. Eine sichere Kommunikation bzw. Verbindung ist
z.B. mit Hilfe von Verschlüsselungsverfahren und Sicherheitszertifikaten zu erreichen.[136] Der letzte Aspekt ist
besonders bei der Nutzung eines offenen Mediums wie dem Internet wichtig. Im Rahmen der Kommunikation
sind die drei Kriterien Vertraulichkeit, Integrität der Daten und Integrität des Absenders/Empfängers relevant.
Vertraulichkeit heißt, dass die Daten durch Dritte nicht mitgelesen werden. Unter Integrität der Daten versteht
man, dass diese nicht durch Dritte manipuliert werden. Die Integrität des Absenders/Empfängers bedeutet, dass
die Person wirklich die ist, für die sie sich ausgibt.[137]
Es gilt zu überprüfen, wie die oben genannten Kriterien beim JBoss Application Server umgesetzt sind und
welche Standards z.B. bezogen auf Protokolle und Verschlüsselungsverfahren dieser unterstützt. Weiterhin von
Interesse ist, wie die Konfiguration der Sicherheit erfolgt und welche Bestandteile eines Application Servers
abgesichert werden können, also z.B. Web-Anwendungen, EJBs, Webservices usw.
6.6.3.2 CORBA und RMI
31
Leistungsanalyse_JBOSS
6.7.2 JBossSX
Der JBoss Application Server beinhaltet ein eigenständiges Modul für die Sicherheit aller J2EE-Technologien, die
innerhalb des Application Servers laufen. Dieses Modul heißt JBoss Security Extension (JBossSX) und basiert auf
der JAAS-API (Java Authentication and Authorization Service).[138]
Die JAAS-API wurde zuerst als Erweiterung für JDK 1.3 veröffentlicht. Ab JDK 1.4 gehörte diese zum
Basisumfang dazu. Sie deckt sowohl Authentifizierung als auch Autorisierung ab. JBossSX baut jedoch lediglich
auf den Funktionalitäten im Bereich der Authentifizierung auf. Im Wesentlichen sind dies die folgenden
Elemente:
• Subject (javax.security.auth.Subject)
• Principal (java.security.Principal)
• Callback (javax.security.auth.callback.Callback)
• CallbackHandler (javax.security.auth.callback.CallbackHandler)
• Configuration (javax.security.auth.login.Configuration)
• LoginContext (javax.security.auth.login.LoginContext)
• LoginModule (javax.security.auth.spi.LoginModule)[139]
Ein näherer Blick in die Dokumentation des JDK 1.4 zeigt, dass die meisten der genannten Elemente keine
vollimplementierten Java-Klassen sind.[140] Principal, Callback, CallbackHandler, LoginModule sind Interfaces
und Configuration ist eine abstrakte Klasse. Dies unterstreicht die Tatsache, dass JAAS eine Abstraktionsschicht
zwischen die Anwendung und den darunterliegenden Sicherheitsmechanismus legt und somit eine
Austauschbarkeit herstellt, ohne dabei das gesamte System zu beeinflussen.[141] Lediglich LoginContext und
Subject sind ausprogrammierte Java-Klassen, wobei von der Klasse Subject keine weiteren Klassen abgeleitet
werden können, da diese um das Schlüsselwort final erweitert ist. Dies deutet darauf hin, dass die beiden
Elemente fundamental sind und von jedem Application Server in dieser Form genutzt werden. Dies gilt vor allem
für die Klasse Subject, die die zentrale Klasse von JAAS darstellt.[142] Ein Subject ist eine Person oder ein
System, die bzw. das sich authentifizieren möchte. Einem Subject können ein oder mehrere Principals zugeordnet
sein. Ein Principal ist eine eindeutige Identität z.B. in Form einer ID, digitalen Signatur oder
Kreditkartennummer.[143]
6.7.2.1 Authentifizierung und Autorisierung
6.7.2 JBossSX
32
Leistungsanalyse_JBOSS
Abbildung 6: JBossSX[144]
Die J2EE-Spezifikation schreibt nicht vor, wo die Daten zur Authentifizierung abgelegt, auf welche Art diese
herangezogen und wie diese validiert werden müssen. Darüber entscheiden die Anbieter der einzelnen
Application Server selbst und stellen dementsprechend eine eigene Implementierung bereit. Im Fall von JBossSX
werden alle Anfragen innerhalb des Application Servers an eine Security Domain bzw. Security Realm
weitergegeben. Dies ist für alle Komponenten des Application Servers wie z.B. Web-Anwendungen,
EJB-Anwendungen, JMS queues/topics einheitlich geregelt.[138] Jede dieser Komponenten kann dabei einer
unterschiedlichen Security Domain, jedoch zu einem Zeitpunkt immer nur einer einzigen, zugeordnet sein. Eine
Security Domain ist die zentrale Quelle für Benutzer, Passwörter sowie die den Benutzern zugeordneten
Rollen.[145] Beim JBoss Application Server sind Security Domains über die Datei login-config.xml zu
konfigurieren.[146] In dieser Datei stehen in der Regel keine direkten Informationen für die Authentifizierung und
Autorisierung, sondern darin sind lediglich die Orte aufgeführt, wo diese Informationen abgefragt werden können.
JAAS unterstützt Security Domains, die auf folgenden Techniken beruhen:
• DBMS (Datenbankmanagementsystem)
• Application Server
• LDAP (Lightweight Directory Access Protocol)
• Betriebssystem (UNIX oder Windows NT/2000)
• Dateisystem
• JNDI (Java Naming and Directory Interface)
• Biometrie[147]
JBossSX unterstützt standardmäßig Security Domains auf der Basis von DBMS, LDAP und Dateisystem.[148]
Innerhalb einer Security Domain muss je nach gewünschter Technik ein entsprechendes LoginModule verwendet
werden. Die gebräuchlichsten dieser Module befinden sich in den Java-Paketen org.jboss.security.auth.spi,
org.jboss.security.src.jaas und org.jboss.security. Für eine Authentifizierung und Autorisierung mittels DBMS,
LDAP oder Dateisystem eignen sich unter anderem die Klassen DatabaseServerLoginModule, LdapLoginModule
und UsersRolesLoginModule in der genannten Reihenfolge.[149] Innerhalb einer Security Domain können auch
mehrere LoginModules verwendet werden, z.B. bei einer Authentifizierung anhand mehrerer Quellen oder wenn
die Authentifizierung und Autorisierung anhand verschiedener Quellen durchgeführt wird. Dies wird auch als
Stapeln (Stacking) von LoginModulen bezeichnet.[150] Sollten die standardmäßig mitgelieferten LoginModule
6.7.2.1 Authentifizierung und Autorisierung
33
Leistungsanalyse_JBOSS
nicht ausreichen, können benutzerdefinierte programmiert werden.[151]
Um eine Security Domain einer bestimmten Komponente des Application Servers zuzuordnen, steht ein
deklaratives Modell in Form von XML-Deskriptoren zur Verfügung. Bei EJB-Anwendungen kann zusätzlich auf
Annotations zurückgegriffen werden. Der Nachteil der Annotations liegt darin, dass diese im Programmcode fest
verdrahtet sind, während die XML-Deskriptoren von diesem losgelöst sind. Mit der Einführung von EJB3 gilt die
Regel, dass die XML-Deskriptoren dazu benutzt werden, die Standard-Konfiguration teilweise zu überschreiben
(partial deployment descriptor) oder die Konfiguration in den Annotations bei Bedarf zu überschreiben
(convention over configuration).[152] Somit ist der parallele Einsatz von XML-Deskriptoren und Annotations
ebenfalls denkbar. Grundsätzlich erfüllt der JBoss Application Server durch die XML-Deskriptoren die
Anforderung, das Thema Sicherheit als einen anwendungsübergreifenden Aspekt bzw. Cross-Cutting Concern zu
behandeln.
Neben den Standard-Deskriptoren sind für die Sicherheitskonfiguration die JBoss-spezifischen Deskriptoren
obligatorisch. Die JBoss-spezifischen Deskriptoren dienen dazu, die zuvor in der login-config.xml erstellten
Security Domains den jeweiligen Komponenten zuzuordnen. Für Web-Anwendungen kommt neben dem
Standard-Deskriptor web.xml der JBoss-spezifische Deskriptor jboss-web.xml hinzu. Bei EJB-Anwendungen
lautet der Standard-Deskriptor ejb-jar.xml und der JBoss-spezifische jboss.xml. Diese Vorgehensweise kann auf
alle Komponenten des JBoss Application Servers übertragen werden. Es müssen lediglich die richtigen
XML-Dateien verwendet werden.[153]
Abbildung 7: Sicherheit anhand des Beispiels einer Web-Anwendung[154]
Die login-config.xml ist statisch. Das heißt, dass eventuelle Änderungen an der Datei zur Laufzeit nicht
übernommen werden. Eine darin konfigurierte SecurityDomain wird erst beim Start bzw. Neustart des Servers
unter JNDI gebunden und auch nur dann, wenn eine Anwendung existiert, die diese verwendet.[155] Weiterhin
besteht beim JBoss Application Server die Möglichkeit, Security Domains dynamisch zu adressieren. Dafür muss
im ersten Schritt ein MBean vom Typ org.jboss.security.auth.login.DynamicLoginConfig im Deploy-Verzeichnis
des Servers erstellt werden. Diese Datei muss die Endung *-service.xml besitzen. Darin ist der Dateiname für die
dynamische LoginConfiguration hinterlegt. Im zweiten Schritt muss eine Datei mit genau diesem Namen, die
6.7.2.1 Authentifizierung und Autorisierung
34
Leistungsanalyse_JBOSS
vom Format identisch mit der login-config.xml ist, in der Archivdatei der jeweiligen Anwendung hinterlegt
werden.[156]
Es gibt Anwendungsfälle, bei denen das rollenbasierte Sicherheitskonzept unzureichend ist. Dieser Fall tritt ein,
wenn sich die Sicherheitsüberprüfung direkt auf die Informationen einer Benutzeranfrage bezieht. Beispielsweise
kann ein Bankmitarbeiter Buchungen bis 10.000 Euro eigenständig bearbeiten, darüber hinaus muss er eine
Freigabe seines Vorgesetzten erhalten. In diesem Fall ist eine von Hand programmierte Lösung nicht zu
vermeiden, weshalb man auch von programmatic security bzw. context-based security spricht.[157] Innerhalb des
Web-Containers eignen sich dazu die Methoden getUserPrincipal und isUserInRole. Die beiden Pendants dazu
innerhalb des EJB-Containers heißen getCallerPrincipal und isCallerInRole. getUserPrincipal bzw.
getCallerPrincipal liefert die Benutzerkennung zurück und mit isUserInRole bzw. isCallerInRole kann abgefragt
werden, ob dem Benutzer eine entsprechende Rolle zugeordnet ist. Grundsätzlich ist bei der programmatic
Security zu beachten, dass dieser Ansatz ein hohes Maß an Flexibilität bietet, jedoch die Portabilität des
Quellcodes verloren gehen kann.[158]
6.7.2.2 Verbindung / Kommunikation
Die Sicherung der Verbindung bzw. der Kommunikation erfolgt beim JBoss Application Server über das
Protokoll SSL (Secure Socket Layer) bzw. TLS (Transport Layer Security). Dazu verwendet dieser JSSE (Java
Secure Socket Extension), welches seit JDK 1.4 zum Basisumfang gehört.[159] JSSE unterstützt SSL in den
Versionen 2.0, 3.0 und TLS in der Version 1.0 sowie zahlreiche Verschlüsselungsverfahren, von denen RSA und
DSA in diesem Kontext relevant sind.[160]
Zwingende Voraussetzung für die Nutzung von SSL sind beglaubigte Zertifikate. Dabei hängt es von der
Authentifizierungsmethode ab, ob nur der Server oder sogar Client und Server ein gültiges Zertifikat bereitstellen
müssen. Meldet sich ein Benutzer z.B. beim Online-Banking bei seiner Bank an, muss lediglich die Bank ein
Zertifikat bereitstellen. In diesem Fall spricht man von protocol-level server authentication. Tauschen
beispielsweise zwei Banken untereinander Daten aus oder nutzt ein Mitarbeiter firmeninterne Dienste über das
Internet, müssen beide Parteien, Client und Server, gültige Zertifikate aufweisen. In der Regel liegt dabei die
protocol-level mutual authentication vor.[161]
Das JDK stellt das Programm keytool bereit, mit dem sich eine Datenbank (Keystore bzw. Truststore), bestehend
aus private und public keys, sowie Zertifikaten verwalten lässt. Es ermöglicht unter anderem die Generierung,
Speicherung sowie den Import und Export von Zertifikaten. Ein Zertifikat ist eine Art digitale Unterschrift von
einer Instanz (Person, Unternehmen usw.), die beglaubigt, dass ein public key von einer anderen, genau
benannten Instanz (Person, Unternehmen usw.) stammt.[162]
Wird ein Paar, bestehend aus private und public key mittels keytool generiert, wird auch ein Zertifikat erstellt.
Dieses Zertifikat sagt jedoch nur aus, dass man selbst den public key beglaubigt hat. Der Vorteil liegt darin, dass
diese Variante kostenlos ist. Das heißt, die Vorgehensweise eignet sich gut zu Testzwecken oder für die
Kommunikation über geschlossene Netze (z.B. Intranet). Für die Kommunikation über offene Netze (z.B.
Internet) sollte die kostenpflichtige Variante bevorzugt werden. Zunächst muss mittels keytool anhand eines
selbst beglaubigten Zertifikats ein CSR (Certificate Signing Request) aus dem Keystore exportiert werden. Dieser
muss an eine CA (Certificate Authority) wie z.B. VeriSign, Thawte oder Entrust gesendet werden. Die CA schickt
dann das beglaubigte Zertifikat an den Antragsteller zurück, der dieses zurück in seinen Keystore importieren
muss.[163]
Die Nutzung des Keystores in einer Security Domain ist direkt nicht möglich. Das heißt, dass sich in der Datei
login-config.xml keine SSL-fähigen Security Domains definieren lassen. Die Integration in JBossSX erfolgt über
den Umweg eines MBean vom Typ org.jboss.security.plugins.JaasSecurityDomain. Die Vorgehensweise ist
6.7.2.2 Verbindung / Kommunikation
35
Leistungsanalyse_JBOSS
ähnlich wie bei dynamischen Security Domains. Zunächst muss ein MBean-Service im Deploy-Verzeichnis des
Servers erstellt werden. Diese Datei muss die Endung *-service.xml besitzen. Darin ist der Pfad zum Keystore
sowie der Name der Security Domain hinterlegt, die um die SSL-Funktionalität erweitert werden soll. Dieser
Name muss mit dem Namen in der login-config.xml definierten Security Domain übereinstimmen.[164]
Abbildung 8: Zusammenspiel zwischen JaasSecurityDomain, Truststore, Security Domain und Security
Datastore[165]
Je nach verwendeter Komponente variiert die Aktivierung der SSL-Unterstützung. Sowohl die Methode an sich
als auch die verwendeten Konfigurationsdateien weichen voneinander ab. Der Zugriff auf Web-Anwendungen ist
durch den in JBoss integrierten Webserver (Apache Tomcat) vergleichsweise einfach umzusetzen. Denn dieser
unterstützt SSL standardmäßig. Dazu muss lediglich ein HTTP Connector in der Datei server.xml eingetragen
sein, der auf einen Keystore verweist.[166] Erfolgt ein direkter Zugriff auf EJBs von außen z.B. über eine
GUI-Anwendung, so kann auch diese Verbindung per SSL gesichert werden. Die Konfiguration kann entweder
über ein MBean vom Typ org.jboss.remoting.transport.Connector vorgenommen werden oder direkt über
Annotations in den EJBs selbst.[167] Bei Web-Services kann die Verschlüsselung der SOAP Nachricht zum einen
ähnlich wie bei Web-Anwendungen über SSL und zum anderen mit Hilfe von JAX-WS (Java API for XML Web Services) geschehen. Die Variante per JAX-WS ist aufwändiger. Dabei kommen die Konfigurationsdateien
jboss-wsse-server.xml und jboss-wsse-client.xml zum Einsatz. Zu beachten ist, dass diese Dateien bei
POJO-Webservices im WEB-INF Ordner und bei EJB-Webservices im META-INF Ordner liegen müssen.
Weiterhin ist die Annotation @EndpointConfig nötig, um auf eine JAX-WS Konfiguration in der Datei
standard-jaxws-endpoint-config.xml zuzugreifen, sowie die Datei standard-jaxws-client-config.xml, um die
Nutzung von JAX-WS clientseitig zu veranlassen.[168]
6.8 Zusammenfassender Überblick
Im Folgenden steht eine kurze, tabellarische Zusammenfassung über die Ergebnisse der Leistungsanalyse.
Kriterium
Systemanforderungen
Ergebnis(se)
Hardwarevoraussetzungen:
+ geringer Bedarf an CPU, RAM und Festplattenspeicherplatz für die reine
Grundinstallation
+ bei fehlender Rechnerleistung Einrichtung eines Clustersystems möglich
Softwarevoraussetzungen:
6.8 Zusammenfassender Überblick
36
Leistungsanalyse_JBOSS
° mindestens JDK Version 1.4, für EJB3-Technologie JDK Version 1.5
notwendig
+ integrierter Webserver (Tomcat)
+ integrierte relationale Datenbank (HSQLDB) und weitere per Anbindung
möglich
+ JBoss 4 ist vollständig J2EE 1.4 konform
+ herstellerunabhängiger Standard sorgt für Portabilität
+ J2EE Standard APIs stellen zahlreiche Funktionalitäten zur Verfügung, auf die
Entwickler zurückgreifen können
+ J2EE konformer Web-Container Tomcat 5 kann mit wenig Aufwand durch
Java EE Konformität
jeden anderen J2EE konformen Web-Container ersetzt werden
+ J2EE konformer EJB-Container implementiert EJB 2.1 Spezifikation und
bietet Hilfestellung zu Einhaltung des Standards (EJBDeployer-MBean)
- nicht alle benötigten Grundfunktionalitäten ausreichend durch Standard APIs
abgedeckt, so dass der Einsatz proprietärer APIs manchmal unumgänglich ist
- Einsatz von proprietären APIs setzt Portabilität aufs Spiel
+ Flexibilität und Modularität durch Mikrokernel-Architektur
+ verschiedene Start-Konfigurationen möglich
- persistente Konfiguration nur auf Dateiebene möglich
Konfiguration und
- Konfiguration der Dienste kann sehr komplex und zeitaufwändig sein
Administration
- Konfiguration über JMX-Console und Twiddle zu technisch
- JMX-Console, JBoss Web-Console sowie HTTP- und JMX-Invoker im
Auslieferungszustand nicht abgesichert
+ Auswahl der Entwicklungsumgebung bleibt dem Anwender überlassen
+ Hot-Deployment und Redeployment ohne erforderlichen Neustart des Servers
+ flexible und modulare Deployment-Architektur
+ unterstützt die Schachtelung von Archivtypen (Arbitrary Nesting bzw. Russian
Entwicklung und Deployment Doll Packaging)
- Deployment per JMX-Console und Twiddle nicht persistent
- Änderungen innerhalb des Deploy-Verzeichnisses können dazu führen, dass
alle Verbindungen zu einer Anwendung getrennt werden, da diese automatisch
neu deployt wird
+ Erhöhung der Performance durch horizontale Skalierung
+ Verteilung von rechenintensiven Komponenten auf mehrere Server möglich
+ Duplizierung von Sessions durch Clustering sorgt für Hochverfügbarkeit
+ automatische Lastenverteilung innerhalb des Clusters
Performance, Skalierbarkeit
+ JBoss Cluster ist einfach zu konfigurieren
+ automatische Verteilung der redundanten Komponenten innerhalb des Clusters
und Verfügbarkeit
- Clustering über viele Server hinweg sorgt für Performanceverlust, da großer
Overhead für Ausbringung von Änderungen
- keine Untergruppierungen innerhalb eines Clusters möglich, redundante
Komponenten werden stets auf alle Server verteilt
Interoperabilität
+ Portabilität von erstellten Anwendungen durch Konformität zu J2EE Version
1.4 gegeben
+ Nutzung eingebetteter Frameworks, vieler Standards und genormter
Schnittstellen (IDL, XML)
+ Integration in eine serviceorientierte Architektur möglich
+ herstellerübergreifende Funktionsaufrufe bzw. Kommunikation per Web
Services (SOAP, REST), CORBA (IIOP) und RMI (IIOP, JRMP) möglich
6.8 Zusammenfassender Überblick
37
Leistungsanalyse_JBOSS
+ Datenkompatibilität mittels Wrapper
+ als Web Service können genutzt werden: EJBs, POJOs, Servlets
+ unterstützt die Authentifizierung und Autorisierung per DBMS, LDAP und
Dateisystem
+ Authentifizierung und Autorisierung anhand mehrerer bzw. unterschiedlicher
Quellen möglich
+ benutzerdefinierte Module für Authentifizierung und Autorisierung möglich
+ Programmatic Security bzw. Context-Based Security grundsätzlich möglich
+ Unterstützung von SSL 2.0, SSL 3.0 und TLS 1.0
+ Unterstützung von zahlreichen Verschlüsselungsverfahren (z.B. RSA, DSA
Sicherheit
usw.)
- grundsätzliche Problematik: XML-Deskriptoren vs. Annotations
- Einsatz der zusätzlich benötigten Deskriptoren etwas undurchsichtig
- Konfiguration von Security Domains erfordern Neustart des Servers
- SSL-Funktionalität nur über den Umweg einer ManagedBean möglich
- keine einheitliche Aktivierung der SSL-Unterstützung bei unterschiedlichen
Komponenten
- hohe Komplexität und viele Abhängigkeiten erschweren den Überblick
Tabelle 13: Zusammenfassender Überblick
7 Fazit
Seit der Veröffentlichung des JBoss Application Servers im November 1999 hat sich dieser der Konkurrenz
kontinuierlich angenähert. Nach einer Untersuchung von Gartner im September 2009 schafft es JBoss als einziger
Open-Source Application Server in den Quadranten der Marktführer. Der Vorsprung der kommerziellen
Application Server von Oracle (Weblogic), IBM (WebSphere) und Microsoft (diverse Angebote) ist deutlich
geschrumpft. Durch die Akzeptanz der Fachwelt sowie der großen Anzahl an aktiven Entwicklern, die Teil der
JBoss Community sind bzw. durch Red Hat zur Verfügung gestellt werden, besitzt JBoss mittlerweile einen
hohen Verbreitungsgrad.
Die Leistungsanalyse als Kern dieser Arbeit bezieht sich dabei auf die Version 4 des Application Servers.
Weiterhin erfolgt keine Differenzierung auf JBoss Enterprise Version und JBoss Community Version. Beide
Varianten werden grundsätzlich als identisch angesehen, was die Analyse von technischen Feinheiten erleichtert.
Die Hardwareanforderungen, die den Einsatz des JBoss Application Server ermöglichen, variieren und sind stark
von den Bedürfnissen des Anwenders und der eingesetzten Anwendungen abhängig. Im Gegensatz dazu sind bei
den Softwareanforderungen klare Vorgaben gesetzt. Grundsätzlich ist eine Installation des JDK 1.4 Pflicht, unter
Verwendung von EJB3 sogar das JDK 1.5. Dadurch, dass der JBoss Application Server selbst in Java entwickelt
ist, kann dieser auf jedem Betriebssystem installiert werden, für das eine JVM in der benötigten Version zur
Verfügung steht. Mit der J2EE-Zertifizierung seitens Sun Microsystems ist ebenso der Wechsel zwischen
verschiedenen Application Servern möglich. Der Einsatz von proprietären APIs, JBoss spezifischen Deskriptoren
oder Context-Based Security kann derartige Portierungen erschweren. Der Basisumfang des JBoss Application
Server umfasst die Hypersonic SQL Datenbank und als Webcontainer den Apache Tomcat 5.x. Beides kann durch
individuelle Komponenten ausgetauscht werden. Diese Modularität und Flexibilität gilt für die gesamte
Architektur des Servers. Dieser basiert auf einem JMX-Mikrokernel. Alle Dienste wie z.B. Persistenz,
Trankaktionen oder Sicherheit setzen als so genannte MBeans auf diesen auf. So lassen sich verschiedene
Startkonfigurationen aus individuell ausgewählten MBeans verwenden. Eine persistente Konfiguration dieser
Startkonfigurationen ist jedoch nur auf Dateiebene möglich. Die mitgelieferten Programme JMX-Console, JBoss
Web-Console und Twiddle eignen sich dazu nicht, da zum einen alle Änderungen einen Neustart des Servers
nicht überdauern und zum anderen die Bedienung zu technisch bzw. unkomfortabel ist. Zudem bietet die
JMX-Console und die JBoss Web-Console im Auslieferungszustand ein Sicherheitsrisiko, weshalb diese neben
der HTTP- und JMX-Invoker zunächst abgesichert werden sollten.
7 Fazit
38
Leistungsanalyse_JBOSS
Die Bereitstellung (Deployment) von Anwendungen auf dem JBoss Application Server ist ebenfalls durch eine
MBean geregelt. So können Anwendungen durch simples Einfügen, Ändern oder Löschen im Deploy-Verzeichnis
zur Laufzeit manipuliert werden. In diesem Zusammenhang spricht man auch von Hot-Deployment bzw.
Redeployment ohne erforderlichen Neustart des Servers. Dabei sollte stets berücksichtigt werden, dass
Änderungen im Deploy-Verzeichnis dazu führen können, dass alle Verbindungen zu einer Anwendung getrennt
werden, da diese automatisch neu deployt wird. Ähnlich wie bei der Konfiguration unterliegt das Deployment per
JMX-Console oder JBoss Web-Console den gleichen Defiziten, weshalb die zuvor genannte Variante gewählt
werden sollte.
Zur Gewährleistung der Sicherheit kann der Zugriff auf die erstellten Anwendungen gesteuert werden. JBoss
unterstützt die Authentifizierung und Autorisierung per DBMS, LDAP und Dateisystem und lässt sowohl mehrere
als auch unterschiedliche Quellen dafür zu. Sollten die mitgelieferten Funktionalitäten nicht ausreichen, können
eigens erstellte Varianten verwendet werden. Für die Absicherung der Kommunikation bzw. Verbindung
unterstützt JBoss SSL 2.0, SSL 3.0 und TLS 1.0 sowie zahlreichen Verschlüsselungsverfahren (z.B. RSA, DSA
usw.). Allerdings ist dies nur über den Umweg einer MBean möglich. An dieser Stelle wird deutlich, wie die hohe
Modularität zum Nachteil werden kann. Die Konfiguration der SSL-Unterstützung ist bei den unterschiedlichen
Komponenten (Web-Anwendungen, EJB-Anwendungen, Webservices usw.) nicht einheitlich. Weiterhin erfordert
die Veränderung an grundlegenden Sicherheitsmerkmalen einen Neustart des Servers.
Um die Performance des JBoss Application Server zu steigern bietet dieser das Clustering als Mittel der
horizontalen Skalierung an. So können rechenintensive Anwendungskomponenten auf mehrere Server verteilt,
und die Anfragen an den Cluster durch Smart-Stubs oder Load-Balancer automatisch auf die Teilnehmer des
Clusters verteilt werden. Bei Ausfall eines Clusterteilnehmers erfolgt dann automatisch eine Weiterleitung aller
Anfragen auf die anderen Clusterteilnehmer, welche ebenfalls die geforderte Anwendungskomponente
bereitstellen. Der JBoss Cluster ist zunächst sehr einfach zu konfigurieren, da es bereits ausreicht alle
teilnehmenden Server im "all"-Modus zu starten und diese sich dann selbstständig gegenseitig im Netzwerk
aufspüren und untereinander abgleichen. Die zu replizierenden Sessions können mit geringem Aufwand durch
entsprechende Deployment-Deskriptoren gekennzeichnet werden und werden dann automatisch innerhalb des
Clusters verteilt. Leider kann die Bildung eines Clusters über eine hohe Anzahl von Servern hinweg zu
Performanceverlust führen, da ein großer Overhead für die Ausbringung der Änderungen innerhalb des Clusters
entsteht. Dem könnte durch die Möglichkeit der Bildung von Untergruppen innerhalb eines Clusters
entgegengewirkt werden. So müssten sich nicht mehr alle Teilnehmer des Clusters untereinander abgleichen,
sondern nur die Teilnehmer der jeweiligen Untergruppen. Die Hochverfügbarkeit wäre solange nicht
beeinträchtigt, bis die gesamte Untergruppe ausfällt. Leider bietet der JBoss Application Server in der Version 4
nicht die Möglichkeit der Untergruppierung.
Mit dem JBoss Application Server wird die Interoperabilität zwischen zwei oder mehreren Unternehmen
gewährleistet und ebenso die Möglichkeit geschaffen, heterogene Anwendungssysteme mit diesem in einer
Systemlandschaft zu integrieren. Hierfür werden für die Arbeit mit dem JBoss verschiedene Frameworks,
Standards und genormte Schnittstellen bereitgestellt. So können die weit verbreiteten Technologien Web
Services, CORBA und RMI für die Implementierung von entfernten Funktionsaufrufen zum Einsatz kommen.
Wrapper bieten hierzu Übersetzungsdienste zu denen als Web Service genutzten EJBs, POJOs oder Servlets an
und gewähren dadurch die Datenkompatibilität zu den genutzten Programmiersprachen. Als anormales Verhalten
des JBoss ist hier jedoch die Performancesteigerung bei der Kommunikation zu erwähnen. Entgegen einer
standardisierten und im Normalfall performanteren Nutzung des JRMP-Protokolls in Zusammenarbeit mit RMI,
erfährt die Kommunikation bei Verwendung des Protokolls IIOP einen Geschwindigkeitszuwachs um ca. 30
Prozent. Dies steht in einem enormen Widerspruch zu den Erkenntnissen, die bis dato aus der Praxis erlangt
wurden.
Zusammenfassend gilt zu sagen, dass der JBoss Application Server aufgrund der vielen Funktionalitäten und
enthaltenen Standards, sowie seiner raschen Weiterentwicklung eine ernst zu nehmende Alternative zu
kommerziellen Produkten darstellt. Trotzdem muss an dieser Stelle auf die Gefahr hingewiesen werden, den
JBoss Application Server ohne entsprechendes Wissen einzusetzen. Dadurch, dass sich der Server so leicht
herunterladen und durch einfaches Entpacken installieren lässt, ist die Verlockung groß, in diesem Zustand damit
7 Fazit
39
Leistungsanalyse_JBOSS
in den Produktivbetrieb zu wechseln. Der Server sollte nur von Spezialisten bzw. vorher geschulten Anwendern
eingesetzt werden, auch wenn die hohen Schulungsgebühren der kostenlosen Verfügbarkeit des eigentlichen
Servers gegenüberstehen. Gerade die Konfiguration ist komplex, zeitaufwändig, undurchsichtig und
fehleranfällig. Zudem erschweren die vielen Abhängigkeiten durch die an vielen Stellen vorkommende
Modularität den Überblick zu behalten. Eine schwerwiegende Sicherheitslücke im Auslieferungszustand kann
dazu führen, dass eine fremde Person den JBoss Application Server fernsteuern kann. Letztendlich sind dies
Faktoren, die den Erfolg eines Projektes beeinträchtigen können. Falls die Wahl auf den JBoss Application Server
fällt, sind zusätzliche, externe Tools z.B. zur Administration oder zur Entwicklung unumgänglich, weil diese
entweder gänzlich fehlen oder schlichtweg ungeeignet sind. Diese Tools sollten sorgfältig ausgewählt sein, da sie
z.B. den Grad der Arbeitserleichterung sowie die Geschwindigkeit und den Komfort der Anwendungsentwicklung
beeinträchtigen. Nichtsdestotrotz können bestimmte Schwierigkeiten z.B. hinsichtlich der Thematik
XML-Deskriptoren vs. Annotations dadurch nicht behoben werden. Durch die unterschiedliche Versionierung des
JBoss kommt hinzu, dass es Updates bzw. Patches nur für die von Red Hat angebotene Enterprise Version des
JBoss Application Servers gibt. Die Anwender der Community-Version sind dadurch mehr oder weniger auf sich
allein gestellt und können ggf. Lösungsvorschläge von den Community-Mitgliedern erhalten.
8 Fußnoten
1. ? Vgl. Stoyan (2004), S. 325.
2. ? Vgl. Langner (2006), S. 5.
3. ? Vgl. Sam-Bodden (2004), S. 149.
4. ? Vgl. Gentsch (2004), S. 30.
5. ? Vgl. Stark (2004), S. 201f.
6. ? Vgl. Gulp.de (Mai 2002)
7. ? Vgl. Andresen (2004), S. 263.
8. ? Vgl. Stark (2004), S. 15.
9. ? Vgl. Sun.com (o.J.b)
10. ? Vgl. Andresen (2004), S. 264.
11. ? Vgl. Langner (2006), S. 7.
12. ? Vgl. Andresen (2004), S. 263ff.
13. ? in Anlehnung an: Andresen (2004), S. 265.
14. ? 14,0 14,1 14,2 Vgl. Jamae (2009), S. 4.
15. ? Vgl. Fleury (2005), S. 15.
16. ? Vgl. Redhat.com (April 2006)
17. ? 17,0 17,1 Vgl. JBoss.com (o.J.a)
18. ? Vgl. JBoss.com (November 2004), S. 2.
19. ? Vgl. JBoss.com (November 2004), S. 14.
20. ? Vgl. Javamagazin.de (o.J.)
21. ? Vgl. It-republik.de (Januar 2005)
22. ? 22,0 22,1 22,2 22,3 Vgl. Gartner.com (September 2009)
23. ? in Anlehnung an: Gartner.com (September 2009)
24. ? Vgl. Fleury (2005), S. 571.
25. ? 25,0 25,1 25,2 25,3 25,4 25,5 Vgl. JBoss.de (2008)
26. ? Vgl. Gnu.org (Dezember 2008)
27. ? Vgl. Novell.com (o.J.)
28. ? Vgl. Cursor.de (August 2009), S. 1.
29. ? 29,0 29,1 Vgl. Cursor.de (August 2009), S. 8.
30. ? Vgl. Richards (2005), S. 1.
31. ? Vgl. JBoss.org (Mai 2006), S. 1.
8 Fußnoten
40
Leistungsanalyse_JBOSS
32. ? 32,0 32,1 32,2 32,3 32,4 Vgl. JBoss.com (o.J.c)
33. ? Vgl. Cachaca.de (o.J.)
34. ? Vgl. Heise.de (November 2003)
35. ? Vgl. Sun.com (o.J.a)
36. ? Vgl. Heise.de (November 2003)
37. ? Vgl. Heise.de (März 2003)
38. ? Vgl. Sun.com (November 2003), S. 7.
39. ? in Anlehnung an: Sun.com (November 2003), S. 6.
40. ? 40,0 40,1 Vgl. Strobel (2004), S. 245.
41. ? Vgl. Sun.com (November 2003), S. 85f.
42. ? 42,0 42,1 Vgl. Sun.com (November 2003), S. 10.
43. ? 43,0 43,1 43,2 43,3 Vgl. Sun.com (November 2003), S. 11.
44. ? 44,0 44,1 Vgl. Sun.com (November 2003), S. 13.
45. ? 45,0 45,1 Vgl. Sun.com (November 2003), S. 102.
46. ? Vgl. Sun.com (o.J.c)
47. ? Vgl. Fleury (2006), S. 277.
48. ? Vgl. Langner (2006), S. 337.
49. ? Vgl. Ihns (2004), S. 69.
50. ? Vgl. Sun.com (November 2003), S. 12.
51. ? 51,0 51,1 51,2 Vgl. Sun.com (November 2003), S. 107.
52. ? Vgl. Sun.com (November 2003), S. 108.
53. ? Vgl. Sun.com (November 2003), S. 109.
54. ? Vgl. Fleury (2006), S. 19.
55. ? in Anlehnung an: Sun.com (November 2003), S. 86f.
56. ? Vgl. Sun.com (o.J.c)
57. ? 57,0 57,1 Vgl. Fleury (2005), S. 409.
58. ? Vgl. Fleury (2005), S. 79.
59. ? Vgl. Ihns (2004), S. 46.
60. ? Vgl. Sun.com (November 2003), S. 86f.
61. ? Vgl. Ahmad (2004), S. 42f.
62. ? Vgl. Ihns (2004), S. 52.
63. ? Vgl. Fleury (2005), S. 4.
64. ? Vgl. Dirk-Maschner.de (2006), S. 39.
65. ? Vgl. Fleury (2005), S. 216.
66. ? Vgl. Burke (2006), S. 532.
67. ? in Anlehnung an: Sam-Bodden (2004), S. 164.
68. ? Vgl. Jamae (2009), S. 41ff.
69. ? 69,0 69,1 69,2 69,3 69,4 Vgl. Fleury (2006), S. 26.
70. ? 70,0 70,1 Vgl. Burke (2006), S. 530.
71. ? Vgl. Marrs (2006), S. 7.
72. ? 72,0 72,1 72,2 Vgl. Richards (2005), S. 9.
73. ? Vgl. Marrs (2006), S. 11.
74. ? 74,0 74,1 Vgl. Burke (2006), S. 530.
75. ? 75,0 75,1 75,2 75,3 Vgl. Langner (2006), S. 13.
76. ? Vgl. Marrs (2006), S. 9.
77. ? Vgl. Richards (2005), S. 7.
78. ? Vgl. JBoss.org (Mai 2006), S. 8f.
79. ? Vgl. Jamae (2009), S. 40.
80. ? 80,0 80,1 Vgl. JBoss.org (Mai 2006), S. 11.
81. ? 81,0 81,1 Vgl. Jamae (2009), S. 41.
82. ? Vgl. JBoss.org (Mai 2006), S. 319.
8 Fußnoten
41
Leistungsanalyse_JBOSS
83. ? Vgl. Fleury (2006), S. 91.
84. ? Vgl. Jamae (2009), S. 48.
85. ? in Anlehnung an: Jamae (2009), S. 43ff.
86. ? Vgl. JBoss.org (Mai 2006), S. 319f.
87. ? Vgl. Hof (2009), S. 21f.
88. ? Vgl. Hof (2009), S. 11f.
89. ? Vgl. Langner (2006), S. 17.
90. ? Vgl. JBoss.com (o.J.b)
91. ? Vgl. JBoss.org (o.J.)
92. ? Vgl. Jamae (2009), S. 47.
93. ? Vgl. Burke (2006), S. 533.
94. ? Vgl. Fleury (2006), S. 143f.
95. ? 95,0 95,1 95,2 95,3 Vgl. Jamae (2009), S. 48.
96. ? in Anlehnung an: Fleury (2006), S. 143f.
97. ? Vgl. Marrs (2006), S. 11.
98. ? 98,0 98,1 98,2 Vgl. Richards (2005), S. 26.
99. ? Vgl. JBoss.org (Mai 2006), S. 68.
100. ? Vgl. Richards (2005), S. 25.
101. ? 101,0 101,1 101,2 101,3 101,4 Vgl. Jamae (2009), S. 414.
102. ? Vgl. Jamae (2009), S. 416.
103. ? Vgl. Royans.net (September 2007)
104. ? Vgl. Langner (2006), S. 431.
105. ? Vgl. Jamae (2009), S. 321.
106. ? 106,0 106,1 Vgl. Langner (2006), S. 432.
107. ? 107,0 107,1 107,2 107,3 107,4 107,5 107,6 Vgl. JBoss.org (2006)
108. ? Vgl. Jamae (2009), S. 356.
109. ? Vgl. Langner (2006), S. 442ff.
110. ? Vgl. Ihns (2004), S. 199.
111. ? Vgl. Langner (2006), S. 434.
112. ? Vgl. Jamae (2006), S. 367f.
113. ? Vgl. Langner (2006), S. 435.
114. ? 114,0 114,1 Vgl. Langner (2006), S. 437.
115. ? 115,0 115,1 Vgl. Langner (2006), S. 439.
116. ? 116,0 116,1 116,2 116,3 116,4 Vgl. Langner (2006), S. 441.
117. ? Vgl. Ordix.de (März 2007)
118. ? Vgl. Langner (2006), S. 433.
119. ? Vgl. Sneed (2003), S. 31.
120. ? Vgl. Mertins (2008), S. 160.
121. ? Vgl. Allmendinger (2002), S. 72.
122. ? Vgl. Sneed (2003), S. 31.
123. ? Vgl. Erl (2004), S. 476.
124. ? in Anlehnung an: Sun.com (November 2003), S. 14.
125. ? Vgl. Roseindia.net (o.J.)
126. ? 126,0 126,1 126,2 Vgl. Langner (2006), S. 393.
127. ? Vgl. Rupp (2007), S. 165.
128. ? Vgl. Langner (2006), S. 395.
129. ? 129,0 129,1 Vgl. Langner (2006), S. 78.
130. ? Vgl. Langner (2006), S. 99.
131. ? 131,0 131,1 Vgl. Langner (2006), S. 79.
132. ? Vgl. Langner (2006), S. 98.
133. ? 133,0 133,1 Vgl. Langner (2006), S. 112.
8 Fußnoten
42
Leistungsanalyse_JBOSS
134. ? Vgl. Jamae (2009), S. 73.
135. ? Vgl. Miles (2005), S. 2.
136. ? Vgl. Hunt (2003), S. 518.
137. ? Vgl. Jamae (2009), S. 82.
138. ? 138,0 138,1 Vgl. Jamae (2009), S. 79.
139. ? Vgl. Fleury (2006), S. 366.
140. ? Vgl. Sun.com (o.J.d)
141. ? Vgl. Marrs (2006), S. 192.
142. ? Vgl. Fleury (2006), S. 366.
143. ? Vgl. Hunt (2003), S. 527.
144. ? in Anlehnung an: Jamae (2009), S. 79.
145. ? Vgl. Burke (2006), S. 674.
146. ? Vgl. Langner (2006), S. 16.
147. ? Vgl. Marrs (2006), S. 193.
148. ? Vgl. Burke (2006), S. 674.
149. ? Vgl. Jamae (2009), S. 92ff.
150. ? Vgl. Jamae (2009), S. 102.
151. ? Vgl. Fleury (2006), S. 406.
152. ? Vgl. Jamae (2009), S. 173.
153. ? Vgl. Fleury (2006), S. 378f.
154. ? Vgl. Jamae (2009), S. 136.
155. ? Vgl. Jamae (2009), S. 79f.
156. ? Vgl. Jamae (2009), S. 81.
157. ? Vgl. Jamae (2009), S. 78.
158. ? Vgl. Hunt (2003), S. 525.
159. ? Vgl. Fleury (2006), S. 434.
160. ? Vgl. Sun.com (o.J.e)
161. ? Vgl. Jamae (2009), S. 87ff.
162. ? Vgl. Sun.com (o.J.f)
163. ? Vgl. Jamae (2009), S. 85.
164. ? Vgl. Jamae (2009), S. 90f.
165. ? Vgl. Jamae (2009), S. 90.
166. ? Vgl. Jamae (2009), S. 149.
167. ? Vgl. Jamae (2009), S. 197ff.
168. ? Vgl. Jamae (2009), S. 252ff.
9 Literatur- und Quellenverzeichnis
Ahmad (2004)
Allmendinger
(2002)
Andresen (2004)
Browne (2009)
Ahmad, Masroor: Der freie J2EE Application Server JBoss - Diplomarbeit zur Erlangung des
akademischen Grades Diplominiformatiker (FH), Grin Verlag für akademische Texte, Fulda 2004.
(ISBN-13: 978-3640068722)
Allmendinger, Jutta (Hrsg.) / Hinz, Thomas (Hrsg.): Organisationssoziologie, Westdeutscher Verlag,
o.O. 2002. (ISBN-13: 978-3531139999)
Andresen, Andreas: Komponentenbasierte Softwareentwicklung mit MDA, UML 2 und XML, 2., neu
bearbeitete Auflage, Hanser Verlag, München 2004. (ISBN-13: 978-3446229150)
Browne, Paul: JBoss Drools Business Rules. Capture, automate, and reuse your business processes in a
clear English language that your computer can understand, Packt Publishing Ltd., Birmingham 2009.
(ISBN-13: 978-1847196064)
9 Literatur- und Quellenverzeichnis
43
Leistungsanalyse_JBOSS
Burke (2006)
Cachaca.de (o.J.)
Cursor.de (August
2009)
Dirk-Maschner.de
(2006)
Erl (2004)
Fleury (2005)
Fleury (2006)
Gartner.com
(September 2009)
Gentsch (2004)
Gnu.org
(Dezember 2008)
Gulp.de (Mai
2002)
Heise.de
(November 2003)
Heise.de (März
2003)
Hof (2009)
Hunt (2003)
Ihns (2004)
It-republik.de
(Januar 2005)
Jamae (2009)
Javamagazin.de
(o.J.)
Burke, Bill / Monson-Haefel, Richard: Enterprise JavaBeans 3.0, 5. Aufl., O'Reilly Media, Sebastopol
2006. (ISBN-13: 978-0596009786)
o.V.: JBoss Application Server, Überblick, http://www.cachaca.de/index.php?section=130. (06.01.2010
13:55)
o.V.: Systemvoraussetzungen. Cursor CRM. Perfekte Kundenorientierung,
http://www.cursor.de/infomaterial/doc_download/8-systemvoraussetzungen/systemvoraussetzungen.pd
(28.12.2009, 14:51)
Maschner, Dirk: Persistenz und Vererbung in Hibernate Teil 1:
Prinzipien,http://www.dirk-mascher.de/publikationen/mascher_hibernate_0306.pdf. (11.01.2009, 20:15
Erl, Thomas: Service-Oriented Architecture: A Filed Guide to Integrating XML and Web Services,
Prentice Hall International, New Jersey 2004. (ISBN-13: 978-0131428980)
Fleury, Marc / Stark, Scott / Richars, Norman: JBoss 4.0 - The Official Guide, Sams, o.O. 2005.
(ISBN-13: 978-0672326486)
Fleury, Marc / Stark, Scott / Richars, Norman: JBoss 4.0 - JBoss 4.0 - Das offizielle Handbuch,
Addison-Wesley-Verlag, München 2006. (ISBN-13: 978-3827323194)
Natis, Yefim V. / Pezzini, Massimo / Iijima, Kimihiko: Magic Quadrant for Enterprise Application
Servers, http://www.gartner.com/technology/media-products/reprints/oracle/article96/article96.html.
(25.11.2009, 20:17)
Gentsch, Peter / Lee, Sue (Hrsg.): Praxishandbuch Portalmanagement. Profitable Strategien für
Internetportale, 1. Aufl., Gabler Verlag, Wiesbaden 2004. (ISBN-13: 978-3409124546)
o.V.: Why you shouldn't use the Lesser GPL for your next library,
http://www.gnu.org/licenses/why-not-lgpl.html. (10.01.2010, 13:37)
o.V.: Unter der Lupe: Application Server. Die Marktführer werden sich behaupten,
http://www.gulp.de/kb/mk/chanpos/appserver.html. (08.01.2010, 13:46)
o.V.: Java Community Process verabschiedet J2EE 1.4,
http://www.heise.de/newsticker/meldung/Java-Community-Process-verabschiedet-J2EE-1-4-88867.htm
(10.01.2010, 13:42)
o.V.: Sun bietet JBoss J2EE-Zertifizierung an,
http://www.heise.de/newsticker/meldung/Sun-bietet-JBoss-J2EE-Zertifizierung-an-76651.html.
(10.01.2010, 14:01)
Hof, Patrick / Liebchen, Jens: Bridging the Gap between the Enterprise and You -or- Who's the Jboss
now?, in: Sicherheit in vernetzten Systemen. 16. DFN Workshop am 17. und 18. März 2009, hg. von
Christian Paulsen, Hamburg 2009. (ISBN-13: 978-3837033526)
Hunt, John / Loftus, Chris: Guide to J2EE: Enterprise Java, Springer Verlag, London 2003. (ISBN-13:
978-1852337049)
Ihns, Oliver (Hrsg.) / Heldt, Stefan / Wirdemann, Ralf / Zuzmann, Henning: Enterprise JavaBeans
komplett: Grundlagen, Überblick und Einsatz von EJB 2.1, Oldenbourg Wissenschaftsverlag GmbH,
München 2004. (ISBN-13: 978-3486273793)
o.V.: Umfragen: Starke Marktanteile für JBoss und Eclipse,
http://it-republik.de/jaxenter/news/Umfragen-Starke-Marktanteile-fuer-JBoss-und-Eclipse-019434.htm
(04.01.2010, 09:40)
Jamae, Javid / Johnson, Peter: JBoss in Action. Configuring The JBoss Application Server, Manning,
Greenwich 2009. (ISBN-13: 978-1933988023)
o.V.: Quick Vote: Verwenden Sie JBoss?,
http://javamagazin.de/itr/service/show.php3?id=189&nodeid=36&func=results&poll_id=22.
(21.12.2009, 14:22)
9 Literatur- und Quellenverzeichnis
44
Leistungsanalyse_JBOSS
JBoss.de (2008)
JBoss.com
(November 2004)
JBoss.com (o.J.a)
JBoss.com (o.J.b)
JBoss.com (o.J.c)
JBoss.org (o.J.)
JBoss.org (Mai
2006)
JBoss.org (2006)
Langner (2006)
Leonard (2009)
Marrs (2006)
Mertins (2008)
Miles (2005)
Novell.com (o.J.)
Ordix.de (März
2007)
Redhat.com (April
2006)
Richards (2005)
Roseindia.net
(o.J.)
Royans.net
(September 2007)
Rupp (2007)
Sam-Bodden
(2004)
o.V.: Lizenzierung Info-Center - JBoss Deutschland, http://www.jboss.de/resources/licensing.
(10.01.2010, 13:26)
o.V.: BZ Media: Fourth Annual Java Use and Awareness Study. A BZ Research Report,
http://www.jboss.com/pdf/bzresearch_study.pdf. (25.12.2009, 20:37)
o.V.: JBoss Community and JBoss Enterprise, http://www.jboss.com/products/community-enterprise.
(23.12.2009, 22:50)
o.V.: JBoss Developer Studio 2.1 Portfolio Edition, http://www.jboss.com/products/devstudio/.
(08.01.2010, 13:47)
o.V.: JBoss Enterprise Application Platform Supported Configurations: JBoss Enterprise Application
Platform v4.2,
http://www.jboss.com/products/platforms/application/supportedconfigurations/#JEAP4.2. (25.12.2009,
20:40)
o.V.: JBoss IDE, http://www.jboss.org/jbosside/. (08.01.2010, 13:48)
o.V.: The JBoss 4 Application Server Guide. JBoss AS 4.0.4. Release 5,
http://docs.jboss.org/jbossas/jboss4guide/r5/adminguide.pdf. (17.11.2009, 22:28)
o.V.: The JBoss 4 Application Server Clustering Guide,
http://docs.jboss.org/jbossas/guides/clusteringguide/r2/en/html_single. (10.01.2010, 14:27)
Langner, Thorsten / Reiberg Daniel: J2EE und JBoss. Grundlagen und Profiwissen. Verteilte Enterpris
Applikationen auf Basis von J2EE, JBoss & Eclipse, Hanser Verlag, München 2006. (ISBN-13:
978-3446405080)
Leonard, Anghel: JBoss Tools 3 Developer's Guide. Build functional applications from scratch to serve
deployment using JBoss Tools, Birmingham 2009. (ISBN-13: 978-1847196149)
Marrs, Tom / Davis, Scott: JBoss at Work. A Practical Guide, O'Reilly Media, Sebastopol 2006.
(ISBN-13: 978-0596007348)
Mertins, Kai (Hrsg.) / Ruggaber, Rainer (Hrsg.) et al.: Enterprise Interoperability III: New Challenges
and Industrial Approaches, 1. Auflage, Springer Verlag London, o.O. 2008. (ISBN-13:
978-1848002203)
Miles, Russ: AspectJ Cookbook. Real-World Aspect-Oriented Programming with Java, O'Reilly Media
Sebastopol 2005. (ISBN-13: 978-0596006549)
o.V.: JBoss Enterprise Middleware. System Requirements,
http://www.novell.com/products/jboss/sysreqs.html. (28.12.2009, 13:50)
Zeller, Alexander: JBoss Clustering - Einer für alle, alle für einen,
http://www.ordix.de/ORDIXNews/3_2007/Java_J2EE_JEE/clustering_jboss.html. (10.01.2010, 14:31)
o.V.: Red Hat Signs Definitive Agreement to Acquire JBoss. Open source leaders agree to join to drive
down the cost of developing and deploying web-enabled applications,
http://www.redhat.com/about/news/prarchive/2006/jboss.html. (28.11.2009, 18:51)
Richards, Norman / Griffith Jr., Sam: JBoss. A Developer's Notebook, 1. Aufl., O'Reilly
Media,Sebastopol 2005.(ISBN-13: 978-0596100070)
o.V.: Introduction to Web services technologies, Uses of Web Services,
http://www.roseindia.net/webservices/Web-Services-technology.shtml]. (04.01.2010, 14:49)
o.V.: What is scalability, http://www.royans.net/arch/2007/09/22/what-is-scalability/]. (10.01.2010,
14:14)
Rupp, Heiko W.: EJB 3 für Umsteiger: Neuerungen und Änderungen gegenüber dem EJB-2.x-Standard
1. Auflage, dpunkt-Verlag, Heidelberg 2007. (ISBN-13: 978-3898644297)
Sam-Bodden, Brian / Judd, Christopher: Enterprise Java Development on a Budget. Leveraging Open
Source Java Technologies, Apress, New York 2004. (ISBN-13: 978-1590591253)
9 Literatur- und Quellenverzeichnis
45
Leistungsanalyse_JBOSS
Sneed, Harry M. / Sneed, Stephan H.: Web-basierte Systemintegration: so überführen Sie bestehende
Anwendungssysteme in eine moderne Webarchitektur, mit Online-Service zum Buch, 1. Auflage,
Vieweg+Teubner Verlag, Braunschweig 2003. (ISBN-13: 978-3528058371)
Stark, Thomas: J2EE. Einstieg für Anspruchsvolle, 1. Aufl., Pearson Studium, München 2004.
Stark (2004)
(ISBN-13: 978-3827321848)
Stoyan, Robert (Hrsg.): Management von Webprojekten. Führung, Projektplan, Vertrag. Mit Beiträgen
Stoyan (2004)
zu IT, Branding, Webdesign und Recht, Springer Verlag, Berlin 2004. (ISBN-13: 978-3540005827)
Strobel, Claus: Web-Technologien in E-Commerce Systemen, Oldenbourg Wissenschaftsverlag GmbH
Strobel (2004)
München 2004. (ISBN-13: 978-3486274349)
o.V.: Java 2 Platform, Enterprise Edition (J2EE) FAQ,
Sun.com (o.J.a)
http://java.sun.com/javaee/reference/faq/j2ee.jsp#compatibility. (10.01.2010, 13:56)
o.V.: Java 2 Platform, Enterprise Edition (J2EE) Overview, http://java.sun.com/j2ee/appmodel.html#2.
Sun.com (o.J.b)
(10.01.2010, 13:18)
Sun.com (o.J.c)
o.V.: JavaServer Pages Overview, http://java.sun.com/products/jsp/overview.html. (10.01.2010, 14:06)
o.V.: JavaTM 2 Platform, Standard Edition, v 1.4.2 API Specification,
Sun.com (o.J.d)
http://java.sun.com/j2se/1.4.2/docs/api/index.html. (08.01.2010, 13:51)
o.V.: JavaTM Secure Socket Extension (JSSE). Reference Guide for the JavaTM 2 SDK, Standard
Sun.com (o.J.e)
Edition, v 1.4.2, http://java.sun.com/j2se/1.4.2/docs/guide/security/jsse/JSSERefGuide.html#Features.
(08.01.2010, 13:52)
o.V.: keytool - Key and Certificate Management Tool,
Sun.com (o.J.f)
http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html. (08.01.2010, 13:52)
Sun.com
o.V.: Java? 2 Platform Enterprise Edition Specification, v1.4,
(November 2003) http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf. (30.12.2009, 01:31)
Sneed (2003)
9 Literatur- und Quellenverzeichnis
46
Herunterladen