Java wybrane technologie



Podobne dokumenty
Java Enterprise Edition

Rola EJB na platformie Java EE. Enterprise JavaBeans (EJB)

Komponenty sterowane komunikatami

Wprowadzenie do Enterprise JavaBeans 2.0

Transakcje w systemach Java Enterprise Korzystanie z systemów kolejkowania w serwerach aplikacji

Enterprise Java Beans Narzędzia i Aplikacje Java EE

Java wybrane technologie

Platforma J2EE i EJB. Oprogramowanie systemów równoległych i rozproszonych Wykład 9. Rola EJB na platformie J2EE. Dr inż. Tomasz Olas olas@icis.pcz.

Message Oriented Middleware

Message Oriented Middleware

Enterprise JavaBeans

Enterprise JavaBean 3.0

Enterprise JavaBeans (EJB)

WYDZIAŁ ELEKTRONIKI INFORMATYKI I TELEKOMUNIKACJI

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Aplikacja wielow tkowa prosty komunikator

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

Usługa TimerService

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHICZNA 1

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Kolejkowanie wiadomości Standard MQ (JMS)

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Podstawowe informacje o technologii Java EE 7

Wywoływanie metod zdalnych

Język JAVA podstawy. wykład 1, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Zaawansowane Aplikacje Internetowe

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Integracja systemów, integracja procesów

Microsoft Management Console

EJB 3.0 (Enterprise JavaBeans 3.0)

API transakcyjne BitMarket.pl

JAVA I BAZY DANYCH. MATERIAŁY:

Wywoływanie metod zdalnych

Stanowe komponenty sesyjne

Piotr Matkowski Wprowadzenie do J2EE 20 kwietnia "Unfortunately, no one can be...told what the J2EE is. You have to see it for yourself.

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Podejście obiektowe do budowy systemów rozproszonych

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

1 Wprowadzenie do J2EE

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

KARTA INFORMACYJNA USŁUGI PRZYZNANIE DODATKU AKTYWIZACYJNEGO

14.Rozwiązywanie zadań tekstowych wykorzystujących równania i nierówności kwadratowe.

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Programowanie komponentowe 5

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Podejście obiektowe do budowy systemów rozproszonych

SOAP. Autor: Piotr Sobczak

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Kompozycja i dziedziczenie klas

WSNHiD, Programowanie 2, Lab. 3. Trwałość danych

Organizacja produkcji

Zagadnienia Programowania Obiektowego. Usługi sieciowe w Javie EE 5

Dostęp do baz danych w aplikacjach Java EE

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Ułatwienie w rozliczaniu podatku VAT w imporcie towarów. Ministerstwo Finansów 22 październik 2013 r.

Microsoft Windows GDI

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Aplikacja wielowątkowa prosty komunikator

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

Przygotowały: Magdalena Golińska Ewa Karaś

Projektowanie bazy danych

EJB 2.x oraz zmiany w standardzie dla EJB 3.0. Michał Stanek

Instrukcja Obsługi STRONA PODMIOTOWA BIP

Stan prac w zakresie wdrożenia systemów operacyjnych: NCTS2, AIS/INTRASTAT, AES, AIS/ICS i AIS/IMPORT. Departament Ceł, Ministerstwo Finansów

Ogólna charakterystyka kontraktów terminowych

System nagłośnieniowy i dźwiękowy system ostrzegawczy Bosch Praesideo

Podatek przemysłowy (lokalny podatek od działalności usługowowytwórczej) :02:07

Podstawowe informacje o technologii Java EE 6

Inżynieria Programowania - Projektowanie architektoniczne. Plan wykładu. Motto. Wstęp. Notatki. Notatki. Notatki. Notatki.

public interface TravelAgent { public void makereservation(int cruiseid, int cabinid, int customerid, double price); }

zgubił całą naszą korespondencję Można by tak wymieniać bez bezpieczeństwa, gdyby była wykonana dnia poprzedniego rozwiązałaby niejeden problem.

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Bezpieczny wypoczynek w świetle Ustawy o usługach turystycznych. Katarzyna Hetman, Wielkopolska Izba Turystyczna

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Stanowisko Rzecznika Finansowego i Prezesa Urzędu Ochrony Konkurencji i Konsumentów w sprawie interpretacji art. 49 ustawy o kredycie konsumenckim

Centrum Informatyki "ZETO" S.A. w Białymstoku. Instrukcja użytkownika dla urzędników nadających uprawnienia i ograniczenia podmiotom w ST CEIDG

