SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Javaaktuell
                                                                                                                                            2-2013 | Sommer | www. ijug.eu




                                                                                                        Praxis. Wissen. Networking. Das Magazin für Entwickler
Javaaktuell



                                                                                            Java verbreitet sich überall



                                                                                            Ausblicke
                                                                                            JDeveloper 12c, Seite 8
  D: 4,90 EUR A: 5,60 EUR CH: 9,80 CHF Benelux: 5,80 EUR ISSN 2191-6977




                                                                                            Android goes Gradle, Seite 29


                                                                                            Hochverfügbarkeit
                                                                                            JBoss AS7, Seite 21


                                                                                            Web-Entwicklung
                                                                                            Play!, Seite 32
                                                                                            Linked Data, Seite 38


                                                                                            Java und Oracle
                                                                                                                                                              iii iii
                                                                                                                                                           iii


                                                                                            Continous Integration, Seite 59
                                                                                                                                                               iii




                                                                                                                                                             iJUG
                                                                                                                                                             Verbund




                                                                                                                                                                ru ck
                                                                                                                                                           rd
                                                                          02




                                                                                                                                                         e
                                                                                                                                                   nd
                                                                          4 191978 304903




                                                                                                                                             S   o
I nha l t




3      Editorial                              59 Drillinge − bei der Geburt getrennt.            66 DevFest Vienna 2012
       Wolfgang Taschner                         Wie PL/SQL, Apex und Continuous                    Dominik Dorn
                                                 Integration wieder zusammenfinden
                                                 Markus Heinisch
5      Das Java-Tagebuch
                                                                                                 25 Unsere Inserenten
       Andreas Badelt
                                              62 Datenschutz-konformes
                                                 Social Sharing mit Liferay
8      Oracle JDeveloper 12c – ein Ausblick                                                      28 Die iJUG-Mitglieder auf einen Blick
                                                 Michael Jerger
       Frank Nimphius
                                              65 Unbekannte Kostbarkeiten des SDK                37 Impressum
13 Asynchrone Datenabfragen                      Heute: Der ZIP-File-System-Provider
   mit DataFX                                    Bernd Müller
   Hendrik Ebbers


17 Stolperfallen bei der
   Software-Architektur
   Frank Pientka


21 Hochverfügbarkeit
   mit dem JBoss AS 7
   Heinz Wilming und Immanuel Sims


29 Android goes Gradle
   Heiko Maaß


32 Web-Apps mit „Play!“ entwickeln –
   nichts leichter als das!
   Andreas Koop
                                              Lastverteilung zum Erreichen der Hochverfügbarkeit, Seite 20

38 Linked-Data-Praxis:
   Daten bereitstellen und verwerten
   Angelo Veltens


42 Vagrant: Continuous Delivery
   ganz einfach
   Sebastian Laag


45 Cobol und Java:
   Zwei Sprachen kommen sich näher
   Rolf Becking


48 Continuous Bugfixing in großen
   Projekten
   Jürgen Nicolai

                                              Build-Kreislauf beim Continuous Integration, Seite 59
53 „Wir sollten das Oracle-Bashing
   unterlassen …“
   Interview mit Falk Hartmann,
                                                Dies ist ein Sonderdruck aus der Java aktuell. Er enthält einen ausgewähl-
   Java UserGroup Saxony
                                                ten Artikel aus der Ausgabe 02/2013. Das Veröffentlichen des PDFs bzw.
                                                die Verteilung eines Ausdrucks davon ist lizenzfrei erlaubt.
54 Pragmatisches Testen mit System
   Martin Böhm                                  Weitere Informationen unter www.ijug.eu



4 |
iiiiii
                                                                                                                                     iii
                                                                                                                       www.ijug.eu




                                                                                                                                       iii
Hochverfügbarkeit mit dem JBoss AS 7
Heinz Wilming und Immanuel Sims, akquinet AG


Die Gruppierung mehrerer Server zu einem Cluster ist eine wichtige Eigenschaft eines Java-EE-Servers für
den Betrieb kritischer Geschäftsanwendungen. Dies gewährleistet zum einen eine hohe Verfügbarkeit und
zum anderen die Skalierbarkeit der Anwendung bei wachsender Last.


                                                                                                erst bei einer Störung auf einen anderen
                                                                                                ausweicht. Das ist notwendig, da die Sit-
                                                                                                zungsdaten eines Klienten nicht zwischen
                                                                                                den beteiligten Servern repliziert werden.
                                                                                                Die Assoziation der Sitzung eines Klienten
                                                                                                mit dem jeweiligen Server wird als „sticky
                                                                                                session“ bezeichnet. Stürzt ein Server ab,
                                                                                                gehen alle transienten Daten verloren. Der
                                                                                                Klient wird allerdings mit der nächsten An-
                                                                                                frage auf einen anderen Server umgeleitet
                                                                                                (Failover) und könnte auf Basis eines ge-
                                                                                                meinsamen persistenten Datenbestands
                                                                                                weiterarbeiten. Dieser Ansatz lässt sich
                                                                                                relativ leicht umsetzen und ist effizient. Je-
                                                                                                doch können mitunter wichtige Daten ver-
                                                                                                lorengehen. Für einen Webshop würde ein
                                                                                                verlorener Warenkorb bedeuten, dass der
                                                                                                Kunde verärgert ist und die ausgewählten
                                                                                                Artikel nicht kaufen wird.
                                                                                                    Damit auch transiente Sitzungsdaten
Abbildung 1: Einfache Cluster-Topologie mit Lastverteilung                                      nach einem Ausfall für die Klienten verfüg-
                                                                                                bar sind, müssen sie auf anderen Servern
                                                                                                des Clusters verfügbar sein. Dazu sind die
                                                                                                Sitzungsdaten beispielsweise einer HTTP-
Der Artikel gibt einen Überblick über die         bleibt. JBoss AS 7 bietet hier die Möglich-   Session oder einer zustandsbehafteten EJB-
Clustering-Funktionalitäten des JBoss Ap-         keit, verschiedene Server zu einem Cluster    Komponente über einen Cache zwischen
plication Server (AS) in der Version 7 und        zu kombinieren und die interne Server-        den jeweiligen Server-Instanzen zu vertei-
zeigt anhand einer Beispielanwendung,             Topologie vor den Klienten zu verbergen.      len (siehe Abbildung 2). Bei diesem Aufbau
wie man eine Java-EE-Anwendung cluster-              Hochverfügbarkeit einer Anwendung          müssen die Server-Instanzen eines Clusters
fähig implementiert und einen einfachen           kann dabei in unterschiedlichen Ausprä-       untereinander kommunizieren und Kennt-
Cluster betreibt. Er bietet darüber hinaus        gungen erreicht werden. Für eine Web-An-      nis über die Cluster-Topologie haben, um
einen Ausblick auf die Nutzung des Domain         wendung wäre es beispielsweise möglich,       die jeweiligen Sitzungsdaten zu replizieren.
Mode zum dynamischen Skalieren und zum            die Anfragen über einen Load-Balancer an      Die Ausfallsicherheit wird hierbei zulasten
Verwalten einer Cluster-Umgebung.                 die einzelnen Server-Instanzen des Clus-      der Skalierbarkeit erhöht, da jeder Server
                                                  ters zu verteilen (siehe Abbildung 1).        neben seinen eigenen Daten aus Redun-
Einführung                                           Bei dieser Topologie werden die Server     danzgründen auch die Sitzungsdaten an-
Da verschiedene Ausfälle, etwa bei der            unabhängig voneinander betrieben und          derer Server des Clusters vorhält.
Stromversorgung oder der Hardware, auf            haben keinerlei Kenntnis davon, dass sie
längere Zeit nicht vermeidbar sind, ist es        gemeinsam in einem Cluster arbeiten. Das      Verwendete Technologien
meist notwendig, Software redundant               setzt voraus, dass der eingesetzte Load-      Um Hochverfügbarkeit zu unterstützen,
auszulegen, damit bei einer Störung das           Balancer Anfragen eines Klienten immer        müssen die Daten innerhalb des Clusters
System in bestimmtem Umfang verfügbar             an den gleichen Server weiterleitet und       repliziert werden, damit die Sitzungsdaten


                                                                                                                 Java aktuell 2-2013 | 21
