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