27.12.2012 Aufrufe

Technische Universität Ilmenau Fakultät für Elektrotechnik und ...

Technische Universität Ilmenau Fakultät für Elektrotechnik und ...

Technische Universität Ilmenau Fakultät für Elektrotechnik und ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Technische</strong> <strong>Universität</strong> <strong>Ilmenau</strong><br />

<strong>Fakultät</strong> <strong>für</strong> <strong>Elektrotechnik</strong> <strong>und</strong> Informationstechnik<br />

Hauptseminararbeit<br />

Java-JMS <strong>für</strong> Smarthphones <strong>und</strong> mobile Geräte<br />

vorgelegt von: Aalbrecht Alby Irawan<br />

eingereicht am: 01. 07. 2011<br />

geboren am:<br />

Studiengang: Ingenieurinformatik<br />

Studienrichtung: Multimediale Informations- <strong>und</strong><br />

Kommunikationssysteme<br />

Anfertigung im Fachgebiet: Kommunikationsnetze<br />

<strong>Fakultät</strong> <strong>für</strong> <strong>Elektrotechnik</strong> <strong>und</strong> Informationstechnik<br />

Verantwortlicher Professor: Prof. Dr. rer. nat. habil. Jochen Seitz<br />

Wissenschaftlicher Betreuer: Dipl.-Ing. Karsten Renhak


Kurzfassung<br />

Diese Hauptarbeit befasst sich mit Java Messaging Service. Am Anfang wird die<br />

Unterschiede zwischen 3 Java Platformen definiert. Dann wird über JMS erklärt <strong>und</strong><br />

die Leistung verschiedener JMS-Provider verglichen.


Inhaltsverzeichnis i<br />

Inhaltsverzeichnis<br />

1 Einleitung 1<br />

1.1 Verschiedene Java Platformen . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.2 Java-VMs <strong>für</strong> Smartphones <strong>und</strong> mobile Geräte . . . . . . . . . . . . . . 2<br />

2 Java-JMS 5<br />

2.1 Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.1.1 Message Oriented Middleware . . . . . . . . . . . . . . . . . . . 5<br />

2.1.2 Java Message Service . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2.2 Vergleich Java-JMS-Clientimplementierungen . . . . . . . . . . . . . . 9<br />

2.2.1 Prüfbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.2.2 Hardware- <strong>und</strong> Software-Konfiguration . . . . . . . . . . . . . . 10<br />

2.2.3 Test-Szenarien . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.2.4 Testdauer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.2.5 Testergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.2.6 Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

Literaturverzeichnis 18<br />

Abbildungsverzeichnis 19<br />

Tabellenverzeichnis 20<br />

Abkürzungsverzeichnis <strong>und</strong> Formelzeichen 21<br />

Erklärung 22<br />

Hauptseminararbeit Aalbrecht Alby Irawan


1 Einleitung 1<br />

1 Einleitung<br />

1.1 Verschiedene Java Platformen<br />

Java Platform kann in 3 Bereiche aufgeteilt werden:<br />

Java 2 Standard Edition ist die Gr<strong>und</strong>lage aller andere Java Platformen. Darin ent-<br />

hält sich die benötigte JVM <strong>und</strong> Bibliotheken, die beim normalen PC oder Work-<br />

station gebraucht wird.<br />

Java 2 Enterprise Edition ist die J2SE mit Addition von mehreren API, Container<br />

<strong>und</strong> Komponenten, die zur Entwicklung von Enterprise-Applikationen gebraucht<br />

werden. Die dient dazu, eine Leistung von Serverdienste zu ermoglichen. J2EE<br />

betriebene Server können web-basierte mobile Anwendungen (z.B. WML oder<br />

xHTML) dienen.<br />

Java 2 Micro Edition ist <strong>für</strong> mobile Geräte gedacht. Gehören dazu sind speziell ange-<br />

fertige VM <strong>und</strong> nur allerwichtigste oder eine leichtere Version von herkommlichen<br />

J2SE Bibliotheken<br />

Obwohl heutzutage die Smartphones oder PDA wesentlich größere Spezifikationen<br />

haben als in den vergangenen Jahren (<strong>und</strong> somit der Einsatz von J2SE ermögliche),<br />

benutzt man immer noch J2ME <strong>für</strong> moble Geräte. Laut einer Gartner Studie vom<br />

Jahr 2002 liegt die Totalentwicklungkosten von Smartphones etwa einzhentel billiger<br />

als die von Wireless Laptop <strong>und</strong> einviertel als die von Wireless PDA. Aufgr<strong>und</strong> der<br />

weltverbreiten Anwendungen gehört J2ME zu den wichtigsten mobile Platform.<br />