Hochve r fü g b a r ke it




auf mehreren Server-Instanzen redundant         verteilung und Failover für eine Web-An-           Cluster-Topologie wird einem entfernten
vorgehalten sind. Bei einem Server-Ausfall      wendung um. Die „mod_cluster“-Module               EJB-Klienten nach einer initialen Verbin-
kann der Klient dann auf einen anderen          bieten in Verbindung mit JBoss AS 7 einige         dung mitgeteilt. Weitere EJB-Aufrufe sind
Server des Clusters umgeleitet werden,          Vorteile, da dieser ein Subsystem für die In-      ab diesem Zeitpunkt bereits ohne zusätz-
ohne dass dieser hiervon Kenntnis nimmt.        tegration von „mod_cluster“ enthält. Die-          liche Konfiguration standardmäßig per
Im JBoss AS 7 wird dazu der verteilte Cache     ses bietet unter anderem die Möglichkeit,          Zufalls-Algorithmus an die Server-Instan-
Infinispan [1] als Fundament für die Repli-     verschiedene Metriken für eine intelligen-         zen verteilt. Werden die Sitzungsdaten ei-
kation der Sitzungsdaten verwendet. In-         te Lastverteilung der Anfragen auf Seiten          ner zustandsbehafteten EJB-Komponente
nerhalb einer Java-EE-Anwendung sind            des HTTP-Servers mit einzubeziehen. Die            repliziert, erfolgt im Fehlerfall ein trans-
transiente Zustände auf mehreren Ebenen         Lastkennzahl wird serverseitig berechnet           parentes Failover. Zur Erhöhung der Aus-
zu verwalten, beispielsweise die Daten          und berücksichtigt Faktoren wie zum Bei-           fallsicherheit sollten jedoch mehrere an-
einer HTTP-Session oder der Zustand ei-         spiel die Anzahl aktiver HTTP-Sessions, die        fängliche Verbindungen konfiguriert sein,
ner EJB-Komponente. Dementsprechend             CPU-Auslastung oder den Speicherver-               da ansonsten bei einem Ausfall der initia-
enthält der JBoss AS 7 vier vorkonfigurier-     brauch des Servers. Ein weiterer Vorteil ist,      len Server-Instanz die Cluster-Topologie
te sogenannte „Cache-Container“ für die         dass die Server-Instanzen im Gegensatz zu          nicht übertragen werden kann.
Replikation der Daten:                          „mod_jk“ dynamisch über IP-Multicast er-
                                                kannt und eingebunden werden.                      Cluster-fähige Anwendung
    web                                            Lastverteilung und Failover für ent-            Damit eine Java-EE-Anwendung in einem
    Replikation von HTTP-Session-Daten          fernte EJB-Klienten werden von der JBoss-          Cluster betrieben werden kann, muss sie
    sfsb                                        EJB-Client-Bibliothek [5] unterstützt. Die         entsprechend konfiguriert sein. Erst dann
    Replikation der Verbindungs- und Sit-
    zungsdaten von Stateful-Session-Beans
    hibernate
    Second-Level-Cache für JPA/Hibernate
    cluster
    Replikation allgemeiner Objekte in ei-
    nem Cluster

Um tatsächlich Daten zwischen den ein-
zelnen Server-Instanzen zu übertragen,
benutzt Infinispan „JGroups“ [2] als grund-
legendes Subsystem. Dies ist ein Frame-
work für die Kommunikation innerhalb
einer Gruppe von verteilten Knoten. Es
stellt Operationen zur Verfügung, um neue
Knoten zu einem Cluster hinzuzufügen,
Knoten explizit zu entfernen sowie fehler-
hafte Knoten zu erkennen und automa-
tisch auszusortieren. JGroups unterstützt
verschiedene Netzwerk-Protokolle, um
den Anforderungen des jeweiligen Netzes
gerecht zu werden.
    JBoss AS 7 beinhaltet zwei vorkonfigu-
rierte Protokoll-Stacks für eine verlässliche   Abbildung 2: Cluster-Topologie mit Failover und Lastverteilung
Kommunikation zwischen den Server-
Instanzen des Clusters: einen UDP-basier-
ten (Standard) und einen TCP-basierten
Protokoll-Stack. Beide Stacks verwenden
IP-Multicasts zum Auffinden anderer Ser-
ver-Instanzen. Zum Verteilen von Informa-        @org.jboss.ejb3.annotation.Clustered               <web-app>
                                                 @Stateful                                           <distributable/>
tionen hingegen verwendet lediglich der
                                                 public class ClusteredStatefulBean {               </web-app>
UDP-basierte Stack IP-Multicasts.                  ...
                                                 }
Lastverteilung und Failover
Beispielsweise die Apache-Module „mod_
jk“ [3] oder „mod_cluster“ [4] setzen Last-     Listing 1                                          Listing 2


22 |
iii
                                                                                                                                         iii
                                                                                                                                       iii
                                                                                                                         www.ijug.eu




                                                                                                                                        iii
stehen die Dienste des Applikationsser-         sein. Da innerhalb einer Domäne mehrere
vers für den Betrieb eines Clusters, wie die    Server-Instanzen verwaltet werden kön-
Cache-Container zur Replikation der Daten       nen und auch zur Laufzeit Server-Instan-        <domain xmlns=“urn:jboss:domain:1.3“>
                                                                                                 ...
oder die Gruppenkommunikation über              zen einer Servergruppe hinzugefügt und
                                                                                                 <server-groups>
JGroups, der Anwendung zur Verfügung.           entfernt werden, ist der Domain Mode ide-
    Enterprise-JavaBeans sind die Kern-         al zur Verwaltung eines Clusters geeignet.          <socket-binding-group ref=“ha-sockets“ />
Komponenten einer Java-EE-Anwendung.                Eine Domäne kann aus mehreren phy-            </server-group>
EJB-Komponenten bieten unter anderem            sischen oder virtuellen Hosts bestehen.          </server-groups>
deklaratives Transaktions- und Sicherheits-     Jeder Host benötigt einen Host-Controller,      </domain>

Management. Um eine EJB-Komponente              der den Lebenszyklus der Server-Instanzen
in einem Cluster zu betreiben, muss dieses      verwaltet. Die gesamte Domäne wird von
dem Server durch eine Annotation oder           einem Domain-Controller verwaltet und          Listing 3
per XML-Deployment-Deskriptor mitge-            stellt die Schnittstelle für Verwaltungsauf-
teilt werden. Listing 1 zeigt, wie beispiels-   gaben zur Verfügung (siehe Abbildung 3).
weise eine Stateful-Session-Bean aussieht.          Die Controller und die Server-Instan-       <host name=“master“ xmlns=“urn:jboss:domain:1.3“>
    Es ist jedoch zu beachten, dass bei einer   zen von jedem Host sind separate JVM-            ...
                                                                                                 <domain-controller>
Stateful-Session-Bean die Replikation mit       Prozesse. Es gibt zusätzlich noch einen
                                                                                                    <local/>
einem zusätzlichen Aufwand verbunden            Prozess-Controller. Dieser ist ebenfalls ein     </domain-controller>
ist. Da bei der Replikation die Komponen-       separater JVM-Prozess, der dafür verant-         ...
te serialisiert werden muss, wird sie zuvor     wortlich ist, den Lebenszyklus des Host-        </host>
passiviert. Das bedeutet, dass die Kompo-       Controller-Prozesses zu überwachen. Aus
nente vor jedem Replikationsvorgang pas-        Gründen der Ausfallsicherheit und um die       Listing 4
siviert und entsprechend vor dem näch-          Verwaltungsaufgaben von den Server-
sten Aufruf wieder aktiviert werden muss.       Instanzen der Domäne zu trennen, ist es
Dies übernimmt der Applikationsserver.          empfehlenswert, den Domain-Controller           ./domain.sh 
Der Entwickler sollte sich der hinzugefüg-      auf einem gesonderten Host zu betreiben.
ten Komplexität bewusst sein, da die Per-           Für die Konfiguration einer Domäne            -Djboss.bind.address.management=10.0.0.1
formanz beeinträchtigt wird.                    sind die beiden Dateien „domain.xml“ und
    Auch Stateless-Session-Beans können         „host.xml“ aus dem Verzeichnis „$JBOSS_        Listing 5
