View
217
Download
1
Category
Preview:
Citation preview
www.it-administrator.de Juli 2011 49
P R A X I S I W o r k s h o p
ava EE ist eine Ansammlung diver-ser Softwarekomponeten und
Diensten, die quasi einen De-facto-Stan-dard bei der Entwicklung von Enterpri-se-Anwendungen darstellen. Durch klardefinierte APIs können dabei Komponen-ten unterschiedlichster Hersteller problem-los miteinander agieren. Jede Java EE ba-sierte Anwendung benötigt natürlich eineentsprechende Umgebung, in der dieseablaufen kann und die die notwendigenKomponenten und Services zur Verfügungstellt, beispielsweise Transaktionsmanage-ment, Namens- und Verzeichnisdienste,Persistenz- und Deployment-Dienste so-wie ein Sicherheits-Framework (siehe Bild1). Eine vollständige Liste findet sich inder Java EE-Spezifikation [1].
Im kommerziellen Umfeld existieren mitIBM Websphere und BEA WebLogic zweiweitverbreitete Schwergewichte entspre-chender Server-Implementierung. MitJBoss steht solch ein Server als Open Sour-ce-Produkt unter der GNU Lesser GeneralPublic License (LGPL) zur Verfügung. Die-ser stellt alle notwendigen Softwarekom-poneten, Dienste und Container der Spe-zifikation zur Verfügung und erweitert dieseum eigene, Server-spezifische, Konfigura-tionsmöglichkeiten. Beispielsweise enthält
JBoss einen EJB-Container für EnterpriseJava Beans (EJB) [2] oder einen Webserverauf Basis von Tomcat zum Bereistellen vonServlets und JavaServer Pages (JSP). EineCommunity-Edition von JBoss, das inzwi-schen zu Red Hat gehört, steht unter [3]zum Download zur Verfügung.
JBoss installierenDer JBoss Applikationsserver (AS) stehtebenfalls unter [3] als ZIP-Datei zumDownload bereit. Bevor es jedoch an des-sen Installation geht, müssen Sie sicher-stellen, dass das System entweder über einaktuelles Java Development Kit (JDK)oder ein Java Runtime Environment(JRE) verfügt. Frühere Versionen von
JBoss AS benötigten zwingend ein JDK,da dieses über einen entsprechendenCompiler für Java-Code verfügt. Dieserist zum Übersetzen von JSP-Dateien not-wendig. Aktuellen Versionen, also AS5oder AS6, genügt jedoch auch ein JRE,da JBoss eine Eclipse-JDT Bibliothek mitausgeliefert, die ebenfalls Java-Code über-setzen kann. Handelt es sich bei dem Sys-tem, auf dem Sie JBoss installieren wollen,jedoch um einen Entwicklungsrechner,so bevorzugen Sie wahrscheinlich den-
J
Java Enterprise-Anwendungen mit JBoss bereitstellen
Webanwendungen auf dem Silber-tablettvon Thorsten Scherf
Das Entwickeln von Unternehmensanwendungen wirdheutzutage immer umfangreicher und komplexer. Stehtein Entwickler vor der Aufgabe eine Unternehmensan-wendung zu programmieren, so stehen ihm hierfür imWesentlichen zwei Software-Architekturen zur Verfü-gung. Auf der einen Seite existiert die von Microsoft entwickelte .NET-Plattform, auf der anderen Seite die herstellerunabhängige Java Platt-form, Enterprise Edition – aktuell auch als Java EE bekannt. DieserWorkshop gibt einen Einstieg in Java EE auf Basis des JBoss Applikationsservers.
Bild 1: Ein Applikationsserver besteht aus verschiedenen Komponenten, die auf ein Enterprise-Informatiom-System (EIS) zurückgreifen können
Quell
e: 12
3RF
50 Juli 2011 www.it-administrator.de
P R A X I S I W o r k s h o p
noch das JDK. Nach der Installation derJava-Umgebung ist darauf zu achten, dassdie JAVA_HOME-Variable auf das JavaRoot-Verzeichnis zeigt:
# export JAVA_HOME=/usr/lib/jvm/
jre-1.6.0-openjdk
# echo $JAVA_HOME
/usr/lib/jvm/jre-1.6.0-openjdk
# java -version
java version “1.6.0_18”
OpenJDK Runtime Environment
(IcedTea6 1.8.3)
(fedora-46.1.8.3.fc13-i386)
OpenJDK Server VM
(build 14.0-b16, mixed mode)
Nach diesen Vorarbeiten entpacken Siedas ZIP-Archiv des JBoss AS in ein be-liebiges Verzeichnis, beispielsweise nach/opt und passen die JBOSS_HOME-Va-riable entsprechend an, so dass diese aufdas Installationsverzeichnis zeigt. Zur Ad-ministration ist ein grundlegendes Ver-ständnis der Verzeichnisstruktur des Ser-vers wichtig. Nach dem Auspacken desArchivs befinden sich im Root-Verzeich-nis diverse Ordner:- * bin-Verzeichnis: Enthält alle Skripte
die zum Starten und Stoppen des Ser-vers notwendig sind. Außerdem ist hierauch das JMX-Kommandozeilentooltwiddle abgelegt, mit dem Sie den Ser-ver administrieren können.
- * client-Verzeichnis: Enthält Bibliothe-ken die eventuell beim Zugriff vonStandalone-Clients benötigt werden.Bei Standalone-Clients handelts es sichbeispielsweise um GUI-Clients auf Basis
von Swing oder AWT, Webservice-Clients oder JMS-Clients.
- * doc-Verzeichnis: Enthält hauptsächlichDTD-Dateien und XML-Schemada-teien für die JBoss Konfigurationsda-teien, da diese auf XML basieren. Kon-figurationsbeispiele finden sich unterhalbvon docs/examples/.
- * lib-Verzeichnis: Enthält Bibliotheken,die zum Starten des JBoss AS notwen-dig sind.
- * server-Verzeichnis: JBoss kommt vonHaus aus mit verschiedenen Konfigu-rationen daher. Dieses Verzeichnis ent-hält diverse Unterverzeichnisse, die je-weils einer bestimmten Konfigurationentsprechen. Beim Starten des Serverskönnen Sie dann bestimmen, welcheKonfiguration zum Einsatz kommensoll. Natürlich lassen sich die einzelnenKonfigurationen ändern oder neue hin-zufügen. Bild 2 zeigt das Konfigurati-onsverzeichniss “all”. Im Vergleich zurDefault-Konfiguration sind hier bei-spielsweise auch die JBoss-Clusterser-vices aktiviert.
Durch das Auswählen einer bestimmtenServer-Konfiguration können Sie nunalso bestimmen, welche JEE-Services undKomponenten der JBoss AS starten soll.Passt keine der vorhandenen Konfigura-tionen, kopieren Sie einfach einen vor-handenen Ordner, benennen diesen umund passen die Kopie entsprechend an.
Wie das genau geht, erfahren Sie späterin diesem Workshop. Möchten Sie denJBoss-Server mit sämtlichen Services star-ten, so ist hierfür der folgende Aufrufnotwendig:
# /opt/jboss-5.1.0.GA/bin/run.sh -c
all
Auf der Konsole sind nun die Startmel-dungen der einzelnen Services zu sehenund am Ende sollte schließlich eine Sta-tuszeile Auskunft darüber erteilen, wielange die Startup-Prozedur dauerte:
19:58:19,965 INFO [ServerImpl]
JBoss (Microcontainer) [5.1.0.GA
(build:SVNTag=JBoss_5_1_0_GA
date=200905221634)] Started in
54s:991ms
Alternativ ist es auch möglich, den Serverim Hintergrund zu starten und die Sta-tus-Meldungen der einzelnen Services ineine Log-Datei zu schreiben. Das hat un-ter anderem den Vorteil, dass die Konsolenicht durch den Server belegt ist:
/opt/jboss-5.1.0.GA/bin/run.sh -c
all > console.log &
Ein Zugriff auf den Web-Container desServers sollte zu diesem Zeitpunkt bereitsfunktionieren (siehe Bild 3). Die Startseitebietet Zugriff auf diverse Online-Res-
Bild 2: Jedes JBoss-Konfigurationsverzeichnis enthält eine Vielzahl von Unterverzeichnissen, mit denen Sie das Verhalten des Server anpassen können
Die ersten Versionen von JBoss basierten auf einemsogenannten Java-Management-Extension Kernel(JMX). Sämtliche Services des Anwendungsserverswurden hier als Managed Beans (MBeans) in denJMX-Kernel geladen um Ihre Funktionen zur Verfügungzu stellen. Mit der Version AS4 begann dann die Mi-gration auf eine Microcontainer-Architektur, in der nunleichtgewichtige Plain Old Java Objects (POJOs) stattMBeans zum Einsatz kommen. MBeans unterstütztJBoss allerdings immer noch, da der JMX-Kernel nunselbst als POJO auf dem Microcontainer aufsetzt. Fürdie Zukunft ist geplant, sämtliche MBeans als reinePOJOs zu implementieren, so dass der Einsatz desJMX-Kernels nicht mehr notwendig ist
Architektur
Alle Listings zum Download auf www.it-administrator.de Juli 2011 51
P R A X I S I W o r k s h o p
sourcen und JBoss interne Applikationen,die sich zur Administration des Serversverwenden lassen.
Erste Java-Webanwendung bereitstellen Um nun die erste Schritte auf dem neu-en Server aufzuzeigen, beginnen wir andieser Stelle mit dem Bereitstellen einerJava-basierten Webanwendung mit Hilfedes JBoss Web-Services. Dieser basiertauf dem bekannten Tomcat für dynami-sche Inhalte, kann aber ebenfalls auf dieApache Portable Runtime (APR) zu-rückgreifen, wenn es darum geht, stati-sche Inhalte schnell auszuliefern. JBossunterstützt mit dem integrierten Web-Server von Haus aus das sogenannteHot-Deployment. Hierzu kopieren Siebeispielsweise die gewünschte Weban-wendung in ein bestimmtes Verzeichnisder aktiven Server-Konfiguration undJBoss stellt diese Anwendung unmittel-bar bereit.
Zuerst ist jedoch die entsprechende An-wendung zu erzeugen und vorzubereiten.Da die Entwicklung von komplexen An-wendungen den Rahmen dieses Artikelssprengen würde, greifen wir hier auf diebekannte “Hello World”-Anwendung zu-rück. Diese liegt hier als JavaServerPagevor. JBoss übersetzt diese dynamisch, er-zeugt ein Servlet und stellt dieses einemClient über eine Webschnittstelle zur Ver-fügung. Es existieren mehrere Methodendiese Anwendung nun bereitzustellen, bei-spielsweise in Form eines Webarchives(WAR-Archiv). Für dieses Archiv müssenSie zuerst eine entsprechende Verzeich-nis-Struktur erzeugen, wobei die JSP-Da-tei im Root-Verzeichnis liegt. Hier hingehört ebenfalls ein UnterverzeichnisWEB-INF mit einem Deployment-De-skriptor namens web.xml. Dieser Deploy-ment-Deskriptor ist Teil der JEE-Spezi-fikation, sodass auch Servlets von anderenServern unter JBoss lauffähig sind. Ser-ver-spezische Konfigurationsanweisungenliest JBoss aus der Datei WEB-INF/jboss-web.xml ein. Dazu zählt beispielsweise dieKonfiguration einer Security-Domäne fürIhre Anwendung. Hiermit können dannunter anderem Benutzer authentifiziertund autorisiert werden, bevor diese Zu-griff auf die Anwendung, oder Teile davon,erhalten. Die JSP-Datei sowie der De-ployment-Deskriptor sind in den beidenListingkästen dargestellt.
Mit Hilfe des Tools “jar” lässt sich aus die-sen Dateien nun ein WAR-Archiv erzeu-gen (siehe Listing “WAR-Archiv mit jarerzeugen”). Das so erzeugte Archiv ko-pieren Sie dann in das Host-Deployment-Verzeichnis des aktiven JBoss-Konfigura-
tionsverzeichnisses. JBoss nimmt in diesemFalle sofort Notiz von der neuen Web-Anwendung und stellt diese unmittelbarzur Verfügung. Der Aufruf von http://lo-calhost:8080/helloworld/hello.jsp im Web-browser bestätigt dies (siehe Bild 4).
# jar -cvf helloworld.war *.jsp
WEB-INF/
added manifest
adding: hello.jsp(in = 159)
(out= 131)(deflated 17%)
adding: WEB-INF/(in = 0)
(out= 0)(stored 0%)
adding: WEB-INF/web.xml(in = 63)
(out= 48)(deflated 23%)
# cp helloworld.war ../../jboss-
5.1.0.GA/server/all/deploy/
20:15:48,905 INFO [TomcatDeploy-
ment] deploy, ctxPath=/helloworld
Statt das WAR-Archiv in das Deploy-ment-Verzeichnis zu kopieren, lässt sichauch das bereits erwähnte Admin-Tooltwiddle verwenden. Mit Hilfe der Ope-ration deploy der JBoss MBean “jboss.sys-tem:service=MainDeployer” stellen Siedie Webanwendung auch dann bereit,wenn Sie beispielsweise gar kein Schreib-recht auf das Deployment-Verzeichnis be-sitzen. Ein Nachteil dieser Methode be-steht jedoch darin, dass die Anwendungnach einem Neustart des Servers nichtwieder automatisch gestartet wird.
# ./twiddle.sh invoke “jboss.sys-
tem:service=MainDeployer” deploy
/opt/examples/HelloWorld/hello-
world.war
Anstatt mit komprimierten Archiv-Da-teien, kann JBoss auch mit komplettenVerzeichnis-Strukturen umgehen. Dies istmanchmal einfacher als Archive bereitzu-stellen, da sich in Verzeichnissen einzelneDateien leichter verändern oder hinzu-fügen lassen, ohne das bei jeder Änderungein neues Archiv zu erzeugen ist. EinNeustart des Servers ist nach einer Än-derung an einer Anwendung nicht not-wendig, JBoss erkennt diese automatischanhand aktualisierter Zeitstempel an denDateien. Wichtig vor dem Bereitstellenganzer Verzeichnisse ist jedoch, dass dieseden passen Suffix besitzen, ansonsten weiß
Bild 3: Nach dem Hochfahren des Servers erhalten Sie über die Startseite des Web-Containers Zugriff auf diverse Anwendungen und Online-Ressourcen
<html><head><title>JSP Test</title>
<%!
String message = “Hello, World.”;
%>
</head>
<body bgcolor=”white”>
<h2><%= message%></h2>
<%= new java.util.Date() %>
</body></html>
Listing: JSP-Datei
<web-app>
<display-name>Hello World</display-name>
</web-app>
Listing: Deployment-Deskriptor
52 Juli 2011 www.it-administrator.de
P R A X I S I W o r k s h o p
der Server nicht, welcher Deployer zumBereitstellen zu verwenden ist:
# mv /opt/examples/helloworld/
/opt/examples/helloworld.war/
# rm -f /opt/jboss-
5.1.0.GA/server/all/deploy/
helloworld.war
10:25:22,371 INFO [TomcatDeploy-
ment] undeploy, ctxPath=/
helloworld
# cp -r
/opt/examples/helloworld.war/
/opt/jboss-5.1.0.GA/server/all/
deploy/
10:25:22,412 INFO [TomcatDeploy-
ment] deploy, ctxPath=/helloworld
Passende Server-KonfigurationNachdem Sie nun wissen, wie Sie eineeinfache Webanwendung auf dem JBossAS bereitstellen können, lohnt es sich, ei-nen genaueren Blick in die Konfigurationdes Servers zu werfen. Wie bereits weiteroben erwähnt, enthält JBoss AS mehrereKonfigurations-Verzeichnisse. Beim Star-ten des Servers wurde in unserem Beispieldie all-Konfiguration ausgewählt. Derentsprechende Konfigurationsordner/opt/jboss-5.1.0.GA/server/all enthält di-verse Unterverzeichnisse (siehe Bild 5).
Auch hier ist ein grundlegendes Verständ-nis der einzelnen Verzeichnisse wichtig:- * conf-Verzeichnis: Enthält sämtliche
Konfigurationsdateien für den JBoss-Kernservice, die einzelnen Services sowie wie für das Logging-Subsystemlog4j [4].
- * deploy-Verzeichnis: Dieser Ordnerwurde bereits im letzen Abschnitt vor-
gestellt. Sämtliche Anwendungen, diein dieses Verzeichnis kopiert werden, er-kennt JBoss automatisch und stellt diesedynamisch zur Verfügung. Zum Entfer-nen einer Anwendung ist diese einfachaus dem deploy-Verzeichnis zu löschen,oder besser, in ein undeploy-Verzeichniszu verschieben.
- * deployers-Verzeichnis: Enthält Serviceszum Erkennen der verschiedenen An-wendungs- und Archivtypen aus demdeploy-Verzeichnis.
- * lib-Verzeichnis: Enthält Bibliothekendie von sämtlichen JEE Services einergemeinsamen Serverkonfiguration ver-wendet werden. Spezielle Bibliothekendie nur zu einer einzelnen Anwendunggehören, stellen Sie lieber über die An-wendung selbst zur Verfügung – bei-spielsweise als Teil eines Webarchives.
Neben diesen Standard-Verzeichnissenerzeugt JBoss noch weitere Ordner zurLaufzeit. Hiervon sind besonders dieseinteressant:- * log-Verzeichnis: Enthält die Dateien
boot.log, server.log und eventuell audit.log(je nach Konfiguration). boot.log ent-hält alle Log-Meldung des Start-Pro-zesses des Servers, bis die Kontrollean log4j übergeben wird. Dieser Ser-vice schreibt die Meldungen dann indie Datei server.log. Das Sicherheits-Subsystem von Jboss verwendet dieDatei audit.log für sicherheitsrelevanteMeldungen.
- * work-Verzeichnis: Hier hält der JBossWebserver die übersetzten Java-ClassDateien und Servlets auf. Für die obenaufgeführte Webanwendung existierenhier beispielsweise die beiden Dateien
work/jboss.web/localhost/helloworld/org/apache/jsp/hello_jsp.class und work/jboss.web/localhost/helloworld/org apache/jsp/hello_jsp.java.
Zum Anpassen des Servers sind sicherlichdie Konfigurationsdateien unterhalb vonconf/ am interessantesten. Als Beispiel sollhier das Logging des JBoss-Servers etwasangepasst werden. Wie bereits erwähnt,setzt JBoss das log4j Logging-Frameworkein. In der Konfigurationsdatei conf/jboss-log4j.xml existieren in der Standardkon-figuration zwei sogenannte Appender.Diese bestimmen wohin die Logmeldun-gen der JBoss-Services oder der bereit-gestellten Anwendungen zu senden sind.Der erste Appender schreibt sämtlicheMeldungen aller Loglevel (TRACE, DE-BUG, INFO, WARN, ERROR and FA-TAL) in die Datei log/server.log und legtdabei einmal pro Tag eine neue Datei miteinem entsprechenden Datums-Suffix an(siehe Listing “WAR-Archiv mit jar er-zeugen”). Soll der Server stattdessen dieLog-Datei rotieren, sobald diese ein be-stimmte Größe erreicht hat, so sind dieAppender-Parameter entsprechend anzu-passen (siehe Listing “Anpassen der Ap-pender-Parameter”).
Der zweite Appender “CONSOLE” sorgtfür eine Ausgabe auf der Konsole. Jedochfindet diese erst ab dem Log-Level INFOstatt, wofür der Parameter “<param na-me=”Threshold” value=”INFO”/>” inder Konfiguration des Appenders zustän-dig ist. Somit vermeiden Sie, dass das Kon-solen-Log mit zu vielen Log-Meldungen
Bild 4: Im Webbrowser lässt sich schliesslich die Ausgabe der Webanwendung bewundern
<appender name=”FILE” class=”org.jboss.logging.ap-
pender.DailyRollingFileAppender”>
<errorHandler
class=”org.jboss.logging.util.OnlyOnceError
Handler”/>
<param name=”File”
value=”${jboss.server.log.dir}/server.log”/>
<param name=”Append” value=”true”/>
<param name=”DatePattern” value=”‘.’yyyy-
MM-dd”/>
<layout class=”org.apache.log4j.PatternLay
out”>
<param name=”ConversionPattern” value=”%d
%-5p [%c] (%t) %m%n”/>
</layout>
</appender>
Listing: WAR-Archiv mit jar erzeugen
www.it-administrator.de Juli 2011 53
P R A X I S I W o r k s h o p
überflutet wird. Natürlich ist es auch mög-lich, für die einzelnen Dateien oder Log-Level einzelne Log-Dateien zu erzeugen.Hierfür existieren in der Kategorie “Limitcategories” Einstellmöglichkeiten, die sichauf einem Appender mit einem bestimm-ten Namen beziehen (dieser ist hier alsReferenz anzugeben), und das Loggingeiner bestimmten Klasse oder einer An-wendung die von diese Klasse abgeleitetist, ab einen bestimmten Log-Level defi-niert. Die Konfigurationsdatei bietet hier-für sehr viele Beispiele.
Unnötige Dienste abschaltenIn den bisherigen Beispielen wird derJBoss-Server immer mit der Konfigu-rationseinstellung “all” gestartet. Hier-durch stehen sämtliche Services undKompontenten des Servers zur Verfü-gung. Für Test- und Entwicklungssys-teme mag dies sicherlich in Ordnungsein, für Systeme in der Produktion giltdies jedoch nicht. Hier gilt der Grund-satz “Weniger ist mehr”. Wieso soll derServer Dienste anbieten die gar nichtbenötigt werden? Diese stellen nur einunnötiges Sicherheitsrisiko dar und soll-ten somit deaktiviert, oder noch besser,entfernt werden.
Mit der Konfiguration “all” startet JBoss25 verschiedene Services, mit der Kon-figuration “default” sind es dagegen lediglich 15 Services. Der Hauptunter-schied zwischen den beiden Konfigura-tion liegt darin, dass mit “all” sämtlicheCluster-Dienste zur Verfügung stehen,mit “default” jedoch nicht. Wenn Sie also
keinen Cluster benötigen, so reicht dieStandard-Konfiguration sicherlich aus.Jedoch bietet es sich an, selbst diese Kon-figuration noch etwas abzuspecken, fallsSie auf bestimmte Dienste verzichtenkönnen. Hierfür ist zuerst ein neuesKonfigurationsverzeichnis auf Basis derdefault-Konfiguration zu erzeugen:
# cp -r /opt/jboss-
5.1.0.GA/server/default
/opt/jboss-5.1.0.GA/server/custom
In dem Verzeichnis “custom” können Sienun sämtliche Services deaktivieren, dienicht unbedingt notwendig sind. Beispiels-weise soll auf einem Produktionssystemsicherlich nicht die JBoss-Startseite sichtbarsein. Entfernen Sie diese einfach, indemSie in custom/deploy/ROOT.war löschenoder umbenennen. Ist der Mail-Servicenicht wirklich notwendig, so löschen Siedie Dateien custom/deploy/mail-service.xmlund custom/lib/mail*.jar. Ein Blick in dasdeploy- und lib-Verzeichnis hilft weitereunnötige Services zu identifizieren.
JBoss bietet von Haus aus einige Manage-ment-Tools an, dazu zählt beispielsweisedie JMX-Console, die unter der URLhttp://localhost:8080/jmx-console/ zu er-reichen ist. Mit der Konsole haben Nutzerdie Möglichkeit, ManagedBeans (MBeans)des Servers zu lesen und zu verändern.Die weiter oben angesprochenen Ände-rungen am Logging-Subsystem hätten soauch mit der JMX-Console durchgeführtwerden können. Somit stellt diese Web-anwendung eine mächtige, aber auch ge-fährliche Möglichkeit dar, den komplettenJBoss-Server zu konfigurieren. Auf einemProduktionssystem ist die Konsole somitentweder zu entfernen (deploy/jmx-conso-le.war) oder aber der Zugang ist mit Hilfeeiner Benutzerauthentifizierung entspre-chend zu sichern.
Authentifizierung und AutorisierungDas Sicherheitssystem von JBoss basiertauf dem Java Authentication and Autho-rization Service (JAAS). Über Sicherheits-Domänen legen Sie hier fest, welche Artvon Login-Modulen für eine bestimmteAnwendung zum Einsatz kommen soll.Es existieren bereits vorgefertigte Login-
Module für den Zugriff auf Datenbanken,LDAP-Server oder einfache Dateien. Isteine Webandwendung für eine bestimmteSicherheits-Domäne konfiguriert, so musssich ein Benutzer beim Zugriff auf dieseauthentifizieren und bekommt nach er-folgreicher Authentifizierung und Auto-risierung eine bestimmte Rolle zugewie-sen. Anhand dieser Rolle kann der Adminfestlegen, ob welche Teile der Webanwen-dung der Benutzer zugreifen darf. Einevordefinierte Sicherheits-Domäne für dieJMX-Console finden Sie im entsprechen-den Listing.
Bei diesem Login-Modul handelt es sichum eine einfache Variante, bei der die Au-thentifizierung und Autorisierung vonBenutzern anhand von Dateien stattfin-det. Komplexere Beispiele für den Zugriffauf eine Datenbank oder einen LDAP-Server befinden sich jedoch ebenfalls inder Datei conf/login-config.xml. Damit eineAnwendung nun weiß, welche Sicher-heitsdomäne zum Einsatz kommen soll,ist diese im JBoss-eigenen Deployment-Deskriptor der Anwendung, jboss-web.xmlzu hinterlegen. Hier tragen Sie den Na-men der Domäne ein, mit der diese sichüber das Java Naming and Directory Interface (JNDI) auf dem Server ange-meldet hat. Im Falle der JMX-Consoleist die Änderung also in der Dateideploy/jmx-console.war/WEB-INF/jboss-web.xml zu erfolgen:
<jboss-web>
<security-domain>java:/jaas/jmx-
console</security-domain>
</jboss-web>
<appender name=”FILE” class=”org.jboss.logging.ap-
pender.RollingFileAppender”>
<errorHandler
class=”org.jboss.logging.util.OnlyOnceError
Handler”/>
<param name=”File”
value=”${jboss.server.log.dir}/server.log”/>
<param name=”Append” value=”false”/>
<param name=”MaxFileSize” value=”10MB”/>
<param name=”MaxBackupIndex” value=”20”/>
<layout class=”org.apache.log4j.PatternLay
out”>
<param name=”ConversionPattern” value=”%d
%-5p [%c] (%t) %m%n”/>
</layout>
</appender>
Listing: Anpassen der Appender-Parameter
<application-policy name=”jmx-console”>
<authentication>
<login-module
code=”org.jboss.security.auth.spi.UsersRoles
LoginModule”
flag=”required”>
<module-option
name=”usersProperties”>props/jmx-console-
users.properties</module-option>
<module-option
name=”rolesProperties”>props/jmx-console-
roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
Listing: Sicherheits-Domäne für die JMX-Console
54 Juli 2011 Link-Codes eingeben auf www.it-administrator.de
P R A X I S I W o r k s h o p
Hiermit ist nun klar, welche Sicherheits-Domäne und somit, welches Login-Mo-dul, für die JMX-Console zum Einsatzkommt. Es fehlt jedoch noch ein Regel-werk, welches bestimmt, wer Zugriff aufwelche Ressourcen hat. Diese Informa-tion ist der Anwendung nun über denregulären Deployment-Deskriptor de-ploy/jmx-console.war/WEB-INF/web.xmlmitzuteilen:
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdap
tor</web-resource-name>
<description>Eine beispiel
hafte Sicherheitseinstellung
die nur Nutzern mit der
Rolle JBossAdmin den Zugriff
auf die HTML JMX-Webappli-
kation erlaubt
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-
method>
<http-method>POST</http-
method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-
name>
</auth-constraint>
</security-constraint>
Fehlen schließlich noch Benutzerac-count-Daten. Wie im Login-Modul fürdie Anwendung festgelegt, kommen die-se aus den beiden Dateien props/jmx-console-users.properties für die Benutzer-Namen und Passwör ter, und ausprops/jmx-console-roles.properties für dieZuordnung einer Rolle zu einem Ac-count. Anhand des Beispiels muss einBenutzer nun also der Rolle “JBossAd-min” angehören, damit dieser Zugriffauf die Konsole bekommt. Hat allesfunktioniert, solle diesmal beim Aufrufvon http://localhost:8080/jmx-console/ein Fenster aufgehen, welches den Be-nutzer zur Authentifizierung auffordert(siehe Bild 5).
Andere Webanwendungen lassen sich nunauf ähnliche Art und Weise für eine Be-nutzer-Authentizierung und Autorisierungkonfigurieren. Wichtig dabei ist, dass dieverwendete Sicherheits-Domäne sich zu-vor beim JNDI registriert hat.
Sichere KommunikationAbschliessend geht es um die Konfigu-ration für einen sicheren Zugriff auf ei-ne Webanwendung. Dies ist besondersdann wichtig, wenn die Anwendungsensible Daten überträgt und selbststän-dig eine Benutzer-Authentifizierungdurchführt, wozu dann wahrscheinlichauch die Übertragung eines Benutzer-Passwortes gehört. Für eine gesichertehttps-Verbindung ist dem JBoss-Serverein zusätzlicher Web-Connector hinzu-zufügen. Vor dessen Konfiguration istjedoch erst ein Zertifikatsspeicher zuerzeugen. Dieser Speicher enthält einX.509-Zertifikat welches entwederselbst signiert wurde, oder über die Sig-natur einer externen Zertifizierungs-stelle (CA) verfügt. Mit Hilfe der Java-Anwendung keytool läs s t s ich einsolcher Zertifikatsspeicher anlegen.
Um schließlich den https-Port des Web-connectors zu aktivieren, müsen Sie inder Konfigurationsdatei des JBoss Web-
Services, deploy/jbossweb.sar/server.xml,der soeben erzeugte Zertifikatsspeicher,inklusive des dazugehörigen Passwortes,ausführen:
<Connector protocol=”HTTP/1.1”
SSLEnabled=”true”
port=”8443”
address=”${jboss.bind.address}”
scheme=”https”
secure=”true” clientAuth=”false”
keystoreFile=”${jboss.server.home.
dir}/conf/tuxgeek.keystore”
keystorePass=”redhat”
sslProtocol = “TLS”
/>
Ab nun stehen sämtliche Webanwen-dungen auch über den gesichertenhttps-Port 8443 zur Verfügung und bie-ten somit eine verschlüsselte Übertra-gung der Daten an.
FazitNatürlich kann dieser Artikel nicht sämt-liche Konfigurationsmöglichkeiten desJBoss-Applikationsservers vorstellen, da-für ist die Thematik zu umfangreich. In-teressante Themen die bisher nicht an-gesprochen wurden sind beispielsweisedie Enterprise Java Beans (EJBs) und dasJBoss-Clustering. Mit EJBs ist es mög-lich, komplexe Anwendungen zu mo-dularisieren und somit die eigentlicheGeschäftslogik aus der Anwendung he-rauszutrennen. Das JBoss-Cluster ingsorgt für eine hochverfügbare Konfigu-ration des Servers. Weitere Informationenzu diesen und weiteren Themen bietetdie ausführliche Dokumentationsseitedes JBoss-Projektes [5]. (dr)
# keytool -genkey -alias example -keystore tuxge-
ek.keystore -keyalg RSA
keytool -genkey -alias example -keystore
tuxgeek.keystore -keyalg RSA
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: tiffy.tuxgeek.de
What is the name of your organizational unit?
[Unknown]: GPS
What is the name of your organization?
[Unknown]: Red Hat
What is the name of your City or Locality?
[Unknown]: Stuttgart
What is the name of your State or Province?
[Unknown]: BW
What is the two-letter country code for this unit?
[Unknown]: DE
Is CN=tiffy.tuxgeek.de, OU=GPS, O=Red Hat,
L=Stuttgart, ST=BW, C=DE correct?
[no]: yes
Enter key password for <example>
(RETURN if same as keystore password):
Re-enter new password:
# keytool -list -keystore tuxgeek.keystore
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
example, Mar 25, 2011, PrivateKeyEntry,
Certificate fingerprint (MD5):
AC:D5:CB:5C:13:9D:EF:F2:85:6B:AB:89:49:F8:48:3A
Listing: Zertifikatsspeicher mit keytool
[1] Java EE-SpezifikationB7P61
[2] Java EJB-TechnologieB7P62
[3] JBoss Community SeiteB7P63
[4] log4j ProjektseiteB7P64
[5] JBoss DokumentationB7P65
Link-Codes
EAZ Social Networks
1/1
Anschnitt
Recommended