J2ME<br />

Um Portabilität mit Leistung <strong>und</strong> Durchführbarkeit, enthält J2ME mehrere Kompo-<br />

nenten wie Konfiguration, Profil <strong>und</strong> optionale Pakete. Jede gültige Kombination aus<br />

Konfiguration <strong>und</strong> Profil ist auf einer bestimmten Art von Gerät gezielt. Die Konfigura-<br />

tion bietet die gr<strong>und</strong>legende <strong>und</strong> allgemeine Sprachfunktionalität. Das Profil hingegen<br />

Hauptseminararbeit Aalbrecht Alby Irawan


1 Einleitung 2<br />

Abbildung 1.1: Java 2 Platform [Yuan04]<br />

basiert auf Konfigurationen <strong>und</strong> unterstützt erweiterte APIs wie grafische Benutzero-<br />

berfläche, Speicherung, Sicherheit <strong>und</strong> Netzwerk-Konnektivität.<br />

Die zwei wichtigste J2ME Konfigurationen sind:<br />

Connected Limited Device Configuration CLDC ist <strong>für</strong> kleine Geräte mit limitier-<br />

ten Rechenleistung <strong>und</strong> Arbeitsspeicher, braucht jedoch mindestens 160 KB Ar-<br />

beitsspeicher <strong>und</strong> 16/32 Bit Prozessor. CLDC hat eingeschränkte math, string<br />

<strong>und</strong> I/O Funktion. Nur ein kleine Anteil von J2SE Kernbibliotheken kann vom<br />

CLDC Virtual Machine (in diesem Fall KVM oder Kilobyte Virtual Machine)<br />

eingestützt werden.<br />

Connected Device Configuration CDC ist <strong>für</strong> leistungsfähigere Geräte mit mindes-<br />

tens 2 MB Arbeitsspeicher <strong>und</strong> 32 Bit Prozessor. Im Gegensatz zu CLDC, CDC<br />

verfügt über Java VM <strong>und</strong> somit kann fast alle J2SE Bibiliotheken unterstützen.<br />

Das am meisten verwendeten Profil der J2ME ist Mobile Information Device Pro-<br />

file (MIDP), basiert auf CLDC <strong>und</strong> somit <strong>für</strong> Handys gut geeignet. Als MIDP v1.0<br />

veröffentlich wurde, gab es noch viele Probleme, besonders bezüglich der Sicherheit<br />

<strong>und</strong> Benützeroberfläche. MIDP v2.0 bietet allerdings eine verbesserte Benutzeroberflä-<br />

che, Multimedia <strong>und</strong> Spiel Möglichkeit, gesteigerte Konnektivität <strong>und</strong> Ende-zu-Ende-<br />

Sicherheit.[Yuan04]<br />

1.2 Java-VMs <strong>für</strong> Smartphones <strong>und</strong> mobile Geräte<br />

Anders als andere Programmiersprache, wird nicht direkt Maschinencode erzeugt beim<br />

Kompilieren, sondern sogenannten Bytecode. Dieser Bytecode ist unabhänging von<br />

Hauptseminararbeit Aalbrecht Alby Irawan


1 Einleitung 3<br />

Abbildung 1.2: J2ME Komponente [Yuan04]<br />

Hardware <strong>und</strong> vergleichbar mit Mikroprozessorcode <strong>für</strong> einen Prozessor, der Anweisun-<br />

gen wie arithmetische Operationen, Sprünge <strong>und</strong> weiteres kennt. Der Java-Compiler<br />

von Sun <strong>und</strong> der Java-Compiler der Entwicklungsumgebung Eclipse sind selbst in Java<br />

implementiert <strong>und</strong> generieren diesen Bytecode.<br />

Damit der Programmcode des virtuellen Prozessors ausgeführt werden kann. führt<br />

nach der Übersetzungsphase die Laufzeitumgebung (auch Runtime-Interpreter genannt),<br />

die Virtual Maschine (VM), den Bytecode aus. Somit ist Java eine compilierte, aber<br />

auch interpretierte Programmiersprache von der Hardwaremethode einmal abgesehen.<br />

[Ulle09]<br />

Für bestimmte Endgeräte gibt es auch bestimmte Konfiguration, die da<strong>für</strong> spezifi-<br />

schen Anforderungen erfüllen. Man teilt dabei die VM in drei verschiedene Kategorien<br />

ein:<br />

Java Virtual Machine JVM ist die leistungsfähigste Virtual Machine <strong>und</strong> findet ih-<br />

ren Einsatz auf Servern, Workstations <strong>und</strong> Desktop PCs bzw. Notebooks. Auf<br />