mit den Annotation „@Clustered“ versehen        HOME/domain/configuration“ relevant.
sein. Es ist zwar kein Zustand im Cluster zu        „domain.xml“ enthält die Konfigura-
replizieren, jedoch können dann die Aufru-      tionsrichtlinien der Domäne. Der Domain-        <host name=“server1“ xmlns=“urn:jboss:domain:1.3“>
fe entfernter Klienten dynamisch auf den        Controller verwaltet die Datei zentral und       ...
gesamten Cluster verteilt werden.               der Host-Controller verteilt die Konfigu-       </host>
    Bei Web-Anwendungen muss eben-              ration an die Server-Instanzen. Die Konfi-
so kenntlich sein, dass die HTTP-Sessions       guration enthält die Servergruppen, ver-       Listing 6
repliziert werden sollen. Das wird dem          schiedene Profile, Socket-Binding-Groups
Applikationsserver durch das Element            sowie die Zuordnung von jeweils einem
„<distributable/>“ in der Datei „web.xml“       Konfigurationsprofil und einer Socket-Bin-      <host name=”server1” xmlns=”urn:jboss:domain:1.3”>
mitgeteilt (siehe Listing 2).                   ding-Group zu einer Servergruppe.                ...
                                                    Host- und Domain-Controller sind je-         <domain-controller>
Der Domain Mode                                 weils über die Datei „host.xml“ konfigu-            <remote host=”${jboss.domain.master.address}”
Der Domain Mode ist eine Betriebsart des        riert. Die Konfiguration umfasst, welche        port=”9999” username=”domainadmin” security-
                                                                                                realm=”ManagementRealm”/>
JBoss AS 7. Er ermöglicht eine zentralisier-    Server auf einem lokalen Host existieren,
                                                                                                 </domain-controller>
te Verwaltung mehrerer Server-Instanzen.        wie der Domain-Controller erreicht wird          ...
Das umfasst die Konfiguration, die Bereit-      und welcher Host-Controller die Rolle des       </host>
stellung von Anwendungen sowie das              Domain-Controllers übernimmt.
Starten und Stoppen von Server-Instan-              Um einen Domain-Controller aufzuset-       Listing 7
zen. Dazu werden die einzelnen Server je-       zen, richtet man als Erstes eine JBoss-AS-
weils einer Servergruppe zugeordnet.            7-Distribution ein und legt dort einen Ma-
                                                                                                ...
   Alle Server einer Servergruppe unterlie-     nagement-Benutzer an. Dieser dient den             <server-identities>
gen denselben Konfigurations-Richtlinien        Host-Controllern zur Authentifizierung
und betreiben die gleichen Anwendun-            und kann mithilfe des Skripts add-user.           </server-identities>
gen. Die Konfigurationen können bei Be-         sh angelegt werden. Wichtig ist, dass der       ...
darf auch mit individuellen, umgebungs-         Benutzer dem „ManagementRealm“ zuge-
spezifischen Eigenschaften parametrisiert       ordnet wird und zur Anmeldung an einem         Listing 8


                                                                                                                  Java aktuell 2-2013 | 23
Hochve r fü g b a r ke it




 ...                                                          Für den Domain-Controller kann die vor-        der Default-Wert der Hostname des Ser-
    <servers>                                                 konfigurierte Datei „host-master.xml“ be-      vers (siehe Listing 6). Die Konfiguration in
     <server name=“server-one“ group=“cluster-ha“ />          nutzt werden. Diese beinhaltet die not-        Listing 7 spezifiziert, wie der Domain-Con-
    </servers>
                                                              wendige Konfiguration für den Host, wie        troller erreichbar ist. Der Benutzername ist
 ...
                                                              zum Beispiel das physikalische Network-        der zuvor erstellte Management-Benutzer.
                                                              Binding der Management-Schnittstellen          Außerdem ist das Base64-kodierte Pass-
 Listing 9                                                    oder die JVM-Konfiguration. Mit dieser         wort bekanntzugeben (siehe Listing 8).
                                                              Konfiguration wird ein Host- zum Do-              Als letzter Schritt können nun die tat-
                                                              main-Controller (siehe Listing 4). Dieser      sächlichen Server-Instanzen hinzugefügt
 ./domain.sh                                                 kann mit dem Skript „domain.sh“ aus dem        werden (siehe Listing 9). Dabei wird eine
                                                              „bin“-Verzeichnis gestartet werden (siehe      Server-Instanz immer genau einer Server-
   -Djboss.domain.master.address=10.0.0.1                    Listing 5).                                    gruppe der Domäne zugeordnet. Ein Host
   -Djboss.bind.address=10.0.0.2 
                                                                 Dem Domain-Controller können nun            wird ebenfalls mit dem Skript „domain.sh“
   -Djboss.bind.address.management=10.0.0.2
                                                              beliebig viele Hosts hinzugefügt werden.       aus dem bin-Verzeichnis gestartet (siehe
                                                              In unserem Beispiel kommt die vorkon-          Listing 10).
Listing 10                                                    figurierte Datei „slave-host.xml“ für die
                                                              Konfiguration des Host-Controllers zur         Eine Beispiel-Anwendung
                                                              Anwendung. Diese Datei ist ebenfalls im        Die Anwendung unter [6] ist mit dem Kom-
                                                              Verzeichnis der Domain-Konfiguration           mando „mvn package“ konstruiert und das
 ./jboss-cli.sh --connect 10.0.0.1:9999                       der JBoss-AS-7-Distribution enthalten. Es      resultierende Web-Archiv im Applikations-
 [domain@10.0.0.1:9999 /] deploy ./cluster-example-1.0-
                                                              muss ein eindeutiger Name für jeden Host       Server bereitgestellt. Die Anwendung be-
 SNAPSHOT.war --server-groups=cluster-ha
                                                              in der Domäne gewählt werden, damit es         steht aus einer Stateful-Session-Bean, die
                                                              nicht zu Konflikten kommt. Andernfalls ist     bei jedem Aufruf einen Zähler inkremen-
Listing 11



             Domain-Controller berechtigt ist. Das Pass-
             wort des neuen Benutzers wird zusätzlich
             Base64-kodiert ausgegeben. Dieser Wert
             ist später für die Authentifizierung des
             Host-Controllers erforderlich.
                 Der JBoss AS 7 ist bereits für den Betrieb
             eines Clusters vorkonfiguriert und bietet
             entsprechende Konfigurations-Profile an.
             Für kleinere Cluster-Topologien genügt es
             zunächst, am Ende der „domain.xml“-Datei
             eine Servergruppe zu konfigurieren (siehe
             Listing 3).
                 Jede Servergruppe benötigt einen ein-
             deutigen Namen und muss einem Profil
             der Domain-Konfiguration zugeordnet
             werden. Die Standard-Konfiguration ent-
             hält vier vorkonfigurierte Profile:

                 default
                 Java-EE-Web-Profil plus einige Erweite-
                 rungen wie RESTful-Web-Services
                 full
                 Java-EE-Full-Profil und alle Server-Fä-
                 higkeiten ohne Clustering
                 ha
                 Standard-Profil mit Clustering-Fähigkei-
                 ten
                 full-ha
                 Vollständiges Profil mit Clustering-Fä-
                 higkeiten                                    Abbildung 3: Verwaltung einer Cluster-Topologie im Domain Mode


             24 |
