Komponent bezstanowy

Transkrypt

Komponent bezstanowy
Wprowadzenie do technologii EJB
niezbędnej w realizacji logiki systemu.
Plan wykładu
●
●
●
●
Czym jest EJB ?
Jaka role odgrywa EJB w realizacji logiki?
EJB 3.0 vs EJB 2.1
Komponenty EJB 3.0
●
●
Komponent stanowy
Komponent bezstanowy
●
●
●
Komponent sterowany komunikatami
●
●
●
●
●
●
Struktura kodu komponentu sesyjnego
Klient dla komponentów
Opcje przesyłania komunikatów
Struktura kodu komponentu sterowanego komunikatami
Klient dla komponentu sterowanego komunikatami
Usługa Timera
Wstrzykiwanie zależności
Proste przykładu z udziałem serwera JBOSS 4.2.2
Czym jest EJB ?
EJB – są komponentami znajdującymi się po
stronie serwer (w kontenerze EJB), które
udostępniają pewną funkcjonalność.
Komponenty można utożsami sobie z klockami z
których będziemy budować logikę naszej aplikacji.
EJB jako komponenty serwera będą obsługiwać
klientów;lokalnych – znajdujących się w tej samej
maszynie wirtualnej lub zdalnych.
Jaka role odgrywa EJB w
realizacji logiki?
EJB 3.0 vs EJB 2.1
EJB 3.0
●
●
●
●
Łatwiejsze do
opanowania
Anotacje zamiast XML
Wstrzykiwanie
zależności
Java Persistence
EJB 2.1
●
●
●
Skomplikowane
Komponenty musiały
implementować wiele
interfejsów
Obowiązkowe
deskryptory
wdrożenia
Komponenty EJB 3.0
●
Komponenty sesyjne
–
–
–
–
●
Udostępniają metody
Obsługuje naraz jednego klienta
Jego stan nie wykracza poza sesji
Dwa typy komponentów sesyjnych: stanowy i
bezstanowy
Komponenty sterowane komunikatami
–
–
Asynchroniczna obsługa komunikatów
Wywołania nie są bezpośrednie
Komponent stanowy
Komponent stanowy przechowuje stan podczas
konwersacji z klientem w obrębie sesji. Może
prezentować interakcje z klientem.
Cykl życia komponentu stanowego
Komponent bezstanowy
Komponent bezstanowy nie przechowuje
informacji pomiędzy jego wywołaniami. Służy do
zadań bardziej ogólnych.
Cykl życia komponentu bezstanowego
Struktura kodu komponentu
sesyjnego
●
●
Interfejs komponentu oznaczony jako @Remote(dla klientów
zdalnych) lub/i @Local(dla klientów w lokalnych)
Klasa implementująca napisane wcześniej interfejsy
oznaczona @Statless(dla bezstanowego) lub @Statefull
Klient dla komponentów sesyjnych
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
prop.put(Context.PROVIDER_URL, "jnp://localhost:1099");
prop.put(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
Context context = new InitialContext(prop);
StanowyService stanowyService = (StanowyService)
context.lookup(„StanowyService/remote");
stanowyService.komunikat();
Konfiguracja dla pozyskania kontekstu JBOSS
Komponent sterowany
komunikatami
Komponenty sterowane komunikatami nie odbierają
bezpośrednio żądań klientów. Są one powiązane z kolejkami lub
tematami do których to przychodzą wiadomości od klientów.
Cykl życia komponentu sterowanego komunikatami
Tryby przesyłania komunikatów
Struktura kodu komponentu
sterowanego komunikatami
Klient dla komponentu
sterowanego komunikatami
Usługa Timera
Wstrzykiwanie zależności
Każda utworzona usługa czy komponent ma swoją nazwę w
kontekście(rejestrze) ENC(Enterprise Naming Context).
Sposoby wstrzykiwania:
@EJB private CzasoUmilacz czasoUmilacz;
@EJB public void setCzasoUmilacz(CzasoUmilacz
czasoUmilacz){
this.czasoUmilacz = czasoUmilacz;
}
@Resource(mappedName=java:/hibernate/SessionFactory")
private SessionFactory sessionFactory;
Pytania ???
Przydatne linki:
http://www.laliluna.de/ejb-3-tutorial-jboss.html
http://www.roseindia.net/javabeans/javabeans.shtml
http://javalessons.com/cgi-bin/ejb/ejb-tutorial-j2ee.cgi?j2ee=ejb&1cd=ejm&sid=ao789
http://www.theserverside.com/tt/articles/article.tss?l=Pramati-MDB