<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.multimediaexpo.cz/mmecz/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=Java_Messaging_Services</id>
		<title>Java Messaging Services - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=Java_Messaging_Services"/>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=Java_Messaging_Services&amp;action=history"/>
		<updated>2026-07-31T08:07:16Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.16.5</generator>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=Java_Messaging_Services&amp;diff=503320&amp;oldid=prev</id>
		<title>Sysop: 1 revizi</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=Java_Messaging_Services&amp;diff=503320&amp;oldid=prev"/>
				<updated>2014-01-22T09:55:58Z</updated>
		
		<summary type="html">&lt;p&gt;1 revizi&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Starší verze&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Verze z 22. 1. 2014, 09:55&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=Java_Messaging_Services&amp;diff=503319&amp;oldid=prev</id>
		<title>Sysop: 1 revizi</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=Java_Messaging_Services&amp;diff=503319&amp;oldid=prev"/>
				<updated>2010-10-21T09:17:45Z</updated>
		
		<summary type="html">&lt;p&gt;1 revizi&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Java Messaging Services''' se řadí do skupiny [[Message-oriented middleware|Message Oritented Middleware]](dále [[Message-oriented middleware|MOM]]), jiným názvem také [[Enterprise messaging system|Enterprise Messaging System]]. [[Message-oriented middleware|MOM]] produkty se staly nedílnou součástí firemního software pro zajištění integrace aplikací. Umožňují různým byznys komponentám fungovat dohromady a tvořit tak ucelený, spolehlivý a pružný systém. Přestože se často jedná o naprosto odlišné komponenty, tak díky prostředníkovi ([[Message-oriented middleware|MOM]]) mohou tyto [[aplikační software|aplikace]] spolu komunikovat prostřednictvím zpráv. Jedním z možných řešení je právě JMS, které poskytuje kompletní [[API]] pro vývojáře a poskytuje tím možnost, jak psát programy v [[Java (programovací jazyk)|Javě]], které dokáží vytvářet, posílat, přijímat a číst zprávy posílané mezi aplikacemi. Soubor rozhraní a přidružené logiky definuje jak v rámci JMS přistupuje klient k prostředkům [[Message-oriented middleware|MOM]]. Cílem JMS je poskytnout co nejvíce konceptů a rozhraní v takové podobě, aby se minimalizoval počet konceptů, které musí programátor [[Java (programovací jazyk)|Javy]] umět, aby mohl pracovat s [[Message-oriented middleware|MOM]] a zprávami. Programátor se díky JMS nemusí starat o technické pozadí za koloběhem zpráv.&amp;lt;ref name=&amp;quot;JMSS&amp;quot;&amp;gt;Java Message Service Specification [online]. [s.l.] : Java Community Process, 18.3.2002 [cit. 2010-04-20]. Dostupné z WWW: &amp;lt;http://java.sun.com/products/jms/docs.html&amp;gt;. [e-kniha]&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;JMSW&amp;quot;&amp;gt;Java Message Service In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 4 March 2002, 6 April 2010 [cit. 2010-04-20]. Dostupné z WWW: &amp;lt;http://en.wikipedia.org/wiki/Java\_Message\_Service&amp;gt;. [e-kniha]&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;WETHERILL&amp;quot;&amp;gt;WETHERILL, John. Java.sun.com [online]. c2010 [cit. 2010-05-22]. Messaging Systems and the Java Message Service (JMS). Dostupné z WWW: &amp;lt;http://java.sun.com/developer/technicalArticles/Networking/messaging/&amp;gt;.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Message vs email ==&lt;br /&gt;
JMS '''není''' emailové [[API]], přestože funguje na podobném principu. Základem komunikace mezi klienty v rámci JMS jsou asynchronně posílané zprávy (požadavky, události, odpovědi atd.). Tyto zprávy jsou vytvářeny a užívány aplikacemi a obsahují informace, díky kterým tyto [[aplikační software|aplikace]] fungují, nastavují se a koordinují svou činnost v rámci celku. [[e-mail|Emaily]] jsou posílány také mezi klienty, ale výsledným cílem je [[uživatel (počítačový)|uživatel]] – [[člověk]].&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Message system type ==&lt;br /&gt;
V oblasti [[Message-oriented middleware|MOM]] se běžně používají dva modely a to [[P2P|peer-to-peer]](také point-to-point, dále P2P) a [[publish-subscribe]](dále PS). Tyto dva modely se liší nejen počtem poskytovatelů a odběratelů zpráv, ale také způsobem jakým si odběratelé své zprávy vyzvedávají a jakým způsobem jsou zprávy publikovány. JMS dokáže pokrýt funkcionalitu obou modelů.&amp;lt;ref name=&amp;quot;WETHERILL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[P2P]] je založen na frontách. Každá zpráva je přiřazena do určité fronty a klienti získávají z těchto front své zprávy. Není však přesně určeno kdy si klient má zprávu vyzvednout, třeba může nastat i případ, že si ji vůbec nevyzvedne. Tedy se v jedné frontě hromadí zprávy a mnoho uživatelů si je vyzvedává (one-to-many).&amp;lt;ref name=&amp;quot;WETHERILL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oproti tomu PS model přiřazuje své zprávy určitému uzlu v kontextové hierarchii, ke kterému se odběratelé i publikovatelé přihlašují a odhlašují v průběhu doby trvání (many-to-many). Systém se stará o doručení zpráv od různých publikovatelů k mnoha různým odběratelům a systém také zajišťuje kdy a jak se zpráva odběrateli doručí.&amp;lt;ref name=&amp;quot;WETHERILL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Providers, Messages, Domains ==&lt;br /&gt;
[[JMS Provider|Provider]] je [[Entita (informatika)|entita]], která implementuje [[Message-oriented middleware|MOM]] pro příslušný [[systém]] či [[aplikační software|aplikace]]. [[JMS Provider|Provider]] může být implementován tak, jak ho definuje JMS (tedy [[Java (programovací jazyk)|Java]] [[implementace]]) a nebo je za [[JMS Provider|providera]] považován [[Adaptér (návrhový vzor)|adaptér]] na non-[[Java (programovací jazyk)|Java]] [[Message-oriented middleware|MOM]], tedy lze zajistit i kompatibilitu [[Java (programovací jazyk)|Java]] aplikací s non-[[Java (programovací jazyk)|Java]] [[JMS Provider|providerem]].&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[JMS Messages|Messages]] jsou hlavní podstatou [[Message-oriented middleware|MOM]], tedy zprávy, kterými se zabývá [[JMS Provider|provider]] a následně poskytovatel i konzument. Samotný JMS definuje soubor [[Rozhraní (informatika)|rozhraní]] pro zprávy, takže programátoři pracují s konzistentním [[API]] a můžou vytvářet a posílat zprávy nezávisle na druhu [[JMS Provider|providera]].&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[JMS Domains|Domains]](také [[JMS Destinations|Destinations]]) jsou buď point-to-point nebo publish-subscribe. Tyto domény byly vytvořeny jako reflexe dvou základních modelů [[Message-oriented middleware|MOM]]. JMS definuje různá rozhraní pro každou doménu a tím sice obtížně, ale přesto umožňuje propojení i různých modelů [[Message-oriented middleware|MOM]] najednou. Pro použití JMS není potřeba mít implementovány obě domény, stačí pouze jedna.&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JMS neobsahuje ==&lt;br /&gt;
* '''Load Balancing/Fault Tolerance''' - JMS [[API]] nedefinuje kooperaci mnoha klientů při poskytování jedné sjednocené služby.&lt;br /&gt;
* '''Error/Advisory Notification''' - JMS nedefinuje chybové či systémové zprávy pro klienty. Dle specifikací se klienti mohou těmto zprávám vyhnout a odstranit tak nebezpečí a omezení portability, které používání těchto zpráv přináší, protože většina [[Message-oriented middleware|MOM]] řeší tyto zprávy po svém.&lt;br /&gt;
* '''Administration''' - JMS nedefinuje [[API]] pro správu  messaging produktů, zajišťuje pouze komunikaci.&lt;br /&gt;
* '''Security''' - Není specifikováno [[API]] pro zajištění bezpečnosti a integrity zpráv. JMS nechává bezpečnost na [[JMS Provider|Providerovi]] a to jak distribuci klíčů klientům, tak i specifikaci digitálních podpisů.&lt;br /&gt;
* '''[[Wire Protocol]]''' - JMS ve specifikaci nedefinuje [[Wire Protocol]](WP) a zároveň diktuje, aby posílání zpráv bylo možné i mezi implementacemi JMS od různých výrobců, což způsobuje problémy. WP je protokol, který se nachází mezi transportními protokoly ([[TCP/IP]], [[UDP]]) a samotným JMS a zabývá se popisem formátu dat, která se posílají přes síť. Výběr a definici WP nechává JMS na implementátorovi.&lt;br /&gt;
* '''Message Type Repository''' - Není definováno repository pro ukládání definic typů zpráv a není definován ani jazyk pro vytváření definic typů.&lt;br /&gt;
&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JMS a Java API ==&lt;br /&gt;
* '''[[JDBC]]''' - Klienti mohou použít JMS společně s [[JDBC]] v jedné transakci pro operace s databází, lze toho dosáhnout pomocí [[EJB]], [[:en:Java Transaction API|JTA]].&lt;br /&gt;
* '''[[Java Bean]]''' - [[Java Bean|Java Beany]] mohou být použity s JMS pro posílání zpráv, ale JMS rozhraní nebyla vytvořena přímo pro tento způsob použití.&lt;br /&gt;
* '''[[EJB|Enterprise Java Bean]]''' --- JMS společně s [[JDBC]] a [[EJB]] tvoří silnou kombinaci pro vytváření enterprise services.&lt;br /&gt;
* '''[[Java Transaction API|Java Transaction]]''' - Klient JMS může použít [[:en:Java Transaction API|JTA]] pro distribuované transakce. Nejedná se však o samotnou funkci JMS, ale o funkci transakčního prostředí ve kterém klient funguje.&lt;br /&gt;
* '''[[Java Transaction Service]]''' - Distribuované zpracování posílaných a přijímaných zpráv, které obsahují databázové updaty či další služby z oblasti [[Java Transaction Service|JTS]], může být explicitně naprogramováno, ale  často je to řešeno automaticky pokud JMS klient běží v prostředí aplikačního serveru, tedy [[EJB|Enterprise Java Bean]] serveru, který je v souladu se specifikací.&lt;br /&gt;
* '''[[Java Naming and Directory Service]]''' - Klienti vyhledávají konfigurované JMS objekty pomocí [[Java Naming and Directory Service|JNDI]]. Přenecháním administrativních činností na [[Java Naming and Directory Service|JNDI]] se podporuje [[portabilita]] a tím jsou aplikace i lépe spravovatelné, protože tyto podpůrné činnosti (ohledně look up atd.) nejsou vloženy v kódu [[aplikační software|aplikací]].&lt;br /&gt;
&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Části aplikací ==&lt;br /&gt;
Typicky se JMS aplikace skládá z několika částí: [[JMS Clients]], Non-JMS Clients, [[JMS Messages|Messages]], [[JMS Provider]], Administered Objects.&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Rozdíly mezi P2P a Pub/Sub doménami&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
! JMS Parent&lt;br /&gt;
! P2P Domain&lt;br /&gt;
! Pub/Sub Domain&lt;br /&gt;
|-&lt;br /&gt;
|ConnectionFactory &lt;br /&gt;
|QueveConnectionFactory &lt;br /&gt;
|TopicConnectionFactory &lt;br /&gt;
|-&lt;br /&gt;
|Connection &lt;br /&gt;
|QueveConnection &lt;br /&gt;
|TopicConnection &lt;br /&gt;
|-&lt;br /&gt;
|Destination &lt;br /&gt;
|Queve &lt;br /&gt;
|Topic &lt;br /&gt;
|-&lt;br /&gt;
|Session&lt;br /&gt;
|QueveSession &lt;br /&gt;
|TopicSession &lt;br /&gt;
|-&lt;br /&gt;
|MessageProducer &lt;br /&gt;
|QueveSender &lt;br /&gt;
|TopicPublisher &lt;br /&gt;
|-&lt;br /&gt;
|MessageConsumer&lt;br /&gt;
|QueveReceiver,QueveBrowser &lt;br /&gt;
|TopicSubscriber &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* '''[[JMS Connection Factory|ConnectionFactory]]''' je administrovaný objekt používaný k vytváření spojení ([[JMS Connection|Connection]]).&lt;br /&gt;
* '''[[JMS Connection|Connection]]''' představuje aktivní spojení s [[JMS Provider|JMS providerem]].&lt;br /&gt;
* '''[[JMS Destination|Destination]]''' zapouzdřuje identitu cílového určení zprávy.&lt;br /&gt;
* '''[[Session]]''' je jednovláknový kontext pro posílání a přijímání zpráv.&lt;br /&gt;
* '''[[JMS Message Producer|MessageProducer]]''' označuje objekt, který byl vytvořený [[Session]] a je používán pro posílání zpráva na cílovou [[JMS Destination|Destination]].&lt;br /&gt;
* '''[[JMS Message Consumer|MessageConsumer]]''' bývá vytvořen příkazem na [[Session]] a je používán pro přijímání zpráv na cílové [[JMS Destination|Destination]].&lt;br /&gt;
&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Souběžný přístup k objektům je v rámci JMS podporován pouze pro [[JMS Destination|Destination]], [[JMS Connection Factory|ConnectionFactory]] a [[JMS Connection|Connection]], tedy pro ty objekty, které přirozeně musí obsluhovat mnoho přístupů současně. Ostatní objekty jsou navrženy pro použití jen jedním logickým vláknem v určený čas. V případě [[Session]] je toto omezení uplatněno hlavně proto, že je velmi těžké implementovat mnohovláknové transakce a přineslo by to více škody než užitku. Pro složitější aplikace, které potřebují tuto funckionalitu, je možné použít více [[Session]] najednou.&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Messages - zprávy ==&lt;br /&gt;
Prostředkem komunikace v messaging systémech jsou samozřejmě zprávy a v mnoha messaging systémech se forma i obsah zpráv dost liší. JMS poskytuje způsoby jak jednotně přistupovat ke zprávám a tedy jakou mají mít formu a druhy obsahu. Zpráva v JMS se skládá ze tří částí:&lt;br /&gt;
* '''Message header''' je používán pro identifikaci zprávy, například se tak určuje odběratel zprávy.&lt;br /&gt;
* '''Properties''' jsou místem pro různá aplikační, poskytovatelské a nepovinná nastavení.&lt;br /&gt;
* '''Body''' je část, která je tou samotnou zprávou. Je více typů zpráv a kromě dalších podporovaných se jedná především o [[JMS Text Messages|TextMessages]] a [[JMS Object Messages|ObjectMessages]].&lt;br /&gt;
&amp;lt;ref name=&amp;quot;JMSS&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TextMessages ===&lt;br /&gt;
Takto se označují zprávy, které obsahují jednoduchý [[String]] a předpokládá se pouze posílání textu. Téměř ideální pro posílání zpráv pomocí [[XML]], což je ve své podstatě pouhý text.&amp;lt;ref name=&amp;quot;WETHERILL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Používá se typ objektu [[JMS Text Messages|TextMessage]] a s pomocí [[Session]] se vytvoří skrze createMessage(). Na vytvořené zprávě pak stačí zavolat metodu setText() do které se předá příslušný [[String]]. Dále už je zpráva hotova a může být předána messaging systému.&amp;lt;ref name=&amp;quot;WETHERILL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ObjectMessages ===&lt;br /&gt;
Tyto zprávy slouží k posílání entit typu [[Objektově orientované programování|Object]], ale pouze serializovatelných. JMS umožňuje posílat i [[Kolekce v jazyce Java|Collection]] objekt (např. [[Kolekce v jazyce Java|List]], [[Kolekce v jazyce Java|Set]]), tedy soubor více serializovatelných objektů v jedné zprávě.&amp;lt;ref name=&amp;quot;WETHERILL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Používá se pro to typ objektu [[JMS Object Messages|ObjectMessage]] a na [[Session]] je třeba zavolat metodu createObjectMessage(). Před odesláním je už jen třeba pomocí metody setObject(), zavolané na vytvořené [[JMS Object Messages|ObjectMessage]] zprávě, nastavit požadovaný objekt k odeslání. Následně lze zprávu předat messaging systému.&amp;lt;ref name=&amp;quot;WETHERILL&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Příklad použití ==&lt;br /&gt;
Podstatou komunikace v [[Message-oriented middleware|MOM]] je asynchronní zpracování a posílání dat či informací mezi různými komponentami ve formě zpráv. Nejde ale pouze o textové řetězce, jak by napovídal název zpráva, ale lze posílat i celé objekty různých typů a také i kolekce objektů.&lt;br /&gt;
&lt;br /&gt;
Příkladem použití asynchronních zpráv je komunikace mezi [[aplikační software|aplikacemi]], sloužící k vytváření návrhů smluv. Tedy pracovník vytvoří smlouvu, připraví podklady a odešle ji ke schválení (tedy je publikovatelem - publisher). Technologicky se odešle v systému objekt Smlouva s určitými parametry ve zprávě typu [[JMS Object Messages|ObjectMessage]]. Zde přichází ke slovu JMS a dle použitého modelu se [[JMS Provider|Provider]] postará o doručení, publikování atd. O několik dní později, na jiném pracovišti, klidně i v jiném státě, si pracovník odpovědný za schvalování smluv příslušný návrh vyzvedne (jako odběratel - subscriber). Po schválení se ještě může nastavit jako další odběratel příslušný nadřízený kontroly kvality práce. Výsledkem je, že se zpráva (Smlouva) dostane na místo určení a i kdyby se původní místo odeslání odpojilo od sítě či internetu, tak stále, pokud bude provider v pořádku fungovat, je ta zpráva k dispozici.&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
==Externí odkazy==&lt;br /&gt;
* http://java.sun.com/products/jms/ - Oficiální stránky Java Message Service (anglicky)&lt;br /&gt;
&lt;br /&gt;
{{Článek z Wikipedie}}&lt;br /&gt;
[[Kategorie:Java]]&lt;/div&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	</feed>