iii iii
                                                                                                                                                     iii
                                                                                                                                   www.ijug.eu




                                                                                                                                                         iii
                                                                                                  dieses Spannungsfeld eingehen und Clus-
                                                                                                  ter-Topologien diskutieren, die auch die
                                                                                                  Anforderungen an Rechenleistung und
                                                                                                  Verfügbarkeit gleichermaßen berücksich-
                                                                                                  tigen.

                                                                                                  Weiterführende Links
                                                                                                  [1]   http://www.jboss.org/infinispan
                                                                                                  [2]   http://www.jgroups.org
                                                                                                  [3]   http://tomcat.apache.org/connectors-doc
                                                                                                  [4]   http://www.jboss.org/mod_cluster
                                                                                                  [5]   https://github.com/jbossas/jboss-ejb-client
                                                                                                  [6]   https://github.com/akquinet/jbosscc-as7-
                                                                                                         examples/tree/master/cluster-example




                                                                                                                                      Heinz Wilming
                                                                                                                          heinz.wilming@akquinet.de

Abbildung 4: Die Management-Konsole von „mod_cluster“




tiert, und aus einer Stateless-Session-Bean,          Die Anwendung kann entweder über
die den Namen des ausführenden Servers            die Web-Konsole des Domain-Controllers
zurückgibt. Beide Session-Beans können            oder über das Command Line Interface
über eine JSF-Seite aufgerufen werden.            (CLI) bereitgestellt werden. Das CLI wird per
    Auf der „mod_cluster“-Projektseite [4]        Skript aus dem bin-Verzeichnis des JBoss AS
lässt sich eine Binär-Distribution des Apa-       gestartet (siehe Listing 11). Die Anwendung
che-Web-Servers mit „mod_cluster“ her-            ist danach über „http://127.0.0.1:6666/clus-
unterladen. Diese ist vorkonfiguriert und         ter” verfügbar. Die Anfragen werden über
muss lediglich mit „/opt/jboss/httpd/sbin/        den Cluster verteilt und bei einem Ausfall      Heinz Wilming ist Leiter des JBoss Competence Center der akqui-
apache-ctl start“ im „root“-Verzeichnis           erfolgt ein Failover.                           net AG. Er beschäftigt sich dort mit Technologien und Architek-
                                                                                                  turen für verteilte Anwendungen. Sein Fokus liegt dabei auf der
entpackt und gestartet werden. Wenn der
                                                                                                  Java-EE-Plattform und den Open-Source-Technologien.
Cluster bereits gestartet ist, sind die regist-   Fazit
rierten Server unter „http://127.0.0.1:6666/      JBoss AS 7 bietet ausgereifte Technologi-
mod_cluster_manager” sichtbar (siehe Ab-          en, um kritische Java-EE-Anwendungen
bildung 4).                                       hochverfügbar auf Ebene der Middleware
                                                  zu betreiben. Die enthaltenen Profile sind
                                                  bereits für kleinere Cluster-Topologien ent-                                      Immanuel Sims
                                                  sprechend konfiguriert. Der Domain Mode                               immanuel.sims@akquinet.de
                                                  des Applikationsservers verwaltet komfor-
   Unsere Inserenten                              tabel mehrere Server-Instanzen. Jedoch
                                                  birgt ein Cluster eine enorme Komplexität,
 aformatik Training und Consulting                die Detailkenntnisse der grundlegenden
 GmbH & Co. KG                          S. 3      Technologien „JGroups“ und „Infinispan“
 www.aformatik.de                                 erfordert. Für geschäftskritische Anwen-
                                                  dungen ist daher der Einsatz der offiziellen
 DOAG Deutsche ORACLE-
 Anwendergruppe e.V.                    U2        Produkte von Red Hat zu empfehlen. Diese
 www.doag.org                                     sind ebenfalls Open-Source-Software, ba-
                                                  sierend auf den Community-Produkten.
 Trivadis GmbH                          U4           Darüber hinaus ist zu beachten, dass         Immanuel Sims ist als Werkstudent bei der akquinet AG tätig. Er
 www.trivadis.com                                 eine hohe Verfügbarkeit die Skalierbar-         studiert Informatik an der Humboldt Universität in Berlin und hat
                                                  keit einer Anwendung einschränken kann.         sich intensiv mit dem Thema „Clustering“ im Kontext des JBoss AS
                                                  In der nächsten Ausgabe werden wir auf          7 beschäftigt.



                                                                                                                           Java aktuell 2-2013 | 25
Javaaktuell                                                                                                                                                        www.ijug.eu
                                                                                                                                                                                                                                         2-2013 | Sommer | www. ijug.eu




                                                                                                                                                                                                                                                                                                                                    JETZT
                                                                                                                                                                                                                                                                                                                                ABO
                                                                                                                                                                                                     Praxis. Wissen. Networking. Das Magazin für Entwickler




                                                                                           Javaaktuell
                                                                                                                                                                                         Java verbreitet sich überall
                                                                                                                                                                                                                                                                                                                              BESTE
                                                                                                                                                                                                                                                                                                                                           LLEN
                                                                                                                                                                                         Ausblicke
                                                                                                                                                                                         JDeveloper 12c, Seite 8




                                                                                             D: 4,90 EUR A: 5,60 EUR CH: 9,80 CHF Benelux: 5,80 EUR ISSN 2191-6977
                                                                                                                                                                                         Android goes Gradle, Seite 29


                                                                                                                                                                                         Hochverfügbarkeit
                                                                                                                                                                                         JBoss AS7, Seite 21
                                                                                                                                                                                                                                                                          Sichern Sie sich
                                                                                                                                                                                                                                                                          4 Ausgaben für 18 EUR
                                                                                                                                                                                         Web-Entwicklung
                                                                                                                                                                                         Play!, Seite 32
                                                                                                                                                                                         Linked Data, Seite 38


                                                                                                                                                                                         Java und Oracle
                                                                                                                                                                                         Continous Integration, Seite 59



                                                                                                                                                                                                                                                                          Für Oracle-Anwender und Interessierte gibt es das Java aktuell
                                                                                                                                                                                                                                                                          Abonnement auch mit zusätzlich sechs Ausgaben im Jahr der




                                                                                                                                                                                                                                                           iii iii
                                                                                                                                                                                                                                                                          Fachzeitschrift DOAG News und vier Ausgaben im Jahr Busi-




                                                                                                                                                                                                                                                        iii iii
                                                                                                                                                                     02
                                                                                                                                                                                                                                                          iJUG




                                                                                                                                                                     4 191978 304903
                                                                                                                                                                                                                                                          Verbund         ness News zusammen für 70 EUR. Weitere Informationen unter
                                                                                                                                                                                                                                                                          www.doag.org/shop/
DOAG 2013 Development                                        19. Juni 2013, Bonn
                                                                                            FAXEN SIE DAS AUSGEFÜLLTE FORMULAR AN
                                                                                            0700 11 36 24 39

