Message-Driven Bean

12
Message-Driven Message-Driven Bean Bean

description

Message-Driven Bean. MDB przypominają bezstanowe session bean-y:. obiekty MDB nie przechowują danych albo stanu komunikacji z klientem wszystkie obiekty MDB są podobne , pozwala to kontenerowi EJB na przypisywanie wiadomości (komunikatu) do dowolnego obiektu MDB - PowerPoint PPT Presentation

Transcript of Message-Driven Bean

Page 1: Message-Driven Bean

Message-Driven Message-Driven BeanBean

Page 2: Message-Driven Bean

MDB MDB przypominająprzypominają

bezstanowe bezstanowe session bean-y:session bean-y:

obiekty MDB nie przechowują danych obiekty MDB nie przechowują danych albo stanu komunikacji z klientemalbo stanu komunikacji z klientem

wszystkie obiekty MDB są wszystkie obiekty MDB są podobnepodobne, , pozwala to kontenerowi EJB na pozwala to kontenerowi EJB na przypisywanie wiadomości przypisywanie wiadomości (komunikatu) do dowolnego obiektu (komunikatu) do dowolnego obiektu MDBMDB

pojedynczy obiekt MDB może pojedynczy obiekt MDB może przetwarzać komunikaty od wielu przetwarzać komunikaty od wielu klientówklientów

Page 3: Message-Driven Bean

Klient nie lokalizuje samodzielnie Klient nie lokalizuje samodzielnie obiektów i wywołuje ich metody obiektów i wywołuje ich metody

zamiast tego wysyła komunikat do zamiast tego wysyła komunikat do określonego celu, którego to MDB określonego celu, którego to MDB

jest słuchaczem (jest słuchaczem (MessageListener).MessageListener).

Page 4: Message-Driven Bean

MDB charakteryzują się :MDB charakteryzują się :

przyczyna ich działania jest przyczyna ich działania jest otrzymanie komunikatu od klientaotrzymanie komunikatu od klienta

są wywoływane asynchroniczniesą wywoływane asynchronicznie nie reprezentują bezpośrednio danych nie reprezentują bezpośrednio danych

przechowywanych w bazie ale mogą przechowywanych w bazie ale mogą mieć do nich dostęp i je modyfikowaćmieć do nich dostęp i je modyfikować

mogą być wykorzystywać transakcje mogą być wykorzystywać transakcje są bezstanowe.są bezstanowe.

Page 5: Message-Driven Bean

Nadawcy komunikatówNadawcy komunikatów

o J2EE komponentyJ2EE komponentyo klient aplikacjiklient aplikacjio inny EJB inny EJB o komponent sieciowy.komponent sieciowy.

o aplikacja lub system, które nie aplikacja lub system, które nie korzystają z technologii J2EEkorzystają z technologii J2EE

Page 6: Message-Driven Bean

Zadania przygotowawcze Zadania przygotowawcze wykonywane przez kontener wykonywane przez kontener

EJB :EJB : tworzy konsumenta komunikatów, tworzy konsumenta komunikatów,

związuje MDB z miejscem związuje MDB z miejscem docelowym i fabryką połączeń w docelowym i fabryką połączeń w czasie instalacjiczasie instalacji

rejestracja message Listenera rejestracja message Listenera poprzez metodę poprzez metodę setMessageListenersetMessageListener

określa sposób powiadamiania o określa sposób powiadamiania o komunikatachkomunikatach

Page 7: Message-Driven Bean

Schemat umieszczenia Schemat umieszczenia MDBMDB

Page 8: Message-Driven Bean

Kiedy komunikat znajdzie się w Kiedy komunikat znajdzie się w kolejce, kontener EJB wywołuje kolejce, kontener EJB wywołuje

metodę metodę onMessage, onMessage, która ma się która ma się zatroszczyć o sprawdzenie zatroszczyć o sprawdzenie

poprawności komunikatu i wykonać poprawności komunikatu i wykonać odpowiednie działania.odpowiednie działania.

Page 9: Message-Driven Bean

Oprócz metody Oprócz metody onMessageonMessage MDB powinien MDB powinien

implementować:implementować: interfejsyinterfejsy javax.ejb.MessageDrivenBeanjavax.ejb.MessageDrivenBean i i javax.jms.MessageListenerjavax.jms.MessageListener

publicpublic void ejbCreate() {}void ejbCreate() {} do do nawiązywania innych synchronicznych połączeń z nawiązywania innych synchronicznych połączeń z innymi EJB innymi EJB

public void ejbRemove() {}public void ejbRemove() {} do zamykania do zamykania połączeń nawiązywanych przez ejbCreate()połączeń nawiązywanych przez ejbCreate()

public void public void setMessageDrivenContext(MessageDrivesetMessageDrivenContext(MessageDrivenContext nContext   mdc) {}  mdc) {} do zarządzania transakcjamido zarządzania transakcjami

Page 10: Message-Driven Bean

MetodaMetoda onMessageonMessage powinna:powinna:

być zadeklarowana jako być zadeklarowana jako publicpublic typ zwracany  typ zwracany  void void musi mieć jeden argument typu musi mieć jeden argument typu javax.jms.Messagejavax.jms.Message

klauzula klauzula throws throws nie może zawierać nie może zawierać wyjątków aplikacji wyjątków aplikacji

The The onMessageonMessage method must be invoked method must be invoked in the scope of a transaction that is in the scope of a transaction that is determined by the transaction attribute determined by the transaction attribute specified in the deployment descriptor.specified in the deployment descriptor.

Page 11: Message-Driven Bean

Metody Metody ejbCreateejbCreate i i ejbRemoveejbRemove

zadeklarowane jako zadeklarowane jako publicpublic typ zwracany typ zwracany void void nie może być nie może być stacic stacic lub lub finalfinal nie mogą wyrzucać wyjątków nie mogą wyrzucać wyjątków

aplikacjiaplikacji nie mogą mieć żadnych argumentównie mogą mieć żadnych argumentów

Page 12: Message-Driven Bean

Możliwe sposoby Możliwe sposoby zachowania synchronizacji zachowania synchronizacji

numerowanienumerowanie komunikatów na komunikatów na poziomie aplikacji, późniejsze poziomie aplikacji, późniejsze komunikaty są przetrzymywane komunikaty są przetrzymywane dopóki wcześniejsze nie zostaną dopóki wcześniejsze nie zostaną przetworzone.przetworzone.

każdy komunikat lub grupa każdy komunikat lub grupa komunikatów wymagają wiadomości komunikatów wymagają wiadomości potwierdzającejpotwierdzającej, nadawca blokuje , nadawca blokuje się oczekując na taką wiadomośćsię oczekując na taką wiadomość