ZAWWW-2st1.2-l04.tresc-1.0

From Studia Informatyczne

Spis treści

Zaawansowane aplikacje internetowe

EJB 1

Rozróżniamy dwa rodzaje beanów sesyjnych:

  • Stateless
  • Statefull

Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów.

Poszczególne ćwiczenia prezentują sposób przygotowania środowiska, generowania i uruchamiania prostego beana oraz przykładowej aplikacji potrafiącej uruchamiać takiego beana.

Prezentowane ćwiczenia zostały wykonane w środowisku Oracle JDeveloper 10.1.3.0.4 (do pobrania ze strony: http://www.oracle.com/ ).

Ćwiczenie 1

W tym ćwiczeniu zostanie przygotowane środowisko pozwalające na wykonanie ćwiczeń – w repozytorium programu JDeveloper zostanie stworzona odpowiednia aplikacja i projekt.

  • Po uruchomieniu programu Oracle JDeveloper należy utworzyć nową aplikację. W tym celu należy wybrać opcję: File -> New
  • W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od poniższego):


  • Następny ekran pozwala na ustawienie właściwości tworzonej aplikacji. Należy wprowadzić: nazwę aplikacji, nazwę katalogu, w którym znajdą się jaj pliki, prefiks dla pakietów tworzonych w ramach tej aplikacji i wybrać aplikację bez wzorca

Image:ZAWWW-2st1_2-l04_tresc-1_0_02.png

  • Kolejnym krokiem jest stworzenie projektu w ramach aplikacji – należy wprowadzić nazwę projektu: stateless

Image:ZAWWW-2st1_2-l04_tresc-1_0_03.png

Ćwiczenie 2

Ćwiczenie będzie polegało na wygenerowaniu szkieletu beana sesyjnego typu stateless i analizie jego kodu.

W tym celu należy:

  • W widocznym nawigatorze aplikacji należy zaznaczyć utworzony w poprzednim ćwiczeniu projekt

Image:ZAWWW-2st1_2-l04_tresc-1_0_04.png


  • Następnie należy wybrać opcję: File -> New, lub z menu kontekstowego wybrać opcje New
  • W wyświetlonym oknie należy wybrać chęć utworzenia beana' (sesyjnego)


  • W wyświetlonym kreatorze ustawić odpowiednie parametry (wersja specifikacji: EJB 3.0)

Image:ZAWWW-2st1_2-l04_tresc-1_0_06.png

  • Należy określić nazwę i typ dla tworzonego beana

Image:ZAWWW-2st1_2-l04_tresc-1_0_07.png


  • Następnie należy określić nazwę klasy beana

Image:ZAWWW-2st1_2-l04_tresc-1_0_08.png

  • W ostatnim kroku należy określić typy i nazwy implementowanych interfejsów (dla potrzeb tego ćwiczenia interfejs zdalny jest zbędny, ale można go wyspecyfikować)

Image:ZAWWW-2st1_2-l04_tresc-1_0_09.png

  • Należy przeanalizować wygenerowany kod i zwróć uwagę na wykorzystane adnotacje
  • W oknie struktury (View -> Structure) należy zdefiniować odpowiednią zmienną:

Integer counter;

  • A następnie zdefiniować dwie metody o następującej specyfikacji:

public String getHello() – zwraca tekst: 
  "Hello from Stateless Java Bean "
public Integer getCounter() – zwraca wartość: counter++

Image:ZAWWW-2st1_2-l04_tresc-1_0_10.png

package stateless;

import javax.ejb.Stateless;

@Stateless(name="StatelessEJB")
public class StatelessEJBBean implements StatelessEJB, StatelessEJBLocal {

    Integer counter = 0;

    public StatelessEJBBean() {
    }

    public String getHello() {
        return "Hello from Stateless Java Bean";
    }

    public Integer getCounter() {
        return counter ++;
    }
}


  • Po wykonaniu poprzednich czynności należy uruchomić utworzonego beana wewnątrz wbudowanego serwera aplikacji (OC4J) – opcja: Run

Image:ZAWWW-2st1_2-l04_tresc-1_0_11.png

  • Oraz przeanalizować wyświetlane komunikaty
  • Następnie należy stworzyć przykładową aplikację korzystającą z metod udostępnianych przez beana

Image:ZAWWW-2st1_2-l04_tresc-1_0_12.png

  • Analiza wygenerowanego kod powinna pomóc zrozumieć sposób wykorzystywania komponentów EJB przez aplikacje (w tym wypadku została wygenerowana aplikacja konsolowa, ale sposób dostępu i wywoływania metod beana jest identyczny zarówno w aplikacjach typu serwlet, czy też beany wywołujące się na wzajem). Należy wskazać w wygenerowanym kodzie fragmenty odpowiedzialne za utworzenie instancji beana, oraz wywołania jego metod.
  • W przykładowej aplikacji należy kilkukrotnie powtórzyć linię kodu odpowiedzialną za wywołanie metody zwracającej stan licznika.

System.out.println( statelessEJB.getCounter(  ) );

  • Następnie należy uruchomić przykładową aplikację i przeanalizować jej wyniki.
  • Na koniec należy uruchomić kilka procesów przykładowej aplikacji, aby w ten sposób zasymulować zachowanie beana w środowisku rzeczywistego serwera aplikacji, gdzie bardzo często wielu użytkowników równocześnie korzysta z tych samych komponentów.

Ćwiczenie 3

W tym ćwiczeniu należy utworzyć beana sesyjnego typu stateful, zaimplementować w nim funkcjonalność identyczną, jak w bezstanowym beanie z poprzedniego ćwiczenia, wygenerować przykładową aplikację i porównać wyniki jej działania z wynikami aplikacji z poprzedniego ćwiczenia.

  • Pracę należy rozpocząć od utworzenia nowego projektu w ramach tworzonej w tym ćwiczeniu aplikacji. Projektowi należy nadać nazwę stateful

Image:ZAWWW-2st1_2-l04_tresc-1_0_13.png


  • W ramach projektu należy utworzyć beana sesyjnego typu stanowego

Image:ZAWWW-2st1_2-l04_tresc-1_0_14.png

  • Dalej wykonywać dokładnie te same kroki, co w poprzednim ćwiczeniu.
  • Po kilkukrotnym uruchomieniu przykładowej aplikacji należy porównać jej wyniki z wynikami zwracanymi przez aplikacje z poprzedniego ćwiczenia
  • Należy też zasymulować równoległą pracę kilku użytkowników przykładowej aplikacji.