Eine Konferenz für den Erfahrungsaustausch von Software-Entwicklern                         ODER BESTELLEN SIE ONLINE
                                                                                            go.ijug.eu/go/abo


                                                                        FRÜH                Interessenverbund der Java User Groups e.V.

                                                                       BIS 2 BUCH
                                                                                            Tempelhofer Weg 64
           Themen:    DB Programmierung: PL/SQL, APEX, Spatial
                                                                            2. MA ER        12347 Berlin
                      BPM & Software-Architektur                                 I 2013
                      Java & Open Source                                                    + + + AUSFÜLLEN + + + AUSSCHNEIDEN + + + ABSCHICKEN + + + AUSFÜLLEN + + + AUSSCHNEIDEN + + + ABSCHICKEN + + + AUSFÜLLEN
                      Forms, Reports, ADF und BI Publisher
                                                                                                                                                                                       Ja, ich bestelle das Abo Java aktuell – das IJUG-Magazin: 4 Ausgaben zu 18 EUR/Jahr
                                                                                                                                                                                       Ja, ich bestelle den kostenfreien Newsletter: Java aktuell – der iJUG-Newsletter
                                                                                            ANSCHRIFT                                                                                                                                                                                 GGF. ABWEICHENDE RECHNUNGSANSCHRIFT

                     Im Fokus:
                                                                                            Name, Vorname                                                                                                                                                                             Straße, Hausnummer
                     Agile and Beyond – Projektmanagement
                     in der Oracle-Software-Entwicklung
                                                                                            Firma                                                                                                                                                                                     PLZ, Ort



                     Wohin geht die Reise? (Part Two)                                       Abteilung                                                                                                                                                                                 E-Mail


                                                                                            Straße, Hausnummer                                                                                                                                                                        Telefonnummer


                                                                                            PLZ, Ort                                                                                                                                                                                  Die allgemeinen Geschäftsbedingungen* erkenne ich an, Datum, Unterschrift


                                                                                            *Allgemeine Geschäftsbedingungen:
                                                                                            Zum Preis von 18 Euro (inkl. MwSt.) pro Kalenderjahr erhalten Sie vier Ausgaben der Zeitschrift “Java aktuell - das iJUG-Magazin“ direkt nach Erscheinen per Post zugeschickt. Die Abonnementgebühr wird jeweils im
                                                             http://development.doag.org
                                                                                            Januar für ein Jahr fällig. Sie erhalten eine entsprechende Rechung. Abonnementverträge, die während eines Jahres beginnen, werden mit 4,90 Euro (inkl. MwSt.) je volles Quartal berechnet. Das Abonnement verlän-
                                                                                            gert sich automatisch um ein weiteres Jahr, wenn es nicht bis zum 31. Oktober eines Jahres schriftlich gekündigt wird. Die Wiederrufsfrist beträgt 14 Tage ab Vertragserklärung in Textform ohne Angabe von Gründen.

Mais conteúdo relacionado

Mais de hwilming

SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss TechnologiesSAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologieshwilming
 
JPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEJPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEhwilming
 
Optimierung von JPA-­Anwendungen
Optimierung von JPA-­AnwendungenOptimierung von JPA-­Anwendungen
Optimierung von JPA-­Anwendungenhwilming
 
Integrating SAP the Java EE Way - JBoss One Day talk 2012
Integrating SAP the Java EE Way - JBoss One Day talk 2012Integrating SAP the Java EE Way - JBoss One Day talk 2012
Integrating SAP the Java EE Way - JBoss One Day talk 2012hwilming
 
Aerogear Java User Group Presentation
Aerogear Java User Group PresentationAerogear Java User Group Presentation
Aerogear Java User Group Presentationhwilming
 
The Gear you need to go mobile with Java Enterprise - Jax 2012
The Gear you need to go mobile with Java Enterprise - Jax 2012The Gear you need to go mobile with Java Enterprise - Jax 2012
The Gear you need to go mobile with Java Enterprise - Jax 2012hwilming
 