Niniejszy dokument obejmuje: 1. Szablon Umowy zintegrowanej o rachunek ilokata, 2. Szablon Umowy zintegrowanej o rachunek ilokata oraz o rachunek

Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Działania Ziemia Bielska

REGULAMIN SKLEPU INTERNETOWEGO 1 POSTANOWIENIA OGÓLNE

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Warszawa, r.

KOMISJA NADZORU FINANSOWEGO

Java wybrane technologie

Wykorzystywanie parsera DOM w programach Java i PL/SQL

DZIENNICZEK STAŻU. Nazwisko i imię ucznia... Klasa :... Specjalizacja... Rok szkolny... adres... nr telefonu.., .. Miejsce odbywania praktyki..

W pierwszej kolejności zaszczepione powinny być osoby powyżej 65 roku życia zameldowane na terenie Miasta Turku przewlekle chore.

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Transkrypt:

Java wybrane technologie spotkanie nr 9 Java Message Service i Message-Driven Beans

Alternatywa dla RMI-IIOP asynchroniczność (asynchrony) brak blokowania daje się fire-and-forget rozprężenie (decoupling) klienci nie muszą znać serwera niezawodność (reliability) serwer nie musi cały czas działać guaranteed message delivery certified message delivery store and forward trwali/nietrwali konsumenci (durable) wielu odbiorców i nadawców 2

Message oriented middleware (MOM) Przykładowe MOM: Niektóre funkcje Tibco Rendezvous, IBM Web-Sphere MQ, BEA Tuxedo/Q, Sun Java System Messaging Server, Microsoft MSMQ, Sonic Software SonicMQ i gwarantowanie dostarczenia wiadomości odporność na błędy równoważenie obciążenia wykrywanie nieaktywnych odbiorców SOAP po JMS FioranoMQ 3

Java Message Service (JMS) podobny pomysł do JDBC i JNDI API do wysyłania i odbierania komunikatów Service Provider Interface (SPI) 4

Style komunikacji Publish/Subscribe jak radio/telewizja Point-to-Point producenci/konsumenci Request-Reply asynchroniczne wywoływanie procedur rzadziej spotykane implementowane przy pomocy poprzednich 5

JMS bez kontenera 6

Przykład import javax.jms.*; import javax.naming.initialcontext; public class Producent { public static void main(string[] args) throws Exception { InitialContext ctx = new InitialContext(...); TopicConnectionFactory factory = (TopicConnectionFactory) ctx.lookup("jms/mojafabrykat"); TopicConnection connection = factory.createtopicconnection(); TopicSession session = connection.createtopicsession(false,session.auto_acknowledge); Topic topic = (Topic)ctx.lookup("jms/mojT"); TopicPublisher publisher = session.createpublisher(topic); TextMessage msg = session.createtextmessage(); msg.settext("to jest komunikat."); publisher.send(msg); } } publisher.close(); 7

Rodzaje interfejsów ConnectionFactory Session QueueConnectionFactory QueueSession TopicConnectionFactory TopicSession Connection MessageProducer QueueConnection QueueSender TopicConnection TopicPublisher Destination MessageConsumer Queue Topic QueueReceiver, QueueBrowser TopicSubscriber 8

Rodzaje wiadomości BytesMessage ObjectMessage TextMessage StreamMessage MapMessage Wiadomości mogą mieć nagłówki. 9

Message-Driven Beans 10

MDB Niedostępny dla klientów Zazwyczaj implementuje javax.jms.messagelistener i odbiera wiadomości JMS dostaje wszystkie wiadomości (chyba, że używamy selectora) trzeba się nagimnastykować żeby odpowiedzieć wyjątki zgłaszane podczas przetwarzania wiadomości nie dotrą do klienta nie ma stanu kontener odpowiada za równoległe przetwarzanie (nie można nic zakładać o kolejności obsługi wiadomości) Od EJB 2.1 konektory Java EE Connector Architecture mogą stanowić źródło komunikatów 11

Alternatywy Własne obiekty odpalają Session Beany Nie trzeba pisać kodu, który zarejestruje nasz obiekt jako konsumenta. Nie trzeba pisać wielowątkowej aplikacji. Nie trzeba się martwić startowaniem konsumentów. Możemy korzystać z usług kontenera. Session Bean jako konsument Bean jest jednowątkowy i jeżeli obsługuje właśnie żądanie, nie będzie mógł obsłużyć wiadomości. Co jak nie ma beanów w chwili nadejścia wiadomości? 12