diesen Systemen stehen ausreichend Ressourcen bereit, sodass eine vollständi-<br />

ge Implementierung der JVM Spezifikation möglich ist. JVM unterstützt J2EE,<br />

J2SE <strong>und</strong> J2ME CDC.<br />

Kilobyte Virtual Machine KVM ist <strong>für</strong> die JVM Implementierung wichtig. Wegen<br />

des kleine Speicherplatzes werden manche Datentypen wie floats <strong>und</strong> doubles<br />

nicht unterstützt. Außerdem gibt es nur die wichtigsten Klasse wie java.lang,<br />

java.io <strong>und</strong> java.util. Ein weiteres Mittel, um den Speicherbedarf zu reduzieren<br />

Hauptseminararbeit Aalbrecht Alby Irawan


1 Einleitung 4<br />

ist, dass Programme statt als Classdatei auch als Java Archiv (JAR) gespeichert<br />

werden können. Dies ermöglicht eine um 30 bis 50 Prozent höhere Kompression.<br />

Card Virtual Machine CardVM setzt sich dabei aus 1kB RAM <strong>und</strong> 24kB ROM zu-<br />

sammen. CardVM unterstützt sogar einen 8- oder 16-bit Prozessor. Um mit die-<br />

sen extremen Speichereinschränkungen umzugehen werden nur boolean, byte,<br />

short, optional int <strong>und</strong> eindimensionale Arrays unterstützt. Auch alle <strong>für</strong> die<br />

Objektorientierung von Java notwendigen Features (z.B. Vererbung, Überladung<br />

von Methoden <strong>und</strong> dynamische Objek- terstellung) wurden implementiert. Die<br />

CardVM verfügt aber nicht mehr über den Class Loader, den Security Mana-<br />

ger, Garbage Collector (meistens jedenfalls) <strong>und</strong> kennt auch keine Strings <strong>und</strong><br />

Threads mehr. Auf einigen professionellen Java Cards ist jedoch ein Garbage<br />

Collector implementiert, welcher die Lebenszeit einer Karte deutlich erhöht. Kar-<br />

ten ohne Garbage Collector können unbrauchbar werden, wenn irgendwann tote<br />

Objekte den Speicher belegen <strong>und</strong> keine neuen Objekte mehr erstellt werden<br />

können.[Menz04]<br />

Abbildung 1.3: Übersicht der derzeit verfügbaren Virtual Machine [Sun 03]<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 5<br />

2 Java-JMS<br />

2.1 Übersicht<br />

Mobile Nachrichtenvermittlungapplikationen haben sich extrem erfolgreich durchge-<br />

setzt, person-to-person Kommunikation zu unterstützen. Allerdings ist Nachrichtenver-<br />

mittlung viel mehr als nur zwischen-menschliche Kommunikation. Die breite Nutzung<br />

von nachrichtenorientierte Middleware (engl. message oriented middleware MOM), wie<br />

z.B. Java Messaging Service (JMS), hat Nachrichtenvermittlung zu einer der wichtigs-<br />

ten modernen Enterprise-Anwendungen.<br />

2.1.1 Message Oriented Middleware<br />

Message Oriented Middleware (MOM) ist eine Software- oder Hardware-Infrastruktur<br />

<strong>für</strong> das Senden <strong>und</strong> Empfangen von Nachrichten zwischen verteilten Systemen. MOM<br />

erlaubt, dass Programm-Module über heterogene Plattformen verteilt werden <strong>und</strong> re-<br />

duziert die Komplexität der Entwicklung von Anwendungen, die mehrere Betriebssys-<br />

teme <strong>und</strong> Netzwerk-Protokolle umfassen. Die Middleware schafft eine verteilte Kom-<br />

munikationsschicht, dass der Anwendungs-Entwickler von den Details der verschiede-<br />

nen Betriebssystem-<strong>und</strong> Netzwerk-Schnittstellen isoliert. APIs, die über verschiedene<br />

Plattformen <strong>und</strong> Netzwerke auszuweiten werden typischerweise durch MOM vorgese-<br />

hen.<br />

MOM bietet eine Client / Server-Architektur <strong>und</strong> unterstützt in der Regel asynchro-<br />

ne Aufrufe zwischen Client <strong>und</strong> Server-Anwendungen. MOM reduziert die Beteiligung<br />

von Entwicklern mit der Komplexität der Master-Slave-Charakter der Client / Server-<br />

Mechanismus. MOM sollte die folgenden Eigenschaften haben:<br />

• mehrere Client-Protokolle bedienen können<br />

• Point-to-Point oder Publish-Subscribe Modelle<br />