Need(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EENeed(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EEhwilming
 
Need(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EENeed(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EEhwilming
 

Mais de hwilming (8)

SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss TechnologiesSAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologies
 
JPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEJPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SE
 
Optimierung von JPA-­Anwendungen
Optimierung von JPA-­AnwendungenOptimierung von JPA-­Anwendungen
Optimierung von JPA-­Anwendungen
 
Integrating SAP the Java EE Way - JBoss One Day talk 2012
Integrating SAP the Java EE Way - JBoss One Day talk 2012Integrating SAP the Java EE Way - JBoss One Day talk 2012
Integrating SAP the Java EE Way - JBoss One Day talk 2012
 
Aerogear Java User Group Presentation
Aerogear Java User Group PresentationAerogear Java User Group Presentation
Aerogear Java User Group Presentation
 
The Gear you need to go mobile with Java Enterprise - Jax 2012
The Gear you need to go mobile with Java Enterprise - Jax 2012The Gear you need to go mobile with Java Enterprise - Jax 2012
The Gear you need to go mobile with Java Enterprise - Jax 2012
 
Need(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EENeed(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EE
 
Need(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EENeed(le) for Speed - Effective Unit Testing for Java EE
Need(le) for Speed - Effective Unit Testing for Java EE
 

JavaAktuell - Hochverfügbarkeit mit dem JBoss AS 7

  • 1. Javaaktuell 2-2013 | Sommer | www. ijug.eu Praxis. Wissen. Networking. Das Magazin für Entwickler Javaaktuell Java verbreitet sich überall Ausblicke JDeveloper 12c, Seite 8 D: 4,90 EUR A: 5,60 EUR CH: 9,80 CHF Benelux: 5,80 EUR ISSN 2191-6977 Android goes Gradle, Seite 29 Hochverfügbarkeit JBoss AS7, Seite 21 Web-Entwicklung Play!, Seite 32 Linked Data, Seite 38 Java und Oracle iii iii iii Continous Integration, Seite 59 iii iJUG Verbund ru ck rd 02 e nd 4 191978 304903 S o
  • 2. I nha l t 3 Editorial 59 Drillinge − bei der Geburt getrennt. 66 DevFest Vienna 2012 Wolfgang Taschner Wie PL/SQL, Apex und Continuous Dominik Dorn Integration wieder zusammenfinden Markus Heinisch 5 Das Java-Tagebuch 25 Unsere Inserenten Andreas Badelt 62 Datenschutz-konformes Social Sharing mit Liferay 8 Oracle JDeveloper 12c – ein Ausblick 28 Die iJUG-Mitglieder auf einen Blick Michael Jerger Frank Nimphius 65 Unbekannte Kostbarkeiten des SDK 37 Impressum 13 Asynchrone Datenabfragen Heute: Der ZIP-File-System-Provider mit DataFX Bernd Müller Hendrik Ebbers 17 Stolperfallen bei der Software-Architektur Frank Pientka 21 Hochverfügbarkeit mit dem JBoss AS 7 Heinz Wilming und Immanuel Sims 29 Android goes Gradle Heiko Maaß 32 Web-Apps mit „Play!“ entwickeln – nichts leichter als das! Andreas Koop Lastverteilung zum Erreichen der Hochverfügbarkeit, Seite 20 38 Linked-Data-Praxis: Daten bereitstellen und verwerten Angelo Veltens 42 Vagrant: Continuous Delivery ganz einfach Sebastian Laag 45 Cobol und Java: Zwei Sprachen kommen sich näher Rolf Becking 48 Continuous Bugfixing in großen Projekten Jürgen Nicolai Build-Kreislauf beim Continuous Integration, Seite 59 53 „Wir sollten das Oracle-Bashing unterlassen …“ Interview mit Falk Hartmann, Dies ist ein Sonderdruck aus der Java aktuell. Er enthält einen ausgewähl- Java UserGroup Saxony ten Artikel aus der Ausgabe 02/2013. Das Veröffentlichen des PDFs bzw. die Verteilung eines Ausdrucks davon ist lizenzfrei erlaubt. 54 Pragmatisches Testen mit System Martin Böhm Weitere Informationen unter www.ijug.eu 4 |
  • 3. iiiiii iii www.ijug.eu iii Hochverfügbarkeit mit dem JBoss AS 7 Heinz Wilming und Immanuel Sims, akquinet AG Die Gruppierung mehrerer Server zu einem Cluster ist eine wichtige Eigenschaft eines Java-EE-Servers für den Betrieb kritischer Geschäftsanwendungen. Dies gewährleistet zum einen eine hohe Verfügbarkeit und zum anderen die Skalierbarkeit der Anwendung bei wachsender Last. erst bei einer Störung auf einen anderen ausweicht. Das ist notwendig, da die Sit- zungsdaten eines Klienten nicht zwischen den beteiligten Servern repliziert werden. Die Assoziation der Sitzung eines Klienten mit dem jeweiligen Server wird als „sticky session“ bezeichnet. Stürzt ein Server ab, gehen alle transienten Daten verloren. Der Klient wird allerdings mit der nächsten An- frage auf einen anderen Server umgeleitet (Failover) und könnte auf Basis eines ge- meinsamen persistenten Datenbestands weiterarbeiten. Dieser Ansatz lässt sich relativ leicht umsetzen und ist effizient. Je- doch können mitunter wichtige Daten ver- lorengehen. Für einen Webshop würde ein verlorener Warenkorb bedeuten, dass der Kunde verärgert ist und die ausgewählten Artikel nicht kaufen wird. Damit auch transiente Sitzungsdaten Abbildung 1: Einfache Cluster-Topologie mit Lastverteilung nach einem Ausfall für die Klienten verfüg- bar sind, müssen sie auf anderen Servern des Clusters verfügbar sein. Dazu sind die Sitzungsdaten beispielsweise einer HTTP- Der Artikel gibt einen Überblick über die bleibt. JBoss AS 7 bietet hier die Möglich- Session oder einer zustandsbehafteten EJB- Clustering-Funktionalitäten des JBoss Ap- keit, verschiedene Server zu einem Cluster Komponente über einen Cache zwischen plication Server (AS) in der Version 7 und zu kombinieren und die interne Server- den jeweiligen Server-Instanzen zu vertei- zeigt anhand einer Beispielanwendung, Topologie vor den Klienten zu verbergen. len (siehe Abbildung 2). Bei diesem Aufbau wie man eine Java-EE-Anwendung cluster- Hochverfügbarkeit einer Anwendung müssen die Server-Instanzen eines Clusters fähig implementiert und einen einfachen kann dabei in unterschiedlichen Ausprä- untereinander kommunizieren und Kennt- Cluster betreibt. Er bietet darüber hinaus gungen erreicht werden. Für eine Web-An- nis über die Cluster-Topologie haben, um einen Ausblick auf die Nutzung des Domain wendung wäre es beispielsweise möglich, die jeweiligen Sitzungsdaten zu replizieren. Mode zum dynamischen Skalieren und zum die Anfragen über einen Load-Balancer an Die Ausfallsicherheit wird hierbei zulasten Verwalten einer Cluster-Umgebung. die einzelnen Server-Instanzen des Clus- der Skalierbarkeit erhöht, da jeder Server ters zu verteilen (siehe Abbildung 1). neben seinen eigenen Daten aus Redun- Einführung Bei dieser Topologie werden die Server danzgründen auch die Sitzungsdaten an- Da verschiedene Ausfälle, etwa bei der unabhängig voneinander betrieben und derer Server des Clusters vorhält. Stromversorgung oder der Hardware, auf haben keinerlei Kenntnis davon, dass sie längere Zeit nicht vermeidbar sind, ist es gemeinsam in einem Cluster arbeiten. Das Verwendete Technologien meist notwendig, Software redundant setzt voraus, dass der eingesetzte Load- Um Hochverfügbarkeit zu unterstützen, auszulegen, damit bei einer Störung das Balancer Anfragen eines Klienten immer müssen die Daten innerhalb des Clusters System in bestimmtem Umfang verfügbar an den gleichen Server weiterleitet und repliziert werden, damit die Sitzungsdaten Java aktuell 2-2013 | 21
  • 4. Hochve r fü g b a r ke it auf mehreren Server-Instanzen redundant verteilung und Failover für eine Web-An- Cluster-Topologie wird einem entfernten vorgehalten sind. Bei einem Server-Ausfall wendung um. Die „mod_cluster“-Module EJB-Klienten nach einer initialen Verbin- kann der Klient dann auf einen anderen bieten in Verbindung mit JBoss AS 7 einige dung mitgeteilt. Weitere EJB-Aufrufe sind Server des Clusters umgeleitet werden, Vorteile, da dieser ein Subsystem für die In- ab diesem Zeitpunkt bereits ohne zusätz- ohne dass dieser hiervon Kenntnis nimmt. tegration von „mod_cluster“ enthält. Die- liche Konfiguration standardmäßig per Im JBoss AS 7 wird dazu der verteilte Cache ses bietet unter anderem die Möglichkeit, Zufalls-Algorithmus an die Server-Instan- Infinispan [1] als Fundament für die Repli- verschiedene Metriken für eine intelligen- zen verteilt. Werden die Sitzungsdaten ei- kation der Sitzungsdaten verwendet. In- te Lastverteilung der Anfragen auf Seiten ner zustandsbehafteten EJB-Komponente nerhalb einer Java-EE-Anwendung sind des HTTP-Servers mit einzubeziehen. Die repliziert, erfolgt im Fehlerfall ein trans- transiente Zustände auf mehreren Ebenen Lastkennzahl wird serverseitig berechnet parentes Failover. Zur Erhöhung der Aus- zu verwalten, beispielsweise die Daten und berücksichtigt Faktoren wie zum Bei- fallsicherheit sollten jedoch mehrere an- einer HTTP-Session oder der Zustand ei- spiel die Anzahl aktiver HTTP-Sessions, die fängliche Verbindungen konfiguriert sein, ner EJB-Komponente. Dementsprechend CPU-Auslastung oder den Speicherver- da ansonsten bei einem Ausfall der initia- enthält der JBoss AS 7 vier vorkonfigurier- brauch des Servers. Ein weiterer Vorteil ist, len Server-Instanz die Cluster-Topologie te sogenannte „Cache-Container“ für die dass die Server-Instanzen im Gegensatz zu nicht übertragen werden kann. Replikation der Daten: „mod_jk“ dynamisch über IP-Multicast er- kannt und eingebunden werden. Cluster-fähige Anwendung web Lastverteilung und Failover für ent- Damit eine Java-EE-Anwendung in einem Replikation von HTTP-Session-Daten fernte EJB-Klienten werden von der JBoss- Cluster betrieben werden kann, muss sie sfsb EJB-Client-Bibliothek [5] unterstützt. Die entsprechend konfiguriert sein. Erst dann Replikation der Verbindungs- und Sit- zungsdaten von Stateful-Session-Beans hibernate Second-Level-Cache für JPA/Hibernate cluster Replikation allgemeiner Objekte in ei- nem Cluster Um tatsächlich Daten zwischen den ein- zelnen Server-Instanzen zu übertragen, benutzt Infinispan „JGroups“ [2] als grund- legendes Subsystem. Dies ist ein Frame- work für die Kommunikation innerhalb einer Gruppe von verteilten Knoten. Es stellt Operationen zur Verfügung, um neue Knoten zu einem Cluster hinzuzufügen, Knoten explizit zu entfernen sowie fehler- hafte Knoten zu erkennen und automa- tisch auszusortieren. JGroups unterstützt verschiedene Netzwerk-Protokolle, um den Anforderungen des jeweiligen Netzes gerecht zu werden. JBoss AS 7 beinhaltet zwei vorkonfigu- rierte Protokoll-Stacks für eine verlässliche Abbildung 2: Cluster-Topologie mit Failover und Lastverteilung Kommunikation zwischen den Server- Instanzen des Clusters: einen UDP-basier- ten (Standard) und einen TCP-basierten Protokoll-Stack. Beide Stacks verwenden IP-Multicasts zum Auffinden anderer Ser- ver-Instanzen. Zum Verteilen von Informa- @org.jboss.ejb3.annotation.Clustered <web-app> @Stateful <distributable/> tionen hingegen verwendet lediglich der public class ClusteredStatefulBean { </web-app> UDP-basierte Stack IP-Multicasts. ... } Lastverteilung und Failover Beispielsweise die Apache-Module „mod_ jk“ [3] oder „mod_cluster“ [4] setzen Last- Listing 1 Listing 2 22 |
  • 5. iii iii iii www.ijug.eu iii stehen die Dienste des Applikationsser- sein. Da innerhalb einer Domäne mehrere vers für den Betrieb eines Clusters, wie die Server-Instanzen verwaltet werden kön- Cache-Container zur Replikation der Daten nen und auch zur Laufzeit Server-Instan- <domain xmlns=“urn:jboss:domain:1.3“> ... oder die Gruppenkommunikation über zen einer Servergruppe hinzugefügt und <server-groups> JGroups, der Anwendung zur Verfügung. entfernt werden, ist der Domain Mode ide- Enterprise-JavaBeans sind die Kern- al zur Verwaltung eines Clusters geeignet. <socket-binding-group ref=“ha-sockets“ /> Komponenten einer Java-EE-Anwendung. Eine Domäne kann aus mehreren phy- </server-group> EJB-Komponenten bieten unter anderem sischen oder virtuellen Hosts bestehen. </server-groups> deklaratives Transaktions- und Sicherheits- Jeder Host benötigt einen Host-Controller, </domain> Management. Um eine EJB-Komponente der den Lebenszyklus der Server-Instanzen in einem Cluster zu betreiben, muss dieses verwaltet. Die gesamte Domäne wird von dem Server durch eine Annotation oder einem Domain-Controller verwaltet und Listing 3 per XML-Deployment-Deskriptor mitge- stellt die Schnittstelle für Verwaltungsauf- teilt werden. Listing 1 zeigt, wie beispiels- gaben zur Verfügung (siehe Abbildung 3). weise eine Stateful-Session-Bean aussieht. Die Controller und die Server-Instan- <host name=“master“ xmlns=“urn:jboss:domain:1.3“> Es ist jedoch zu beachten, dass bei einer zen von jedem Host sind separate JVM- ... <domain-controller> Stateful-Session-Bean die Replikation mit Prozesse. Es gibt zusätzlich noch einen <local/> einem zusätzlichen Aufwand verbunden Prozess-Controller. Dieser ist ebenfalls ein </domain-controller> ist. Da bei der Replikation die Komponen- separater JVM-Prozess, der dafür verant- ... te serialisiert werden muss, wird sie zuvor wortlich ist, den Lebenszyklus des Host- </host> passiviert. Das bedeutet, dass die Kompo- Controller-Prozesses zu überwachen. Aus nente vor jedem Replikationsvorgang pas- Gründen der Ausfallsicherheit und um die Listing 4 siviert und entsprechend vor dem näch- Verwaltungsaufgaben von den Server- sten Aufruf wieder aktiviert werden muss. Instanzen der Domäne zu trennen, ist es Dies übernimmt der Applikationsserver. empfehlenswert, den Domain-Controller ./domain.sh Der Entwickler sollte sich der hinzugefüg- auf einem gesonderten Host zu betreiben. ten Komplexität bewusst sein, da die Per- Für die Konfiguration einer Domäne -Djboss.bind.address.management=10.0.0.1 formanz beeinträchtigt wird. sind die beiden Dateien „domain.xml“ und Auch Stateless-Session-Beans können „host.xml“ aus dem Verzeichnis „$JBOSS_ Listing 5 mit den Annotation „@Clustered“ versehen HOME/domain/configuration“ relevant. sein. Es ist zwar kein Zustand im Cluster zu „domain.xml“ enthält die Konfigura- replizieren, jedoch können dann die Aufru- tionsrichtlinien der Domäne. Der Domain- <host name=“server1“ xmlns=“urn:jboss:domain:1.3“> fe entfernter Klienten dynamisch auf den Controller verwaltet die Datei zentral und ... gesamten Cluster verteilt werden. der Host-Controller verteilt die Konfigu- </host> Bei Web-Anwendungen muss eben- ration an die Server-Instanzen. Die Konfi- so kenntlich sein, dass die HTTP-Sessions guration enthält die Servergruppen, ver- Listing 6 repliziert werden sollen. Das wird dem schiedene Profile, Socket-Binding-Groups Applikationsserver durch das Element sowie die Zuordnung von jeweils einem „<distributable/>“ in der Datei „web.xml“ Konfigurationsprofil und einer Socket-Bin- <host name=”server1” xmlns=”urn:jboss:domain:1.3”> mitgeteilt (siehe Listing 2). ding-Group zu einer Servergruppe. ... Host- und Domain-Controller sind je- <domain-controller> Der Domain Mode weils über die Datei „host.xml“ konfigu- <remote host=”${jboss.domain.master.address}” Der Domain Mode ist eine Betriebsart des riert. Die Konfiguration umfasst, welche port=”9999” username=”domainadmin” security- realm=”ManagementRealm”/> JBoss AS 7. Er ermöglicht eine zentralisier- Server auf einem lokalen Host existieren, </domain-controller> te Verwaltung mehrerer Server-Instanzen. wie der Domain-Controller erreicht wird ... Das umfasst die Konfiguration, die Bereit- und welcher Host-Controller die Rolle des </host> stellung von Anwendungen sowie das Domain-Controllers übernimmt. Starten und Stoppen von Server-Instan- Um einen Domain-Controller aufzuset- Listing 7 zen. Dazu werden die einzelnen Server je- zen, richtet man als Erstes eine JBoss-AS- weils einer Servergruppe zugeordnet. 7-Distribution ein und legt dort einen Ma- ... Alle Server einer Servergruppe unterlie- nagement-Benutzer an. Dieser dient den <server-identities> gen denselben Konfigurations-Richtlinien Host-Controllern zur Authentifizierung und betreiben die gleichen Anwendun- und kann mithilfe des Skripts add-user. </server-identities> gen. Die Konfigurationen können bei Be- sh angelegt werden. Wichtig ist, dass der ... darf auch mit individuellen, umgebungs- Benutzer dem „ManagementRealm“ zuge- spezifischen Eigenschaften parametrisiert ordnet wird und zur Anmeldung an einem Listing 8 Java aktuell 2-2013 | 23
  • 6. Hochve r fü g b a r ke it ... Für den Domain-Controller kann die vor- der Default-Wert der Hostname des Ser- <servers> konfigurierte Datei „host-master.xml“ be- vers (siehe Listing 6). Die Konfiguration in <server name=“server-one“ group=“cluster-ha“ /> nutzt werden. Diese beinhaltet die not- Listing 7 spezifiziert, wie der Domain-Con- </servers> wendige Konfiguration für den Host, wie troller erreichbar ist. Der Benutzername ist ... zum Beispiel das physikalische Network- der zuvor erstellte Management-Benutzer. Binding der Management-Schnittstellen Außerdem ist das Base64-kodierte Pass- Listing 9 oder die JVM-Konfiguration. Mit dieser wort bekanntzugeben (siehe Listing 8). Konfiguration wird ein Host- zum Do- Als letzter Schritt können nun die tat- main-Controller (siehe Listing 4). Dieser sächlichen Server-Instanzen hinzugefügt ./domain.sh kann mit dem Skript „domain.sh“ aus dem werden (siehe Listing 9). Dabei wird eine „bin“-Verzeichnis gestartet werden (siehe Server-Instanz immer genau einer Server- -Djboss.domain.master.address=10.0.0.1 Listing 5). gruppe der Domäne zugeordnet. Ein Host -Djboss.bind.address=10.0.0.2 Dem Domain-Controller können nun wird ebenfalls mit dem Skript „domain.sh“ -Djboss.bind.address.management=10.0.0.2 beliebig viele Hosts hinzugefügt werden. aus dem bin-Verzeichnis gestartet (siehe In unserem Beispiel kommt die vorkon- Listing 10). Listing 10 figurierte Datei „slave-host.xml“ für die Konfiguration des Host-Controllers zur Eine Beispiel-Anwendung Anwendung. Diese Datei ist ebenfalls im Die Anwendung unter [6] ist mit dem Kom- Verzeichnis der Domain-Konfiguration mando „mvn package“ konstruiert und das ./jboss-cli.sh --connect 10.0.0.1:9999 der JBoss-AS-7-Distribution enthalten. Es resultierende Web-Archiv im Applikations- [domain@10.0.0.1:9999 /] deploy ./cluster-example-1.0- muss ein eindeutiger Name für jeden Host Server bereitgestellt. Die Anwendung be- SNAPSHOT.war --server-groups=cluster-ha in der Domäne gewählt werden, damit es steht aus einer Stateful-Session-Bean, die nicht zu Konflikten kommt. Andernfalls ist bei jedem Aufruf einen Zähler inkremen- Listing 11 Domain-Controller berechtigt ist. Das Pass- wort des neuen Benutzers wird zusätzlich Base64-kodiert ausgegeben. Dieser Wert ist später für die Authentifizierung des Host-Controllers erforderlich. Der JBoss AS 7 ist bereits für den Betrieb eines Clusters vorkonfiguriert und bietet entsprechende Konfigurations-Profile an. Für kleinere Cluster-Topologien genügt es zunächst, am Ende der „domain.xml“-Datei eine Servergruppe zu konfigurieren (siehe Listing 3). Jede Servergruppe benötigt einen ein- deutigen Namen und muss einem Profil der Domain-Konfiguration zugeordnet werden. Die Standard-Konfiguration ent- hält vier vorkonfigurierte Profile: default Java-EE-Web-Profil plus einige Erweite- rungen wie RESTful-Web-Services full Java-EE-Full-Profil und alle Server-Fä- higkeiten ohne Clustering ha Standard-Profil mit Clustering-Fähigkei- ten full-ha Vollständiges Profil mit Clustering-Fä- higkeiten Abbildung 3: Verwaltung einer Cluster-Topologie im Domain Mode 24 |
  • 7. iii iii iii www.ijug.eu iii dieses Spannungsfeld eingehen und Clus- ter-Topologien diskutieren, die auch die Anforderungen an Rechenleistung und Verfügbarkeit gleichermaßen berücksich- tigen. Weiterführende Links [1] http://www.jboss.org/infinispan [2] http://www.jgroups.org [3] http://tomcat.apache.org/connectors-doc [4] http://www.jboss.org/mod_cluster [5] https://github.com/jbossas/jboss-ejb-client [6] https://github.com/akquinet/jbosscc-as7- examples/tree/master/cluster-example Heinz Wilming heinz.wilming@akquinet.de Abbildung 4: Die Management-Konsole von „mod_cluster“ tiert, und aus einer Stateless-Session-Bean, Die Anwendung kann entweder über die den Namen des ausführenden Servers die Web-Konsole des Domain-Controllers zurückgibt. Beide Session-Beans können oder über das Command Line Interface über eine JSF-Seite aufgerufen werden. (CLI) bereitgestellt werden. Das CLI wird per Auf der „mod_cluster“-Projektseite [4] Skript aus dem bin-Verzeichnis des JBoss AS lässt sich eine Binär-Distribution des Apa- gestartet (siehe Listing 11). Die Anwendung che-Web-Servers mit „mod_cluster“ her- ist danach über „http://127.0.0.1:6666/clus- unterladen. Diese ist vorkonfiguriert und ter” verfügbar. Die Anfragen werden über muss lediglich mit „/opt/jboss/httpd/sbin/ den Cluster verteilt und bei einem Ausfall Heinz Wilming ist Leiter des JBoss Competence Center der akqui- apache-ctl start“ im „root“-Verzeichnis erfolgt ein Failover. net AG. Er beschäftigt sich dort mit Technologien und Architek- turen für verteilte Anwendungen. Sein Fokus liegt dabei auf der entpackt und gestartet werden. Wenn der Java-EE-Plattform und den Open-Source-Technologien. Cluster bereits gestartet ist, sind die regist- Fazit rierten Server unter „http://127.0.0.1:6666/ JBoss AS 7 bietet ausgereifte Technologi- mod_cluster_manager” sichtbar (siehe Ab- en, um kritische Java-EE-Anwendungen bildung 4). hochverfügbar auf Ebene der Middleware zu betreiben. Die enthaltenen Profile sind bereits für kleinere Cluster-Topologien ent- Immanuel Sims sprechend konfiguriert. Der Domain Mode immanuel.sims@akquinet.de des Applikationsservers verwaltet komfor- Unsere Inserenten tabel mehrere Server-Instanzen. Jedoch birgt ein Cluster eine enorme Komplexität, aformatik Training und Consulting die Detailkenntnisse der grundlegenden GmbH & Co. KG S. 3 Technologien „JGroups“ und „Infinispan“ www.aformatik.de erfordert. Für geschäftskritische Anwen- dungen ist daher der Einsatz der offiziellen DOAG Deutsche ORACLE- Anwendergruppe e.V. U2 Produkte von Red Hat zu empfehlen. Diese www.doag.org sind ebenfalls Open-Source-Software, ba- sierend auf den Community-Produkten. Trivadis GmbH U4 Darüber hinaus ist zu beachten, dass Immanuel Sims ist als Werkstudent bei der akquinet AG tätig. Er www.trivadis.com eine hohe Verfügbarkeit die Skalierbar- studiert Informatik an der Humboldt Universität in Berlin und hat keit einer Anwendung einschränken kann. sich intensiv mit dem Thema „Clustering“ im Kontext des JBoss AS In der nächsten Ausgabe werden wir auf 7 beschäftigt. Java aktuell 2-2013 | 25
  • 8. Javaaktuell www.ijug.eu 2-2013 | Sommer | www. ijug.eu JETZT ABO Praxis. Wissen. Networking. Das Magazin für Entwickler Javaaktuell Java verbreitet sich überall BESTE LLEN Ausblicke JDeveloper 12c, Seite 8 D: 4,90 EUR A: 5,60 EUR CH: 9,80 CHF Benelux: 5,80 EUR ISSN 2191-6977 Android goes Gradle, Seite 29 Hochverfügbarkeit JBoss AS7, Seite 21 Sichern Sie sich 4 Ausgaben für 18 EUR Web-Entwicklung Play!, Seite 32 Linked Data, Seite 38 Java und Oracle Continous Integration, Seite 59 Für Oracle-Anwender und Interessierte gibt es das Java aktuell Abonnement auch mit zusätzlich sechs Ausgaben im Jahr der iii iii Fachzeitschrift DOAG News und vier Ausgaben im Jahr Busi- iii iii 02 iJUG 4 191978 304903 Verbund ness News zusammen für 70 EUR. Weitere Informationen unter www.doag.org/shop/ DOAG 2013 Development 19. Juni 2013, Bonn FAXEN SIE DAS AUSGEFÜLLTE FORMULAR AN 0700 11 36 24 39 Eine Konferenz für den Erfahrungsaustausch von Software-Entwicklern ODER BESTELLEN SIE ONLINE go.ijug.eu/go/abo FRÜH Interessenverbund der Java User Groups e.V. BIS 2 BUCH Tempelhofer Weg 64 Themen: DB Programmierung: PL/SQL, APEX, Spatial 2. MA ER 12347 Berlin BPM & Software-Architektur I 2013 Java & Open Source + + + AUSFÜLLEN + + + AUSSCHNEIDEN + + + ABSCHICKEN + + + AUSFÜLLEN + + + AUSSCHNEIDEN + + + ABSCHICKEN + + + AUSFÜLLEN Forms, Reports, ADF und BI Publisher Ja, ich bestelle das Abo Java aktuell – das IJUG-Magazin: 4 Ausgaben zu 18 EUR/Jahr Ja, ich bestelle den kostenfreien Newsletter: Java aktuell – der iJUG-Newsletter ANSCHRIFT GGF. ABWEICHENDE RECHNUNGSANSCHRIFT Im Fokus: Name, Vorname Straße, Hausnummer Agile and Beyond – Projektmanagement in der Oracle-Software-Entwicklung Firma PLZ, Ort Wohin geht die Reise? (Part Two) Abteilung E-Mail Straße, Hausnummer Telefonnummer PLZ, Ort Die allgemeinen Geschäftsbedingungen* erkenne ich an, Datum, Unterschrift *Allgemeine Geschäftsbedingungen: Zum Preis von 18 Euro (inkl. MwSt.) pro Kalenderjahr erhalten Sie vier Ausgaben der Zeitschrift “Java aktuell - das iJUG-Magazin“ direkt nach Erscheinen per Post zugeschickt. Die Abonnementgebühr wird jeweils im http://development.doag.org Januar für ein Jahr fällig. Sie erhalten eine entsprechende Rechung. Abonnementverträge, die während eines Jahres beginnen, werden mit 4,90 Euro (inkl. MwSt.) je volles Quartal berechnet. Das Abonnement verlän- gert sich automatisch um ein weiteres Jahr, wenn es nicht bis zum 31. Oktober eines Jahres schriftlich gekündigt wird. Die Wiederrufsfrist beträgt 14 Tage ab Vertragserklärung in Textform ohne Angabe von Gründen.