Message-Driven Bean

Post on 10-Jan-2016

41 views 0 download

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

Message-Driven Message-Driven BeanBean

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

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).

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.

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

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

Schemat umieszczenia Schemat umieszczenia MDBMDB

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.

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

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.

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

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ść