Distribuované systémy a výpočty

Podobné dokumenty
RMI Remote Method Invocation

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

RMI - Distribuované objekty v Javě

JAVA V RMI Java, letní semestr

CORBA Common Object RequestBroker Architecture. Distribuované systémy 2006

JAVA RMI Java, letní semestr 2018

Algoritmizace a programování

Distribuované systémy a výpočty

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

KTE / ZPE Informační technologie

Úvod do programovacích jazyků (Java)

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Common Object Request Broker Architecture

Úvod do CORBY. Svetlozara Arabadzhieva

1. Téma 12 - Textové soubory a výjimky

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Typický prvek kolekce pro české řazení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

Programování v Javě I. Únor 2009

Java - výjimky. private void vstup() throws IOException {... }

Programování v Javě I. Leden 2008

Java Message Service (JMS) Martin Ptáček, KOMIX s.r.o.

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Abstraktní datové typy: zásobník

Podmínky na zápočet. Java, zimní semestr

Java Výjimky Java, zimní semestr

Car Agent. Struktura chování:

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Java a Caché IV: Manipulace s objekty

Soubor jako posloupnost bytů

Generické programování

X33EJA Enterprise Java. Petr Šlechta Sun Microsystems

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Enterprise Java Beans 3.0

RMI - Remote Method Invocation

Java - řazení objektů

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Teoretické minimum z PJV

Java Managenent Extension JMX

Iterator & for cyklus

Java a XML. 10/26/09 1/7 Java a XML

20. Projekt Domácí mediotéka

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

Remote Method Invocation RMI

Regulární výrazy. Vzory

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Úvod do programování - Java. Cvičení č.4

Principy objektově orientovaného programování

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Návrhové vzory Design Patterns

Katedra měřicí a řídicí techniky, VŠB - Technická univerzita v Ostravě, tř. 17. listopadu, Ostrava-Poruba, Česká republika

Čipové karty Lekařská informatika

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

5 Rekurze a zásobník. Rekurzivní volání metody

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

PREPROCESOR POKRAČOVÁNÍ

Zápis programu v jazyce C#

1. Programování proti rozhraní

typová konverze typová inference

UJO Framework. revoluční architektura beans. verze

Jazyk C# (seminář 6)

JAVA. Java Management Extensions JMX

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

boolean hasnext() Object next() void remove() Kolekce

ilé aspekty distribuovaných objektových systémů

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Algoritmizace a programování

Vláknové programování část V

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Datové struktury. alg12 1

NIO. Aplikační programování v Javě (BI-APJ) - 12 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Vytváření a použití knihoven tříd

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

Třídy a objekty -příklady

Distribuované systémy a výpočty (14) 7/1/2008

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Programovací jazyk Java

8. přednáška: Soubory a proudy

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

IW5 - Programování v.net a C# 4 Pokročilé konstrukce C#

Dědičnost (inheritance)

Návrh softwarových systém. Návrh softwarových systémů

Doxygen. Jakub Břečka

Úvod do programovacích jazyků (Java)

Textové soubory. alg9 1

7 Jazyk UML (Unified Modeling Language)

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Komunikace systémů pomocí Hradec Králové

Transkript:

Distribuované systémy a výpočty X36DSV Jan Janeček Peter Macejko

CORBA Common Object Request Broker Architecture - konsorcium OMG (Object Management Group) - standard pro podporu komunikace v DS - pouze specifikace X36DSV - Distribuované systémy a výpočty (5 v1.2) 2

CORBA Common Object Request Broker Architecture - procedurální komunikace - programová sběrnice - objektový přístup - podpora složitějších forem chování serveru X36DSV - Distribuované systémy a výpočty (5 v1.2) 3

CORBA - architektura ORB Object Request Broker DII/DSI Dynamic Invocation Interface / Dynamic Skeleton Interface IR/IMR Interface Repository / Implementation Repository OA Object Adapters IIOP Internet Inter-ORB Protocol X36DSV - Distribuované systémy a výpočty (5 v1.2) 4

CORBA - architektura X36DSV - Distribuované systémy a výpočty (5 v1.2) 5

CORBA - architektura X36DSV - Distribuované systémy a výpočty (5 v1.2) 6

CORBA broker klient - server X36DSV - Distribuované systémy a výpočty (5 v1.2) 7

CORBA registrace serveru X36DSV - Distribuované systémy a výpočty (5 v1.2) 8

CORBA komunikace klient - server X36DSV - Distribuované systémy a výpočty (5 v1.2) 9

