JMS

Transkript

JMS
X33EJA – Enterprise Java
Petr Šlechta
Sun Microsystems
[email protected]
Enterprise Java Beans
EJB
(doplnění)
EJBs
●
●
●
Entity beans (pouze ve verzi 2.x, ve verzi 3.0
nahrazeny Entity classes (JPA))
–
CMP / BMP
–
Remote / Local
Session beans
–
Stateless / Stateful
–
Remote / Local
Message-driven beans
–
Destination
Java EE 2.x vs 3.0
●
●
Verze 2.x vychází z klasického OOP přístupu
–
Home a Business interfaces (EB, SB)
–
Bean musí implementovat interface, aby kontejner
věděl, jak s ním zacházet
–
Některé metody mohou zůstat abstraktní,
implementaci zajistí kontejner
Verze 3.0 využívá anotace a dependency
injection (AOP přístup)
–
Kontejner pomocí anotací získává informace
o objektech
–
Dependency injection, instrumentace byte kódu
(bez té to nejde)
Remote vs Local interface
●
●
●
Remote – vzdálený přístup k beanu na jiném
aplikačním serveru či z klienta
Local – přístup v rámci jednoho kontejneru
Jeden bean může implementovat oba typy
interfaců
Entity Beans (2.x)
●
●
Perzistence
–
CMP – container managed persistence
–
BMP – bean managed persistence
Rozdílný přístup oproti JPA
–
●
Programátor neurčuje, kdy se data uloží
Ukázka
Session Beans
●
Ukázka (2.x: použití interfaců)
●
Ukázka (3.0: security)
Java Message Service
JMS
Messaging (zasílání zpráv)
●
De-coupled (Loosely-coupled) communication
●
Asynchronní / synchronní komunikace
●
Zasílání zpráv různých formátů
–
Syntaxe, semantika
●
MOM (Message Oriented Middleware)
●
JMS specifikace
–
Vznikla na základě již existujících implementací
systémů od různých firem
–
Sjednocení již existujících přístupů (JCP,
kompromisy mezi různými přístupy)
Messaging – Výhody
●
Nezávislost na
–
Platformě
–
Datové síti a adresování
–
I díky Javě funguje v heterogením prostředí
●
Škálovatelnost
●
Robustní řešení
MOM
JMS – Vlastnosti
●
Dva modely komunikace
–
Point to point: fronty (queues, FIFO), jeden příjemce
–
Publish / subscribe: topics, distribuce více příjemcům
–
JMS implementace musí podporovat alespoň jeden z
modelů
●
Spolehlivost
●
Transakce
●
Distribuovatelnost
●
Bezpečnost
Implementace JMS
●
●
Komerční
–
IBM MQ, Sonic MQ, Fiorano, BEA
–
Sun MQ
Open Source
–
OpenJMS, ActiveMQ, JbossMessaging, JBossMQ
–
mom4j, JORAM, MantaRay, UberMQ
–
..., ...
Point to point
●
●
Fronty
–
Pojmenované
–
Priority
–
FIFO (na úrovni jedné priority)
–
Sender / receiver (jeden příjemce zprávy)
–
Fronta si uchovává obsah I při nečinnosti příjemce
–
Pro komunikaci dvou elementů jsou nutné 2 fronty
Transakce
–
Mezi klientem a MOM
–
Potvrzení přijetí a zpracování zprávy
Publish / Subscribe (Pub/Sub)
●
Topics
–
Pojmenované
–
Producer / Consumers
–
Více příjmců zprávy
–
Producer registruje topic (publish), Consumers se
zapisují k odběru zpráv (subscribe)
–
Časové omezení k doručení zprávy (vyjímka:
durable subscriptions – uchovávají zprávy podobně
jako fronty)
–
Obecně méně spolehlivý mechanizmus
JMS – Spolehlivost
●
Dva módy pro doručování (delivery mode)
–
Persistent
–
Non-persistent
JMS – Transakce
●
●
Odesílatel (sender)
–
Může sdružit několik zpráv do transakce
–
MOM musí přijmout všechny
Příjemce (receiver)
–
●
Dokud nepřijme a nezpracuje všechny zprávy
z transakce, nejsou zprávy odstraněny z fronty
Rozsah transakce
–
Klient – MOM
–
Klient – klient: JMS toto nepodporuje!
JMS – Distribuovatelnost
●
Kanál pro přeposílání zpráv mezi různými
servery
–
Komplikovanější řešení než centrální úložiště
●
Bridge mezi dvěma JMS implementacemi
●
ESB (Enterprise System Bus)
JMS – Bezpečnost
●
Zajišťována specificky pro danou implementaci
–
Authentication
–
Encryption
–
Message integrity
JMS API
●
API jsou hlavně interfaces
–
Implementace závisí na dodavateli (ISV)
●
Podpora v Java EE (MDB)
●
JMS využívá JNDI technologii pro lookup
–
ConnectionFactory
–
Destination
JMS zpráva
●
Definuje několik typů zpráv
–
●
Jak je zpráva serializována už definováno není
Zpráva má hlavičku, properties a tělo
–
Hlavička pro routing zprávy
●
–
Properties (jméno, hodnota)
●
●
–
delivery mode, msg ID, timestamp, priorita, ReplyTo,
msg type
Aplikační + MOM specifické údaje
Díky unifikaci zpráv lze vybírat zprávy podle údajů
v hlavičce (tzv. Selektor) (SQL 92 subset)
Tělo
●
Stream, Map, Text, Object, Bytes
Ukázky
●
Send and Receive
●
Listen and Reply
●
MDB

Podobné dokumenty

lukas_krecan_spring

lukas_krecan_spring Potřebujeme spojit nový kód, stávající kód, knihovny třetích stran a knihovny Javy

Více

Prezentace ke stažení [PDF - 837 kB]

Prezentace ke stažení [PDF - 837 kB] a kompletní o p e zpracování p aco á zprávy ☺ • Odesílatel zprávy prá nem nemusí sí znát nát ((všechny) šechn ) příjemce ☺ - Motivace pro použití zprostředkované komunikace • Request / Response (od...

Více

dodatek

dodatek Printer printer = (Printer)ctx.lookup("Xerox-312");

Více

Novinky ze sv¥ta grid

Novinky ze sv¥ta grid pokra£ování ve vývoji gridového middlewaru . . . ale nejsme na to sami

Více

Fulltextové vyhledávání v Unicorn ES pomocí Lucene

Fulltextové vyhledávání v Unicorn ES pomocí Lucene vyhledávání v Unicorn ES, závislého na Oracle. Práce je z části rešerše, z části analytickou (analýza požadavků) i architektonickou dokumentací (4+1 view) a v neposlední řadě obsahuje samotnou impl...

Více

Přednáška na VŠE Praha

Přednáška na VŠE Praha  Licence MPL umožňovala : - zákazník rozhoduje o prioritách při implementaci i vývoji - zákazník může sám přidávat novou funkcionalitu - změny lze licencovat třetí straně bez povinnosti OS komunitě

Více