Wymagania Wymagania bezargumentowy konstruktor dla JMS: javax.jms.messagelistener a ma metodę onmessage(message m) 13

Przykład @MessageDriven(activationConfig = { @ActivationConfigProperty ( ropertyname = "destinationtype", propertyvalue = "javax.jms.topic") } ) public class MyFirstMDB implements MessageListener { public MyFirstMDB() { System.out.println("MyFirstMDB()"); } public void onmessage(message msg) { if (msg instanceof TextMessage) { TextMessage tm = (TextMessage) msg; try { String text = tm.gettext(); System.out.println("Odebrany komunikat : " + text); } catch (JMSException e) { e.printstacktrace(); } } } } @PreDestroy public void remove() { System.out.println("MyFirstMDB.remove()"); } 14

Deskryptor <?xml version="1.0" encoding="utf-8"?> <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" version="3.0" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"> <enterprise-beans> <message-driven> <ejb-name>logbeandd</ejb-name> <ejb-class>examples.messaging.dd.logbean</ejb-class> <messaging-type>javax.jms.messagelistener</messaging-type> <transaction-type>bean</transaction-type> <message-destination-type>javax.jms.topic</message-destination-type> <activation-config> <activation-config-property> <activation-config-property-name>destinationtype</...> <activation-config-property-value>javax.jms.topic</...> </activation-config-property> </activation-config> </message-driven> </enterprise-beans> </ejb-jar> Mapowanie na konkretny temat/kolejkę wskazujemy w deskryptorze kontenera 15

Opcjonalne podelementy @MessageDriven oraz <message-driven> @ActivationConfigProperty( propertyname = "destinationtype", propertyvalue = "javax.jms.topic" ) <activation-config-property> <activation-config-property-name> destinationtype </activation-config-property-name> <activation-config-property-value> javax.jms.topic </activation-config-property-value> </activation-config-property> @ActivationConfigProperty( propertyname="messageselector", propertyvalue="jmstype = 'ala' AND ma = 'kota'" ) m.setstringproperty("ma","kota") składnia wzorowana na SQL <activation-config-property> <activation-config-property-name> messageselector </activation-config-property-name> <activation-config-property-value> JMSType='ala' AND ma='kota' </activation-config-property-value> </activation-config-property> @ActivationConfigProperty( propertyname="subscriptiondurability ", propertyvalue="nondurable" ) o tranzakcjach jeszcze będzie <activation-config-property> <activation-config-property-name> subscriptiondurability </activation-config-property-name> <activation-config-property-value> NonDurable </activation-config-property-value> </activation-config-property> 16

Zagadnienia zaawansowane Transakcje konsument i producent nie należą do tej samej transakcji (wiadomość pojawia się dopiero po zacommitowaniu) Bezpieczeństwo nie ma standardowego sposobu przekazywania security identity Równoważenie obciążenia pośrednik i model pull to kontener jest odbiorcą wiadomości, a nie poszczególne egzemplarze wszystkie kontenery w klastrze będą odbiorcami Metody @PreDestroy są wywoływana rzadko sprzątamy zanim zgłosimy wyjątek 17

Odpowiadanie Kolejka do odpowiedzi Kolejka tymczasowa (związana z obiektem Connection) JMSReplyTo JMSCorrelationID tymczasowa kolejka stworzona przez bean może przepaść! 18

Kiedy stosować/nie stosować komunikatów Stosować kosztowne czynności, których efekty nie muszą być natychmiastowe nie trzeba się blokować jeżeli nie oczekujemy odpowiedzi (wartość zwrotna void) równoważenie obciążenia na zasadzie pull, a nie push łatwo wykryć kiedy jest za mało konsumentów łatwa priorytyzacja łatwa integracja z systemami zastanymi luźne sprzężenie większa niezawodność przy słabym łączu sieciowym komunikacja wiele do wiele Nie stosować jak oczekujemy wyniku jeżeli nie ma pewności, że operacja się powiedzie kiedy operacja ma być częścią większej transakcji kiedy nie ufamy klientom (można samemu udoskonalić) w małych aplikacjach, gdzie pośrednik może być zbyt zasobożerny jak potrzeba obiektowości i silnych typów system ma być prosty i łatwy w testowaniu i debugowaniu 19