1 vs10.4 10.4 JMS - Java Message Service ist Schnittstelle zu MOM-Implementierungen verschiedener Anbieter (z.B. IBM MQSeries) ist sehr liberal bezüglich.

Slides:



Advertisements
Ähnliche Präsentationen
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
Advertisements

Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Anwendungen aus Modellen Michael Löwe Forschungskolloquium der FHDW,Hannover Hannover, 21. Februar 2005.
Kapitel 8: Nachrichtenbasierte Kommunikation mit JMS
JMS - Java Message Service ist Schnittstelle zu Implementierungen verschiedener Anbieter (z.B. IBM MQSeries) ist sehr liberal bezüglich der Semantik.
6.3 Ereignisbasierte Systeme Ereignis (event) : eine Ereignis-Quelle (event source, publisher) generiert Benachrichtigung (event notification), an der.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Java 2 Enterprise Edition (J2EE)
Threads Richard Göbel.
Java: Objektorientierte Programmierung
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Java: Grundlagen der Objektorientierung
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Sebastian Grahn Sebastian Kühn
10 Nachrichtenorientierte Middleware
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Objekt-Definitionssprache ODL (1/24) Alle Elemente des Objektmodells können beschrieben.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
JDBC: JAVA Database Connectivity
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
SOMA Service-Oriented Mobile learning Architecture.
CRM Group Mail. 2 Wenn Sie einen Newsletter senden wollen, können sie dies mit CRM Group Mail ortsunabhängig mit einen Webbrowser via Internet erledigen.
Web Services Die Zukunft netzbasierter Applikationen iternum GmbH Alexanderstraße Frankfurt/Main
PSI - Überblick und Szenarien
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Die Architektur von Jini Präsentation von Thomas Heinis & Michea Wankerl Seminar Information & Kommunikation WS 2000/01.
Objectives Verstehen was unterDelegate verstanden wird
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Javelin Internet-based parallel computing using Java.
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
2 Datenabstraktion Geheimnisprinzip:
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
Objektorientierte Datenbanken
Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.
Java Programme nur ein bisschen objektorientiert.
© 2012 TravelTainment Einführung in Enterprise JavaBeans Seminarvortrag von Ralf Penners Folie 1 von 34.
Tutorium Software-Engineering SS14 Florian Manghofer.
WebServices Vortrag zur Diplomarbeit WebServices Analyse und Einsatz von Thomas Graf FH Regensburg
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
SMTP Sieve-Interpreter
Anforderungen an die neue Datenstruktur
2 Kommunikationssysteme
Verteilte Anwendungen: J2EE
10 Nachrichtenorientierte Middleware
Hello World! Javakurs 2013 Arne Kappen
1.Event Queue.
Aufgabenteil (mit Hilfsmittel)
Einführung in die Programmierung mit Java
1. Die rekursive Datenstruktur Liste 1
Tutorstunde 10.
Business IN THE FAST LANE
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
- moodle – a internet based learning platform
 Präsentation transkript:

1 vs JMS - Java Message Service ist Schnittstelle zu MOM-Implementierungen verschiedener Anbieter (z.B. IBM MQSeries) ist sehr liberal bezüglich der Semantik dieser Implementierungen unterstützt sowohl Nachrichten-Stil als auch Ereignis-Stil Paket javax.jms API Spez. JMS-Terminologie:  Nachrichten:point-to-point via Queues/Schlangen  Ereignisse:publish/subscribe via Topics/Themen  Quelle und Senke heißen hier producer/consumer

2 vs10.4 Bestandteile einer Nachricht/Ereignismeldung:  Kopf (header), enthältAdresse (destination), Lieferart (delivery mode) Kennung (message ID) Einlieferungszeit (timestamp) Korrelationskennung (correlation ID) Antwortadresse (replyTo) Wiederholungsanzeige (redelivered) Nachrichtentyp (type) Löschzeitpunkt (expiration) Priorität (priority)  Eigenschaften (properties), d.h. Name/Wert-Paare mit Werten primitiver Typen oder String  Rumpf (body):