CORBA komunikace X36DSV - Distribuované systémy a výpočty (5 v1.2) 10

CORBA komunikace X36DSV - Distribuované systémy a výpočty (5 v1.2) 11

CORBA - IDL module StockObjects { struct Quote { string symbol; long at_time; double price; long volume; ; exception Unknown{; interface Stock { Quote get_quote() raises(unknown); void set_quote(in Quote stock_quote); readonly attribute string description; ; interface StockFactory { Stock create_stock( in string symbol, in string description ); ; ; X36DSV - Distribuované systémy a výpočty (5 v1.2) 12

CORBA - příklad Pro IONA Orbix průmyslový CORBA standard Definice rozhraní interface Hello { string sayhello(); ; a jeho překlad idl Hello.idl; X36DSV - Distribuované systémy a výpočty (5 v1.2) 13

CORBA - příklad Hello.java - rozhraní klienta _HelloStub.java - stub klienta _HelloSkeleton.java - stub serveru HelloPackage/ - definice typů definovaných rozhraním _HelloImplBase.java - základ pro implementaci serveru... X36DSV - Distribuované systémy a výpočty (5 v1.2) 14

CORBA - příklad Hello.java - přeložené rozhraní klienta public interface Hello extends org.omg.corba.object { public String sayhello() ; public java.lang.object _deref() ; X36DSV - Distribuované systémy a výpočty (5 v1.2) 15

CORBA - příklad _HelloImplBase.java - základní objekt pro implementaci serveru import IE.Iona.OrbixWeb._OrbixWeb; public abstract class _HelloImplBase extends _HelloSkeleton implements Hello { public _HelloImplBase() { org.omg.corba.orb.init().connect(this);... public java.lang.object _deref() { return this; X36DSV - Distribuované systémy a výpočty (5 v1.2) 16

CORBA - příklad Kód metod serveru public class HelloImplementation extends _HelloImplBase { public String sayhello() { return "Hello World"; a konečně samotný server... X36DSV - Distribuované systémy a výpočty (5 v1.2) 17

CORBA - příklad import IE.Iona.OrbixWeb._CORBA; import IE.Iona.OrbixWeb.CORBA.ORB; public class HelloServer { public static void main (String args[]) { org.omg.corba.orb ord = org.omg.corba.orb.init(); try { Hello server = new HelloImplementation(); _CORBA.Orbix.impl_is_ready( "HelloServer" ); System.out.println("Server going Down"); catch ( org.omg.corba.systemexception corbaerror) { System.out.println("Exception " + corbaerror); X36DSV - Distribuované systémy a výpočty (5 v1.2) 18

CORBA - příklad Překlad kódů serveru Hello.java _HelloSkeleton.java _HelloImplBase.java HelloImplementation.java HelloServer.java Start name servisu orbixdj -textconsole registrace serveru putit HelloServer -java HelloServer spuštění serveru java HelloServer X36DSV - Distribuované systémy a výpočty (5 v1.2) 19

CORBA - příklad Kód klienta import IE.Iona.OrbixWeb._CORBA; import org.omg.corba.orb; public class HelloClient { public static void main(string args[]) { ORB.init(); String hostname = "eli.sdsu.edu"; String serverlabel = ":HelloServer"; Hello server = HelloHelper.bind( serverlabel, hostname); System.out.println( server.sayhello() ); X36DSV - Distribuované systémy a výpočty (5 v1.2) 20

CORBA - příklad Překlad souborů klienta _HelloStub.java HelloClient.java a jeho spuštění java HelloClient X36DSV - Distribuované systémy a výpočty (5 v1.2) 21

JMS Java Messaging Service Předávání zpráv - vyšší pružnost - vyšší složitost - podpora Java, J2EE servers Mechanismy - asynchronní point-to-point - synchronní point-to-point - Publish / Subscribe X36DSV - Distribuované systémy a výpočty (5 v1.2) 22

JMS architektura X36DSV - Distribuované systémy a výpočty (5 v1.2) 23

JMS point-to-point komunikace X36DSV - Distribuované systémy a výpočty (5 v1.2) 24

JMS publish/subscribe komunikace X36DSV - Distribuované systémy a výpočty (5 v1.2) 25

JMS Java Messaging Service API X36DSV - Distribuované systémy a výpočty (5 v1.2) 26

JMS point-to-point sender import javax.jms.*; import javax.naming.*; public class SimpleQueueSender { public static void main(string[] args) { String queuename = null; Context jndicontext = null; QueueConnectionFactory queueconnectionfactory = null; QueueConnection queueconnection = null; QueueSession queuesession = null; Queue queue = null; QueueSender queuesender = null; TextMessage message = null; final int NUM_MSGS; X36DSV - Distribuované systémy a výpočty (5 v1.2) 27

JMS point-to-point sender if ( (args.length < 1) (args.length > 2) ) { System.out.println("Usage: java SimpleQueueSender " + "<queue-name> [<number-of-messages>]"); System.exit(1); queuename = new String(args[0]); System.out.println("Queue name is " + queuename); if (args.length == 2){ NUM_MSGS = (new Integer(args[1])).intValue(); else { NUM_MSGS = 1; X36DSV - Distribuované systémy a výpočty (5 v1.2) 28

JMS point-to-point sender /* Create a JNDI API InitialContext object if none exists yet. */ try { jndicontext = new InitialContext(); catch (NamingException e) { System.out.println("Could not create JNDI API " + "context: " + e.tostring()); System.exit(1); /* Look up connection factory and queue. */ try { queueconnectionfactory = (QueueConnectionFactory) jndicontext.lookup("queueconnectionfactory"); queue = (Queue) jndicontext.lookup(queuename); catch (NamingException e) { System.out.println("JNDI API lookup failed: " + e.tostring()); System.exit(1); X36DSV - Distribuované systémy a výpočty (5 v1.2) 29

JMS point-to-point sender try { queueconnection = queueconnectionfactory.createqueueconnection(); queuesession = queueconnection.createqueuesession(false, Session.AUTO_ACKNOWLEDGE); queuesender = queuesession.createsender(queue); message = queuesession.createtextmessage(); for (int i = 0; i < NUM_MSGS; i++) { message.settext("this is message " + (i + 1)); System.out.println("Sending message: " + message.gettext()); queuesender.send(message); X36DSV - Distribuované systémy a výpočty (5 v1.2) 30

JMS point-to-point sender /* Send a non-text control message indicating end */ queuesender.send(queuesession.createmessage()); catch (JMSException e) { System.out.println("Exception occurred: " + e.tostring()); finally { if (queueconnection!= null) { try { queueconnection.close(); catch (JMSException e) { X36DSV - Distribuované systémy a výpočty (5 v1.2) 31

JMS point-to-point receiver import javax.jms.*; import javax.naming.*; public class SimpleQueueReceiver { public static void main(string[] args) { String queuename = null; Context jndicontext = null; QueueConnectionFactory queueconnectionfactory = null; QueueConnection queueconnection = null; QueueSession queuesession = null; Queue queue = null; QueueReceiver queuereceiver = null; TextMessage message = null; X36DSV - Distribuované systémy a výpočty (5 v1.2) 32

JMS point-to-point receiver if (args.length!= 1) { System.out.println("Usage: java " + "SimpleQueueReceiver <queue-name>"); System.exit(1); queuename = new String(args[0]); System.out.println("Queue name is " + queuename); X36DSV - Distribuované systémy a výpočty (5 v1.2) 33

JMS point-to-point receiver /* Create a JNDI API InitialContext object if none exists. */ try { jndicontext = new InitialContext(); catch (NamingException e) { System.out.println("Could not create JNDI API " + "context: " + e.tostring()); System.exit(1); /* Look up connection factory and queue. */ try { queueconnectionfactory = (QueueConnectionFactory) jndicontext.lookup("queueconnectionfactory"); queue = (Queue) jndicontext.lookup(queuename); catch (NamingException e) { System.out.println("JNDI API lookup failed: " + e.tostring()); System.exit(1); X36DSV - Distribuované systémy a výpočty (5 v1.2) 34

JMS point-to-point receiver try { queueconnection = queueconnectionfactory.createqueueconnection(); queuesession = queueconnection.createqueuesession(false, Session.AUTO_ACKNOWLEDGE); queuereceiver = queuesession.createreceiver(queue); queueconnection.start(); while (true) { Message m = queuereceiver.receive(1); if (m!= null) { if (m instanceof TextMessage) { message = (TextMessage) m; System.out.println("Reading message: " + message.gettext()); else { break; X36DSV - Distribuované systémy a výpočty (5 v1.2) 35

JMS point-to-point receiver catch (JMSException e) { System.out.println("Exception occurred: " + e.tostring()); finally { if (queueconnection!= null) { try { queueconnection.close(); catch (JMSException e) { X36DSV - Distribuované systémy a výpočty (5 v1.2) 36