• Nachrichten speichern <strong>und</strong> weiterleiten<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 6<br />

• Nachrichtenübermittlung bestätigen<br />

• Schnittstelen <strong>für</strong> J2ME bieten<br />

Die fehlende Normung <strong>für</strong> die Verwendung von MOM kann allerdings Probleme<br />

verursachen. Alle großen Hersteller haben ihre eigenen Implementierungen mit jeweils<br />

ihrem eigenen API <strong>und</strong> Management-Tools. Die J2EE Programmierumgebung liefert<br />

zwar Standard-API namens Java Message Service (JMS), die von den meisten MOM<br />

Anbietern umgesetzt wird, aber JMS definiert nicht das Format der Nachrichten die<br />

ausgetauscht werden. Deshalb kann essein, dass JMS-Systeme nicht immer miteinander<br />

kompatibel sind.<br />

2.1.2 Java Message Service<br />

JMS definiert eine API <strong>für</strong> den Zugriff auf die Dienste eines Messaging-Anbieter. Es<br />

definiert eine Standard-Schnittstelle <strong>für</strong> Java-Programme um Nachrichten zu erstellen,<br />

senden, empfangen <strong>und</strong> lesen. JMS ist eng mit der J2EE-Plattform gekoppelt. Die<br />

J2EE-Plattform besteht aus einer Reihe von Diensten, APIs <strong>und</strong> Protokolle, die die<br />

Entwicklung einer mehrstufigen Architektur unterstützen. Die Einbeziehung von JMS<br />

in J2EE bedeutet nicht, dass JMS nur mit J2EE basierten Anwendungen verwendet<br />

werden. Die Dienstleistungen des Messaging-Anbieter sind zugänglich <strong>für</strong> jede Java-<br />

Anwendung. [Yusu04]<br />

JMS definiert zwei Messaging-Domänen, Point-to-Point <strong>und</strong> Publish-Subscribe, zur<br />

Unterstützung der beiden üblichen Muster von Nachrichtenvermittlung. Eine Reihe von<br />

Schnittstellen sind <strong>für</strong> jede Domäne definiert, erben ihre Attribute <strong>und</strong> das Verhalten<br />

von einer Basis von Schnittstellen (Tabelle 2.1). Eine Anwendung wählt in der Regel<br />

eine Gruppe von Schnittstellen (Point-to-Point oder Publish-Subscribe), mit der sie<br />

arbeiten möchte.<br />

Common (Parent) Point-to-Point Publish-Subscribe<br />

ConnectionFactory QuueueConnectionFactory TopicConnectionFactory<br />

Connection QueueConnection TopicConnection<br />

Destination Queue Topic<br />

Session QueueSession TopicSession<br />

MessageProducer QueueSender TopicPublisher<br />

MessageConsumer QueueReceiver TopicSubscriber<br />

QueueBrowser<br />

Tabelle 2.1: Messaging Domäne Schnitstelle [Yusu04]<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 7<br />

Point-to-Point Hier schickt der Sender die Nachricht zu einer bestimmten Warte-<br />

schlange <strong>und</strong> der Empfänger bekommt die Nachricht von derselben Warteschlan-<br />

ge. Hier kennt der Sender das Ziel der Nachricht. Mehrere Sender <strong>und</strong> Empfänger<br />

können in eine Warteschlange angekoppelt sein, aber jede Nachricht wird nur ein-<br />

mal verbraucht. Sobald eine Nachricht an einem Empfänger übermittelt wird, ist<br />

sie von der Warteschlagen entfernt. Der Sender muss nicht gerade aktiv sein als<br />

die Nachricht empfängt wird <strong>und</strong> der Empfänger muss auch nicht gerade aktiv<br />

sein als die Nachricht gesendet wird.<br />

Point-to-Point ist in der Regel angenommen, wenn eine Applikation mit einer<br />

einzelnen Applikation oder eine kleine Anzahl von bekannten Applikationen ko-<br />

muniziert. Falls der Sender mehrere Empfänger erreichen will, muss er auch meh-<br />

rere male die Nachricht senden. In den meisten Szenarien gibt es jedoch nur eine<br />

einzelne Empfänger.<br />

Abbildung 2.1: Point-to-Point Modell [Yuan04]<br />

Publish-Subscribe Hier ist das Ziel eine Topics. Das Thema definiert eine Katogerie<br />

oder eine Gegenstand, damit die Nachrichten in Verbindung gebracht werden<br />

können <strong>und</strong> die Empfänger soll vorher ihre Interesse an einem bestimmten The-<br />

ma abonnieren. Gesendete Nachrichten zu einem Thema werden dupliziert <strong>und</strong><br />