3 vs10.4  Rumpf (body), bestimmt den Nachrichten-Typ: StreamMessage Folge von primitiven Werten MapMessage Name/Wert-Paare mit primitiven Werten TextMessage Typ String (auch XML!) ObjectMessage serialisiertes Java-Objekt BytesMessage Byte-Folge StreamMessage,.. erweitern die Schnittstelle javax.jms.Message (diese enthält 45 Operationen, hauptsächlich getters und setters)

4 vs Sitzungen und Verbindungen Nachrichten (messages) sind Objekte, die vom Sender nach ihrer Erzeugung mit Inhalt gefüllt werden Quellen und Senken sind Objekte, die bei ihrer Erzeugung an eine bestimmte Queue (bzw. Topic) gebunden werden und Operationen send bzw. receive für das Senden bzw. Empfangen von Nachrichten anbieten (Empfangen im Push Mode ist ebenfalls möglich)

5 vs10.4 Sitzung (session) ist der obligatorisch bereitzustellende Kontext für Quellen bzw. Senken – diese werden grundsätzlich mit Bezug auf ein bestimmtes Sitzungsobjekt erzeugt; eine Sitzung fungiert als Fabrikobjekt für Quellen, Senken und Nachrichten. Ein Sitzungsobjekt und die darüber erzeugten Objekte werden i.d.R. von einem Thread benutzt. Wenn im Push Mode empfangen wird, werden alle Senken der Sitzung von einem Thread bedient. Für nebenläufiges Senden/Empfangen sollten zwei getrennte Sitzungen verwendet werden. Außerdem fungiert die Sitzung als Transaktionskontext (und hat noch weitere Funktionen).

6 vs10.4 Verbindung (connection) zum JMS muss hergestellt werden, bevor – auf deren Basis – Sitzungen eröffnet werden können. Beim Herstellen der Verbindung authentisiert sich der Klient. Typischerweise hat der Dienst keinen lokalen Repräsentanten, weshalb eine Verbindung i.d.R. durch eine TCP-Verbindung realisiert wird. Die Verbindung fungiert als Fabrik für Sitzungen. Ein Verbindungsobjekt wird wiederum über eine Verbindungsfabrik erzeugt. Diese stellt gleichsam den „Anker“ des ganzen Messaging-Systems dar und wird über das JNDI (Java Naming and Directory Interface) erhalten.

7 vs10.4 :InitialContext :ConnectionFactory :Connection :Session new lookup createConnection new createSession new createTextMessage createProducer start

8 vs10.4 import javax.naming.*; // providing Context, // InitialContext, import javax.jms.*;// providing Message, // ConnectionFactory, Context context = new InitialContext(); ConnectionFactory factory = (ConnectionFactory)context.lookup("JMSFactory"); Connection connection = factory.createConnection(); Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE); // create producers/consumers connection.start();..... keine Transaktionen gewünscht erst danach werden Nachrichten zugestellt

