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.
Der Artikel gibt einen Überblick über die Clustering-Funktionalitäten des JBoss Ap- plication Server (AS) in der Version 7 und zeigt anhand einer Beispielanwendung, wie man eine Java-EE-Anwendung cluster- fähig implementiert und einen einfachen Cluster betreibt. Er bietet darüber hinaus einen Ausblick auf die Nutzung des Domain Mode zum dynamischen Skalieren und zum Verwalten einer Cluster-Umgebung.
JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7hwilming
Hohe Verfügbarkeit und hohe Skalierbarkeit sind für viele Anwendungen im Unternehmensumfeld eine unabdingbare Anforderung. Der Einsatz von Clustertechnologien verspricht hier Lösungen, gestaltet sich in der Praxis aber herausfordernder als angenommen. Neben der technischen Komplexität ist auch das Spannungsfeld zwischen Skalierbarkeit und Hochverfügbarkeit aufzulösen.
In der letzten Ausgabe der Java aktuell wurden die grundlegenden Clustering-Konzepte des JBoss Application Server in der Version 7 dargestellt. Dieser Artikel stellt unterschiedliche Cluster-Topologien vor, die auch den Anforderungen an die Skalierbarkeit und die Verfügbarkeit genügen und dabei die Restriktionen der Netzwerk-Infrastruktur und die Besonderheiten größerer Cluster-Umgebungen berücksichtigen.
Der JBoss AS 7 / EAP enthält ausgereifte Technologien um kritische Java EE Anwendungen Hochverfügbar auf Ebene der Middleware zu betreiben. Die enthaltenen Profile sind bereits für kleinere Cluster Topologien entsprechend konfiguriert. Mit dem Domain Mode des Applikationsservers lassen sich mehrere Server Instanzen komfortabel verwalten. Jedoch birgt ein Cluster eine hohe Komplexität, die Detailkenntnisse der grundlegenden Technologien wie JGroups und Infinispan erfordern.
1) O documento discute clustering e alta disponibilidade no JBoss, incluindo definição de clusters, partições, canais de cache e interceptadores do lado do cliente.
2) É apresentada a arquitetura do JGroups e como ele fornece comunicação entre os nós do cluster.
3) Serviços como sessões HTTP, EJBs e mensageria podem ser clusterizados no JBoss.
Die JBoss Enterprise Application Platform (und das Upstream Projekt Wildfly aka JBoss AS 7) enthält ausgereifte Technologien um kritische Java EE Anwendungen Hochverfügbar auf Ebene der Middleware zu betreiben. Die enthaltenen Profile sind bereits für kleinere Cluster Topologien entsprechend konfiguriert. Mit dem Domain Mode des Applikationsservers lassen sich mehrere Server Instanzen komfortabel verwalten. Jedoch birgt ein Cluster eine hohe Komplexität, die Detailkenntnisse der grundlegenden Technologien wie JGroups und Infinispan erfordern. Im Vortrag werden die grundlegenden Konzepte beleuchtet und während des Vortrages wird gezeigt wie ein Cluster im Domain Mode mit der Enterprise Application Platform betrieben werden kann.
A practical introduction to data science and machine learninghwilming
In this talk, Lisa shows an overview of what constitutes data science, talk about the process of conducting a data science project and look into the topic of machine learning. After introducing different types of data analytics, she will proceed to walk through the process of getting from your data to a model. She shows pitfalls and explain real life challenges associated with the process, and discuss strategies to get the most out of available machine learning models.
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014hwilming
The slide to the Java User Group Talk Exploring Ceylon from Gavin King.
Abstrakt:
Ceylon is a new programming language designed for writing large programs in teams. The language emphasizes readability, modularity, typesafety, and tooling. Ceylon programs execute on Java and JavaScript virtual machines. In this session, Gavin King will talk about the ideas behind Ceylon and demonstrate the language, its type system, its module architecture, and its IDE.
Speaker:
Gavin King leads the Ceylon project at Red Hat. He is the creator of Hibernate, a popular object/relational persistence solution for Java, and the Seam Framework, an application framework for enterprise Java. He's contributed to the Java Community Process as JBoss and then Red Hat representative for the EJB and JPA specifications and as lead of the CDI specification.
Now he works full time on Ceylon, polishing the language specification, developing the compiler frontend, and thinking about the SDK and future of the platform. He's still a fan of Java, and of other languages, especially Smalltalk, Python, and ML.
Creating Mobile Enterprise Applications with Red Hat / JBosshwilming
Pushed by the success of personal smartphones and tablets, mobile clients already became a standard integral component of modern IT landscapes. It is even common in enterprises that employees bring their own devices (BYOD) and integrate these with the internal systems. This raises a need for frameworks and middleware systems to support the development and operating departments in fulfilling the new requirements brought by mobile clients. Typical examples are:
adapt application architectures so that they can be used in a scenario with poor connectivity or even offline,
ensure that critical enterprise data is stored safely and securely on mobile devices,
provide development frameworks that support mobile clients on all tiers, starting from the database up to the application logic to finally to the GUI layer.
Red Hat offers solutions for all of these requirements. akquinet, as a longtime premier partner has a lot of experience in the field of mobile applications gathered in real-life projects. In this talk we will present the Red Hat product portfolio that enables the development and operation of infrastructures with mobile clients and discuss the possibilities and challenges based on examples from our customers.
JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7hwilming
Hohe Verfügbarkeit und hohe Skalierbarkeit sind für viele Anwendungen im Unternehmensumfeld eine unabdingbare Anforderung. Der Einsatz von Clustertechnologien verspricht hier Lösungen, gestaltet sich in der Praxis aber herausfordernder als angenommen. Neben der technischen Komplexität ist auch das Spannungsfeld zwischen Skalierbarkeit und Hochverfügbarkeit aufzulösen.
In der letzten Ausgabe der Java aktuell wurden die grundlegenden Clustering-Konzepte des JBoss Application Server in der Version 7 dargestellt. Dieser Artikel stellt unterschiedliche Cluster-Topologien vor, die auch den Anforderungen an die Skalierbarkeit und die Verfügbarkeit genügen und dabei die Restriktionen der Netzwerk-Infrastruktur und die Besonderheiten größerer Cluster-Umgebungen berücksichtigen.
Der JBoss AS 7 / EAP enthält ausgereifte Technologien um kritische Java EE Anwendungen Hochverfügbar auf Ebene der Middleware zu betreiben. Die enthaltenen Profile sind bereits für kleinere Cluster Topologien entsprechend konfiguriert. Mit dem Domain Mode des Applikationsservers lassen sich mehrere Server Instanzen komfortabel verwalten. Jedoch birgt ein Cluster eine hohe Komplexität, die Detailkenntnisse der grundlegenden Technologien wie JGroups und Infinispan erfordern.
1) O documento discute clustering e alta disponibilidade no JBoss, incluindo definição de clusters, partições, canais de cache e interceptadores do lado do cliente.
2) É apresentada a arquitetura do JGroups e como ele fornece comunicação entre os nós do cluster.
3) Serviços como sessões HTTP, EJBs e mensageria podem ser clusterizados no JBoss.
Die JBoss Enterprise Application Platform (und das Upstream Projekt Wildfly aka JBoss AS 7) enthält ausgereifte Technologien um kritische Java EE Anwendungen Hochverfügbar auf Ebene der Middleware zu betreiben. Die enthaltenen Profile sind bereits für kleinere Cluster Topologien entsprechend konfiguriert. Mit dem Domain Mode des Applikationsservers lassen sich mehrere Server Instanzen komfortabel verwalten. Jedoch birgt ein Cluster eine hohe Komplexität, die Detailkenntnisse der grundlegenden Technologien wie JGroups und Infinispan erfordern. Im Vortrag werden die grundlegenden Konzepte beleuchtet und während des Vortrages wird gezeigt wie ein Cluster im Domain Mode mit der Enterprise Application Platform betrieben werden kann.
A practical introduction to data science and machine learninghwilming
In this talk, Lisa shows an overview of what constitutes data science, talk about the process of conducting a data science project and look into the topic of machine learning. After introducing different types of data analytics, she will proceed to walk through the process of getting from your data to a model. She shows pitfalls and explain real life challenges associated with the process, and discuss strategies to get the most out of available machine learning models.
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014hwilming
The slide to the Java User Group Talk Exploring Ceylon from Gavin King.
Abstrakt:
Ceylon is a new programming language designed for writing large programs in teams. The language emphasizes readability, modularity, typesafety, and tooling. Ceylon programs execute on Java and JavaScript virtual machines. In this session, Gavin King will talk about the ideas behind Ceylon and demonstrate the language, its type system, its module architecture, and its IDE.
Speaker:
Gavin King leads the Ceylon project at Red Hat. He is the creator of Hibernate, a popular object/relational persistence solution for Java, and the Seam Framework, an application framework for enterprise Java. He's contributed to the Java Community Process as JBoss and then Red Hat representative for the EJB and JPA specifications and as lead of the CDI specification.
Now he works full time on Ceylon, polishing the language specification, developing the compiler frontend, and thinking about the SDK and future of the platform. He's still a fan of Java, and of other languages, especially Smalltalk, Python, and ML.
Creating Mobile Enterprise Applications with Red Hat / JBosshwilming
Pushed by the success of personal smartphones and tablets, mobile clients already became a standard integral component of modern IT landscapes. It is even common in enterprises that employees bring their own devices (BYOD) and integrate these with the internal systems. This raises a need for frameworks and middleware systems to support the development and operating departments in fulfilling the new requirements brought by mobile clients. Typical examples are:
adapt application architectures so that they can be used in a scenario with poor connectivity or even offline,
ensure that critical enterprise data is stored safely and securely on mobile devices,
provide development frameworks that support mobile clients on all tiers, starting from the database up to the application logic to finally to the GUI layer.
Red Hat offers solutions for all of these requirements. akquinet, as a longtime premier partner has a lot of experience in the field of mobile applications gathered in real-life projects. In this talk we will present the Red Hat product portfolio that enables the development and operation of infrastructures with mobile clients and discuss the possibilities and challenges based on examples from our customers.
SAP Integration with Red Hat JBoss Technologieshwilming
SAP ERP provides different approaches to integrate Java applications with business logic written in ABAP. With JBoss Fuse, the SOA Platform, and Data Services Platform, Red Hat offers flexible middleware solutions for service-oriented integration and orchestration. As a leading provider of integrated solutions and longtime Premier Partner, akquinet has a long history of projects integrating individual applications based on JBoss with standard ERP software such as SAP or Navision.
Based on various real world examples, we will show different ways to integrate SAP ABAP backends with JBoss Middleware. We will discuss the pros and cons of integrating Java EE applications using (a) the REST based approach with NetWeaver Gateway, (b) JBoss Data Services Platform with NetWeaver Gateway (c) SOAP based Web Services and (d) Remote Function Calls with the Java EE Connector Architecture (JCA) and the SAP Java Connector (JCo) library
JPA – Der Persistenz-Standard in der Java EE und SEhwilming
Die Abbildung relationaler Strukturen einer Datenbank auf die objekt‐orientierte Programmiersprache Java bringt einige Herausforderungen mit sich, bekannt als object-relational impedance mismatch. In Java ermöglicht JDBC zwar die Interaktion mir einer relationalen Datenbank aber nicht die Abbildung der Daten auf Objekte. Die bekannten Produkte wie Hibernate oder EclipseLink widmen sich diesem Problem bereits seit Jahren. Mit JPA hat der Java Community Process einen Standard für Java EE und SE definiert, der ein einheitliches API bietet, welches von den Anbietern unterstützt wird. Der Vortrag zeigt was JPA bietet und welche Vorteile der Standard für die Anwendungsentwicklung mit sich bringt.
War Persistenz in Java EE früher schwergewichtig und unflexibel, so steht nun der leichtgewichtige Standard JPA mit Providern wie EclipseLink und Hibernate zur Verfügung. Die Einfachheit ist bestechend, verleitet aber auch zu unbedachtem Einsatz mit teilweise enttäuschender Performanz. Der Vortrag zeigt wie JPA-Anwendungen auf den nötigen Durchsatz hin optimiert werden können.
Integrating SAP the Java EE Way - JBoss One Day talk 2012hwilming
Cuckoo is an open source Resource Adapter for SAP that is compatible to the Java Connector Architecture (JCA) version 1.5.
It enables developers of Java EE applications to call functions in a SAP backend, making use of Java EE features like Container Managed Transactions and Security.
Hibersap helps developers of Java applications to call business logic in SAP backends. It defines a set of Java annotations to map SAP function modules to Java classes as well as a small, clean API to execute these function modules and handle transaction and security aspects.
Hibersap's programming model is quite similar to those of modern O/R mappers, significantly speeding up the development of SAP interfaces and making it much more fun to write the integration code.
Aerogear is a mobile solution developed by akquinet using Java EE and JBoss technologies. It focuses on developing mobile applications using technologies like HTML5, JSF, Java EE, and deploying the applications in the cloud using Red Hat's OpenShift platform. The presentation provided information on developing mobile applications and getting started with Aerogear by using their code on GitHub.
The Gear you need to go mobile with Java Enterprise - Jax 2012hwilming
You've heard all the terms, mobile web, hybrid app, HTML5, REST, etc... Maybe you've even played around with them a bit, but how do they all fit together? We're going to discuss all of that, and how it is encompassed in the Plain Old HTML5 (POH5) architecture! The sample application will go from nothing, to a cloud based mobile web and Apache Callback application, all in 60 minutes!
Need(le) for Speed - Effective Unit Testing for Java EEhwilming
Writing good concise tests for application components can be quite cumbersome. Especially, when they have a lot of dependencies to other beans and you do not want to manually write mock objects to fulfill all of them. On the other hand, you do not want to run too many slow integration tests.
We still see the need for a lightweight framework that allows to test components in isolation where their dependencies are resolved in an arbitrary manner. Sometimes you might want to use mock objects for dependencies, sometimes you would like to link your component to the real world.
With the Needle framework you can accomplish those goals in very comfortable way. Objects under test will get their dependencies injected automatically. The Needle core is extensible, it allows you to add your own injection points at run time. You are free to supply implementations yourself or rely on the mock objects provided by Needle. Needle will thus minimize the setup code and maximize the speed of a unit test.
Need(le) for Speed - Effective Unit Testing for Java EEhwilming
Needle is a lightweight framework for testing Java EE components outside of the container in isolation. It reduces the test setup code by analysing dependencies and automatic injection of mock objects. It will thus maximize the speed of development as well as the execution of unit tests.
SAP Integration with Red Hat JBoss Technologieshwilming
SAP ERP provides different approaches to integrate Java applications with business logic written in ABAP. With JBoss Fuse, the SOA Platform, and Data Services Platform, Red Hat offers flexible middleware solutions for service-oriented integration and orchestration. As a leading provider of integrated solutions and longtime Premier Partner, akquinet has a long history of projects integrating individual applications based on JBoss with standard ERP software such as SAP or Navision.
Based on various real world examples, we will show different ways to integrate SAP ABAP backends with JBoss Middleware. We will discuss the pros and cons of integrating Java EE applications using (a) the REST based approach with NetWeaver Gateway, (b) JBoss Data Services Platform with NetWeaver Gateway (c) SOAP based Web Services and (d) Remote Function Calls with the Java EE Connector Architecture (JCA) and the SAP Java Connector (JCo) library
JPA – Der Persistenz-Standard in der Java EE und SEhwilming
Die Abbildung relationaler Strukturen einer Datenbank auf die objekt‐orientierte Programmiersprache Java bringt einige Herausforderungen mit sich, bekannt als object-relational impedance mismatch. In Java ermöglicht JDBC zwar die Interaktion mir einer relationalen Datenbank aber nicht die Abbildung der Daten auf Objekte. Die bekannten Produkte wie Hibernate oder EclipseLink widmen sich diesem Problem bereits seit Jahren. Mit JPA hat der Java Community Process einen Standard für Java EE und SE definiert, der ein einheitliches API bietet, welches von den Anbietern unterstützt wird. Der Vortrag zeigt was JPA bietet und welche Vorteile der Standard für die Anwendungsentwicklung mit sich bringt.
War Persistenz in Java EE früher schwergewichtig und unflexibel, so steht nun der leichtgewichtige Standard JPA mit Providern wie EclipseLink und Hibernate zur Verfügung. Die Einfachheit ist bestechend, verleitet aber auch zu unbedachtem Einsatz mit teilweise enttäuschender Performanz. Der Vortrag zeigt wie JPA-Anwendungen auf den nötigen Durchsatz hin optimiert werden können.
Integrating SAP the Java EE Way - JBoss One Day talk 2012hwilming
Cuckoo is an open source Resource Adapter for SAP that is compatible to the Java Connector Architecture (JCA) version 1.5.
It enables developers of Java EE applications to call functions in a SAP backend, making use of Java EE features like Container Managed Transactions and Security.
Hibersap helps developers of Java applications to call business logic in SAP backends. It defines a set of Java annotations to map SAP function modules to Java classes as well as a small, clean API to execute these function modules and handle transaction and security aspects.
Hibersap's programming model is quite similar to those of modern O/R mappers, significantly speeding up the development of SAP interfaces and making it much more fun to write the integration code.
Aerogear is a mobile solution developed by akquinet using Java EE and JBoss technologies. It focuses on developing mobile applications using technologies like HTML5, JSF, Java EE, and deploying the applications in the cloud using Red Hat's OpenShift platform. The presentation provided information on developing mobile applications and getting started with Aerogear by using their code on GitHub.
The Gear you need to go mobile with Java Enterprise - Jax 2012hwilming
You've heard all the terms, mobile web, hybrid app, HTML5, REST, etc... Maybe you've even played around with them a bit, but how do they all fit together? We're going to discuss all of that, and how it is encompassed in the Plain Old HTML5 (POH5) architecture! The sample application will go from nothing, to a cloud based mobile web and Apache Callback application, all in 60 minutes!
Need(le) for Speed - Effective Unit Testing for Java EEhwilming
Writing good concise tests for application components can be quite cumbersome. Especially, when they have a lot of dependencies to other beans and you do not want to manually write mock objects to fulfill all of them. On the other hand, you do not want to run too many slow integration tests.
We still see the need for a lightweight framework that allows to test components in isolation where their dependencies are resolved in an arbitrary manner. Sometimes you might want to use mock objects for dependencies, sometimes you would like to link your component to the real world.
With the Needle framework you can accomplish those goals in very comfortable way. Objects under test will get their dependencies injected automatically. The Needle core is extensible, it allows you to add your own injection points at run time. You are free to supply implementations yourself or rely on the mock objects provided by Needle. Needle will thus minimize the setup code and maximize the speed of a unit test.
Need(le) for Speed - Effective Unit Testing for Java EEhwilming
Needle is a lightweight framework for testing Java EE components outside of the container in isolation. It reduces the test setup code by analysing dependencies and automatic injection of mock objects. It will thus maximize the speed of development as well as the execution of unit tests.
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.