an alle Abbonenten dieses Thema weitergeleitet. Wenn ein Teilnehmer vorüber-<br />

gehend nicht verfügbar ist, wird der Server die Nachricht halten <strong>und</strong> versucht<br />

später noch einmal. Ein Sender kann ein neues Thema starten oder Nachricht<br />

senden zu einem schon vorhandenen Thema.<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 8<br />

Publish-Subscribe wird normalerweise verwendet, wenn Daten an mehrere Sub-<br />

scriber kommen sollen, die dynamisch ändern können. Die Verwendung ist auch<br />

sehr eng mit Event-gesteuerte Szenarien verb<strong>und</strong>et. In diesem Modell kennt au-<br />

ßerdem weder Publisher noch Subscriber über einander. Es kann auch passieren,<br />

dass niemand die Nachricht erhält, falls ein Thema null Subscriber hat. Die Sub-<br />

scriber muss ständig aktiv bleiben, um Nachrichten zu empfängen. Verpasste<br />

Nachricht kommt nicht wieder, außer der Publisher eine dauerhafte (engl. dura-<br />

ble) Abonnement eingeführt hat. In diesem Fall wird veröffentliche Nachrichten,<br />

die während eine Abbonenten abwesend ist, umverteilt wenn die Abbonenten<br />

wieder aktiv ist.<br />

Abbildung 2.2: Publish-Subscribe [Yuan04]<br />

JMS definiert eine Reihe von Schnittstellen <strong>für</strong> Nachrichten. Diese Schnitstelle ent-<br />

spricht die Gr<strong>und</strong>formen von Daten, die gesendet oder empfängt werden. Die definier-<br />

ten Nachrichtentypen sind:<br />

• BytesMessage: speichert Daten als eine Folge von Bytes, unterstützt die gr<strong>und</strong>le-<br />

gendsten Darstellung von Daten <strong>und</strong> kann somit verschiedene Payloads enthalten.<br />

• TextMessage: speichert Daten als String.<br />

• StreamMessage: speichert Dateng als eine Folge von Feldern. Z.B. JohnDoe33,<br />

wird als Folge von 2 strings (John, Doe) <strong>und</strong> 1 integer (33) definiert.<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 9<br />

• MapMessage: speichert Daten als eine Reihe von Schlüssel-Wert-Paar. Der Schlüs-<br />

sel ist ein String <strong>und</strong> der Wert ist beliebig. Z.B. Alter:27, Alter ist hier der<br />

Schlüssel <strong>und</strong> 27 ist der integer Wert.<br />

• ObjectMessage: speichert eine Java-Object.<br />

JMS-Nachricht besteht aus drei gr<strong>und</strong>legenden Teilen zusammengesetzt<br />

• Header: Enthält Attribute (Felder), mit der die Nachricht identifiziert <strong>und</strong> wei-<br />

tergeleitet werden kann. Die Attribute werden mit JMS vorangestellt. Beispiele<br />

sind JMSMessageID, die eindeutig die Nachricht identifiziert. JMSDestination,<br />

die das Ziel zu dem die Nachricht gesendet wird enthält. JMSDeliverymode, die<br />

eine Meldung definiert als persistent oder nonpersistent.<br />

• Properties: Enthält Nachrichtenzusatzinformationen als Attribute in Form von<br />

Schlüssel-Wert-Paar. Ein möglicher Verwendungszweck dieser Attribute ist Fil-<br />

terung der Nachrichten bei den Empfängern.<br />

• Body: Enthält die eigentliche Nachricht. Wie bereits erwähnt, der Typ der JMS-<br />

Nachrichten ist vorher definiert.<br />

2.2 Vergleich Java-JMS-Clientimplementierungen<br />

Um JMS zu nutzen, wird ein JMS-Provider (MOM) benötigt, der die Topics, Queues<br />

<strong>und</strong> Sessions verwaltet. Die untenstehende Tabelle 2.2 führt ein paar JMS-Provider<br />

auf, die sowohl kommerzielle als auch freie Software sind.<br />

Name Firma Lizenz Für J2ME geeignet<br />

ActiveMQ Apache Open Source Nein<br />

FioranoMQ Fiorano kommerziell Nein<br />

iBus//Mobile Softwired kommerziell Ja<br />

JBoss Redhat Open Source Nein<br />

SonicMQ Progress Software kommerziell Nein<br />

Sun MQ Sun Microsystems Open Source Nein<br />

Tibco EMS TIBCO kommerziell Nein<br />

WebSphere IBM kommerziell Ja<br />

Tabelle 2.2: JMS-Provider<br />