9 vs Schlangen (Queues) Anwendungsbeispiel: Quelle generiert „zu erledigende Aufträge“ und legt entsprechende Text-Nachrichten in einer Schlange ab, die unter dem Namen „Assignments“ verzeichnet ist. Queue tasks = (Queue)context.lookup(„Assignments"); MessageProducer producer = session.createProducer(tasks); TextMessage message = session.createTextMessage(); message.setText("Do this and that..."); producer.send(message);

10 vs10.4 Senke nimmt Aufträge aus dieser Schlange im Pull Mode entgegen: Queue tasks = (Queue)context.lookup("Assignments"); MessageConsumer consumer = session.createConsumer(tasks); TextMessage message = (TextMessage)consumer.receive(); // oder für zeitlich begrenztes Warten: receive(3000); String task = message.getText(); MessageProduce r MessageConsume r Queue send receive (vgl. CORBA Event Service (  )) (Push)(Pull)

11 vs Themen (Topics) Anwendungsbeispiel: Quelle generiert Ereignismeldungen zum Thema „Sicherheitswarnungen“, das unter dem Namen „Security Alerts“ verzeichnet ist. Topic alerts = (Topic)context.lookup("Security Alerts"); MessageProducer producer = session.createProducer(alerts); TextMessage message = session.createTextMessage(); message.setText("New security hole discovered in..."); producer.send(message);

12 vs10.4 Damit: Topic alerts = (Topic)context.lookup("Security Alerts"); MessageConsumer consumer = session.createConsumer(alerts); consumer.setMessageListener(new AlertListener()); connection.start(); Senke nimmt Meldungen im Push Mode entgegen. Dafür wird ein Event Handler mit Schnittstelle MessageListener benötigt: import javax.jms.*; public class AlertListener implements MessageListener { public void onMessage(Message message) { String alert = ((TextMessage)message).getText();..... // take action! }

13 vs10.4 Dauerhaftes Abonnement (durable subscription) überdauert das Stoppen und Wiederstarten einer Verbindung, d.h. wenn man später erneut an einem Thema interessiert ist, erhält man alle in der Zwischenzeit eingetroffenen Meldungen MessageConsumer consumer = session.createDurableSubscriber(alerts, "mySub"); // not createConsumer consumer.setMessageListener(new AlertListener()); connection.start();..... connection.stop();..... consumer = session.createDurableSubscriber(alerts, "mySub"); // resumes subscription to topic consumer.setMessageListener(new AlertListener()); connection.start();

14 vs Filterung benutzt die Properties einer Meldung. Anwendungsbeispiel: Meldungen enthalten ein „Betrifft“ in Gestalt einer String Property TextMessage message = session.createTextMessage(); message.setText("Beware of virus "); message.setStringProperty("Subject", "Virus")

15 vs10.4 Empfänger sei nur an Viren- und Wurm-Meldungen interessiert: entsprechenden Selektor (selector) verwenden ! String selector = "(Subject = 'Virus' OR Subject = 'Worm')"; MessageConsumer consumer = session.createConsumer(alerts, selector); consumer.setMessageListener(new AlertListener()); connection.start(); Syntax von Selektoren: Teil der Syntax von SQL92 für bedingte Ausdrücke

16 vs SIENA Scalable Internet Event Notification Architecture (Carzaniga et al …)  Konzeptionell weltumspannender Ereignisdienst  Leistungsfähige Filterung  Raffiniert verteilte Architektur und Filterung

17 vs10.4 Ereignismeldung (notification) = Menge typbehafteter Attribute, z.B. string class = finance/exchanges/stock time date = Mar 4 11:43:37 MST 1998 string exchange = NYSE string symbol = DIS float prior = float change = -4 float earn = Filtersprache

18 vs10.4 Senken und Quellen von Ereignismeldungen registrieren beim Ereignisdienst Abonnement (subscription) bzw. Ankündigung (advertisement) (jeweils in Gestalt eines Filters) die die interessierenden bzw. gemeldeten Ereignisse charakterisieren Ziel: gezielte, effiziente Vermittlung zwischen Quellen und Senken Überdeckungsrelationen

19 vs10.4 Filter (filter) = Menge von Aussagen über einzelne Attribute, hauptsächlich mit Vergleichsoperatoren, z.B. string class >* finance/exchanges string exchange = NYSE string symbol = DIS float change < 0 Muster (pattern) = Folge von Filtern (zur Filterung einer Gruppe von Meldungen)

20 vs10.4 Def.:Ein Abonnement erfasst/überdeckt (covers) eine Meldung, wenn für jede Aussage des Filters ein passendes Attribut der Meldung existiert z.B.Abonnement Meldung string what = alarm integer level > 3 integer level = 5 integer level < 7 ! NichtAbonnement Meldung string what = alarm integer level > 3 time date = 02:40:03

21 vs10.4 Def.:Eine Meldung entspricht (is covered by) einer Ankündigung, wenn jedes Attribut der Meldung zu mindestens einer Aussage des Filters passt z.B.Ankündigung Meldung string what = alarm string what = login string what = login string user = carzaniga string user any Def.:Ein Abonnement und eine Ankündigung korrespondieren, wenn mindestens eine Nachricht konstruierbar ist, die - der Ankündigung entspricht und - vom Abonnement erfasst wird.

22 vs10.4 Abonnements und Ankündigungen verschiedener Stationen werden in geeigneter Weise aggregiert: string type = alarm int level > 2 string type = alarm int level = 2 string type = quote string type = alarm int level > 1 string type any string type = quote string type = alarm int level > 0 string type = alarm string type = quote int level > 0 string type = alarm int level = 3

23 vs10.4 SIENA lässt nur solche Pfade zu, bei denen Ankündigungen und Abonnements korrespodieren. Damit wird das Volumen übertragener Meldungen minimiert.