Es ist ganz schwer zu feststellen, welche JMS-Provider die Beste ist. Fiorano hat<br />

einen Bericht veröffentlich, in dem verschiedene JMS-Provider getestet <strong>und</strong> verglichen<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 10<br />

werden. Natürlich wird FioranoMQ als die Beste dargestellt, trotzdem bekommt man<br />

grobe Überblick, welche Resultät rauskommen wird wenn die einzelne JMS-Provider<br />

eingesetzt ist. Ein Beispiel von einem anderen unabhängigen Bericht [techa] kann man<br />

finden auf http://www.capitalware.biz/dl/docs/krissoft_jms_performance.pdf<br />

2.2.1 Prüfbedingungen<br />

Alle Tests wurden unter folgenden Bedingungen durchgeführt.<br />

• Jeder Client läuft auf einem separaten JMS-Verbindung.<br />

• Alle Prüfergebnisse werden aufgezeichnet, nachdem der Client-Verbindungen her-<br />

gestellt wurden <strong>und</strong> Publishers-Subscribers <strong>und</strong> andere Objekte geschaffen wur-<br />

den.<br />

• Alle Test wurden mehrfach ausgeführt wurden, um die Wiederholbarkeit zu ge-<br />

währleisten.<br />

• Leistung war unter maximaler Belastung gemessen. So viele Nachrichten wie<br />

möglich wurde erzeugt unter Verwendung der Standardeinstellung des Servers<br />

damit diese maximale Belastung erreicht.<br />

• Während der Tests waren keine anderen Anwendungen laufen.<br />

• Alle Server wurden in der Standardmodus getestet.<br />

2.2.2 Hardware- <strong>und</strong> Software-Konfiguration<br />

Server System:<br />

• GNU/Linux 2.6.18-92.el5xen<br />

• 4 CPU Intel(R) Xeon(R) CPU 5160 @ 3,00 GHz<br />

• 64 bit 8 GB RAM<br />

Client System:<br />

• Microsoft Windows Server 2003 R2<br />

• 4 CPU Intel(R) Xeon(R) Cpu 5160 @ 3,00 GHz<br />

• 64 Bit 8 GB RAM<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 11<br />

Network Setting:<br />

• Server <strong>und</strong> Client waren in demselben Netzwerk<br />

• Netzwerkgeschwindigkeit 1 GBPS<br />

Software-Konfiguration:<br />

• Java 2 Runtime Environment, Standard Edition (build 1.5.0 18-b02)<br />

• FioranoMQ v 9.1.1<br />

• SonicMQ v 7.6<br />

• Tibco EMS v 4.4.0<br />

• ActiveMQ v 5.3.0<br />

• JBoss 1.4.4<br />

• SunMQ 4.3<br />

• IBM WebSphere 7.0<br />

2.2.3 Test-Szenarien<br />

Die Tests wurden <strong>für</strong> die meist verwendeten Messaging-Modelle mit Topics (Publish-<br />

Subscribe) durchgeführt:<br />

Non-persistent Publisher <strong>und</strong> Non-durable Subscriber Diese Modell ist in der Re-<br />

gel verwendet, wenn der Austauschvolume von Nachrichten hoch ist <strong>und</strong> mini-<br />

male Latenz gefördert wird.<br />

Persistent Publisher <strong>und</strong> Durable Subscriber Diese Modell wird eingesetzt, wenn vie-<br />

le Red<strong>und</strong>anz gebraucht wird <strong>und</strong> es versichert werden muss, dass mindestens<br />

eine Nachricht unabhängig von Server- <strong>und</strong> Client-Status kommt.<br />

Die folgenden Tests wurden durchgeführt, basierend auf typischen K<strong>und</strong>en Use-Cases:<br />

• Topic Skalierbarkeit Tests: Es wird die Leistungsmerkmale des JMS-Servers be-<br />

obachtet mit unterschiedlicher Anzahl von Publisher-/Subscriber-Client in einem<br />

festen Anzahl von Topic. Die Ergebnisse veranschaulichen die Skalierbarkeit von<br />

JMS-Server als mehrere Clients eingesetzt (alle arbeiten mit dem gleichen JMS-<br />

Topic).<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 12<br />

• Server Skalierbarkeit Tests: Es wird die Leistungsmerkmale des JMS-Servers be-<br />

obachtet mit unterschiedlicher Anzahl von Topics in einem festen Anzahl von<br />

Publisher-/Subscriber-Client. Die Ergebnisse veranschaulichen die Skalierbarkeit<br />

von JMS-Server als mehrere Clients eingesetzt (jeder arbeitet mit ungleichen<br />

JMS-Topics).<br />

• Persistent Publisher, mehrere durable Subscriber: Diese Tests beachten Leis-<br />

tungsmerkmale des JMS-Servers, wenn ein persistent Publisher Nachrichten zu<br />

mehreren durable Subscriber sendet.<br />

• Non-persistent Publisher, mehrere non-durable Subscriber: Diese Tests beachten<br />

Leistungsmerkmale des JMS-Servers, wenn ein non-persisten Publisher Nachrich-<br />

ten zu mehreren non-durable Subscriber sendet.<br />

Es gibt einen feinen Unterschied zwischen durable JMS-Nachricht <strong>und</strong> persistent<br />

JMS-Nachricht. Eine durable JMS-Nachricht gilt nur <strong>für</strong> Publish-Subscribe <strong>und</strong> eine<br />

persistent JMS-Nachricht gilt sowohl <strong>für</strong> Point-to-Point <strong>und</strong> Publish-Subscribe.<br />

Durable : JMS-Server hält eine Nachricht, wenn der Teilnehmer ist vorübergehend<br />

nicht aktiv. So ist die Haltbarkeit von dem Topic-Subscriber <strong>und</strong> dem JMS-Server<br />

definiert. Damit dies geschehen, müssen sich Subscriber mit seinem eindeutigen<br />

Client ID registrieren.<br />

Persistent : JMS-Server speichert jede Nachricht in einem sek<strong>und</strong>ären Speicher. Die<br />

gespeicherte Nachricht wird erst entfernt, wenn Subscriber die Nachricht erfolg-<br />

reich empfängt hat. Dies wird von dem Publisher <strong>und</strong> JMS-Server definiert.<br />

2.2.4 Testdauer<br />

Alle Test-Szenarien wurden <strong>für</strong> insgesamt acht Minuten durchgeführt. Jede Test um-<br />

fasste acht, sechzig-Sek<strong>und</strong>en-Intervallen. Die ersten beiden <strong>und</strong> letzten Intervalle wurdn<br />

als Ramp-up <strong>und</strong> Ramp-down vorgesehen.<br />

Ramp-up Intervalle sind Zeiten, in denen die Systeme ihre Nachrichten-Handling-<br />

Kapazitäten aufsteuern in Reaktion auf die neu eingeführten Client.<br />

Ramp-down Intervalle sind Zeiten, in denen die Systeme ihre Nachrichten-Handling-<br />

Kapazitäten herabsetzen in Reaktion auf die Reduzierung der Client. Die Restlichen<br />

fünf Intervalle sind die Messzeiten, während der Steady-State-Leistung erreicht wurde.<br />

Steady-State ist der Zustand, in dem sich Nachrichtenrate geringfügig verändert.<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 13<br />

2.2.5 Testergebnisse<br />

Abbildung 2.3: Topic Skalierbarkeit [techb]<br />

Abbildung 2.4: Topic Skalierbarkeit [techb]<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 14<br />

Abbildung 2.5: Server Skalierbarkeit [techb]<br />

Abbildung 2.6: Server Skalierbarkeit [techb]<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 15<br />

Abbildung 2.7: Persistent Publisher, Durable Subscriber [techb]<br />

Abbildung 2.8: Persistent Publisher, Durable Subscriber [techb]<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 16<br />

Abbildung 2.9: Non Persistent Publisher, Non Durable Subscriber [techb]<br />

Abbildung 2.10: Non Persistent Publisher, Non Durable Subscriber [techb]<br />

Hauptseminararbeit Aalbrecht Alby Irawan


2 Java-JMS 17<br />

2.2.6 Auswertung<br />

Die Testszenarien stellen Bedingungen <strong>für</strong> realen Anwendungen, wo eine einzelne Mes-<br />

sage Broker viele Publisher <strong>und</strong> Subscriber unterstützen soll. Verschiedene Konfigura-<br />

tionen von JMS-Broker oder Änderungen an Test-Defitionen können zu andere Durch-<br />

satzleistungen herbeiführen.<br />

FioranoMQ <strong>und</strong> SonicMQ liefern relativ hohe Durchsatzrate <strong>und</strong> kommen als “Sie-<br />

ger” von dem oben genannten Test. Aber mehr Ingenieur benutzen ActiveMQ oder<br />

JBoss <strong>für</strong> ihre Systeme. Es liegt einfach daran, dass die beiden Programme kostenlos<br />

erwerbbar sein.<br />

Wenn die Server <strong>und</strong> die Clients als eine “Gesamtpaket” betrachtet sein soll, um die<br />

Interoperabilität zwischen J2EE <strong>und</strong> J2ME zu gewährleisten, wird in vielen Bücher<br />

IBus Mobile oder IBM WebSphere empfohlen. Alternative Variante ist JORAM (Java<br />

Open Reliable Asynchronous Messaging), da JORAM eine Open-Source-Software ist.<br />

Hauptseminararbeit Aalbrecht Alby Irawan


Literaturverzeichnis 18<br />

Literaturverzeichnis<br />

[Menz04] Stefan Menz. Die Java Virtual Machine. <strong>Technische</strong>r Bericht, Uni Ulm,<br />

2004.<br />

[Sun 03] Sun Microsystems, Inc., http://java.sun.com/products/cdc/wp/<br />

cdc-whitepaper.pdf. CDC WhitePaper, 2003.<br />

[techa] Java Performance Comparison. <strong>Technische</strong>r Bericht, Krissoft Solutions.<br />

[techb] Java Performance Comparison. <strong>Technische</strong>r Bericht, Fiorano Soft-<br />

ware Technologies Pte Ltd, http://www.fiorano.com/whitepapers/<br />

java-message-service/JMS-performance-comparison.php.<br />

[Ulle09] Christian Ullenboom. Java ist auch eine Insel. Galileo Press. 1475 Seiten,<br />

8. Auflage, 2009.<br />

[Yuan04] Michael Juntao Yuan. Enterprise J2ME. Prentice Hall. 452 Seiten, 4. Auf-<br />

lage, 2004.<br />

[Yusu04] Kareem Yusuf. Enterprise Messaging Using JMS and IBM Websphere. Pear-<br />

son Education. 329 Seiten, 1. Auflage, 2004.<br />

Hauptseminararbeit Aalbrecht Alby Irawan


Abbildungsverzeichnis 19<br />

Abbildungsverzeichnis<br />

1.1 Java 2 Platform [Yuan04] . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

1.2 J2ME Komponente [Yuan04] . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.3 Übersicht der derzeit verfügbaren Virtual Machine [Sun 03] . . . . . . . 4<br />

2.1 Point-to-Point Modell [Yuan04] . . . . . . . . . . . . . . . . . . . . . . 7<br />

2.2 Publish-Subscribe [Yuan04] . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

2.3 Topic Skalierbarkeit [techb] . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.4 Topic Skalierbarkeit [techb] . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.5 Server Skalierbarkeit [techb] . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

2.6 Server Skalierbarkeit [techb] . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

2.7 Persistent Publisher, Durable Subscriber [techb] . . . . . . . . . . . . . 15<br />

2.8 Persistent Publisher, Durable Subscriber [techb] . . . . . . . . . . . . . 15<br />

2.9 Non Persistent Publisher, Non Durable Subscriber [techb] . . . . . . . . 16<br />

2.10 Non Persistent Publisher, Non Durable Subscriber [techb] . . . . . . . . 16<br />

Hauptseminararbeit Aalbrecht Alby Irawan


Tabellenverzeichnis 20<br />

Tabellenverzeichnis<br />

2.1 Messaging Domäne Schnitstelle [Yusu04] . . . . . . . . . . . . . . . . . 6<br />

2.2 JMS-Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

Hauptseminararbeit Aalbrecht Alby Irawan


Abkürzungsverzeichnis <strong>und</strong> Formelzeichen 21<br />

Abkürzungsverzeichnis <strong>und</strong><br />

Formelzeichen<br />

CDC . . . . . . . . . . . . . . . Connected Device Configuration<br />

CLDC . . . . . . . . . . . . . . Connected Limited Device Configuration<br />

JMS . . . . . . . . . . . . . . . Java Messaging Service<br />

JVM . . . . . . . . . . . . . . . Java Virtual Machine<br />

KVM . . . . . . . . . . . . . . Kilobyte Virtual Machine<br />

MIDP . . . . . . . . . . . . . . Mobile Information Device Profile<br />

Hauptseminararbeit Aalbrecht Alby Irawan


Erklärung 22<br />

Erklärung<br />

Die vorliegende Arbeit habe ich selbstständig ohne Benutzung anderer als der ange-<br />

gebenen Quellen angefertigt. Alle Stellen, die wörtlich oder sinngemäß aus veröffent-<br />

lichten Quellen entnommen wurden, sind als solche kenntlich gemacht. Die Arbeit ist<br />

in gleicher oder ähnlicher Form oder auszugsweise im Rahmen einer oder anderer Prü-<br />

fungen noch nicht vorgelegt worden.<br />

<strong>Ilmenau</strong>, den 01. 07. 2011 Aalbrecht Alby Irawan<br />

Hauptseminararbeit Aalbrecht Alby Irawan

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!