{#przemyslaw.kudlacik}

pkudlacik at gmail dot com, przemyslaw dot kudlacik at us dot edu dot pl

Projekty EJB

Wprowadzenie

Projekty, które można znaleźć na tej stronie prezentują ziarna encyjne (Entity), stanowiące model danych w mechaniźmie mapowania obiektowo-relacyjnego (ORM oparty na bibliotece hibernate). Ponadto, pokazują warstwę dostępu do danych opartą na ziarnach bezstanowych (Statless), gdzie zaimplementowano proste metody pozwalające na utrwalanie obiektów (tworzenie, edycję) oraz wykonywanie zapytań pobierających obiekty i ich kolekcje (listy) z bazy.

W celach prezentacji użycia warstwy danych wykonano proste aplikacje konsolowe, które pokazują możliwości zdalnego wywołania metod ziaren bezstanowych przez dowolnego klienta (aplikacja webowa znajdująca się na tym samym serwerze wykorzystuje ziarna bezstanowe w znacznie prostszy sposób: poprzez mechanizm wstrzykiwania zależności - dependency injection. Patrz projekt 6 aplikacji webowych).

Przygotowanie bazy i źródła danych

Projekty mogą korzystać z dowolnych źródeł danych zdefiniowanych w ramach serwera, jednak aby zaprezentować inne możliwości serwera JBoss zostanie użyty wbudowany w JBoss EAP serwer bazy danych H2 (jest on całkowicie zaimplementowany w j. Java). Baza ta domyślnie jest bazą pamięciową (utrzymuje strukturę w pamięci operacyjnej), co pozwala uzyskać bardzo dużą szybkość działania (taka baza jest już skonfigurowana i dostępna poprzez żródło danych ExampleDS wdrożone domyślnie na serwerze - nazwa JNDI: java:jboss/datasources/ExampleDS).
Tego typu bazy niestety nie można "podglądać" w narzędziu konsoli, dlatego najłatwiej utworzyć nową bazę odpowiednio skonfigurowaną. Do tego celu wystarczy utworzyć nowe źródło danych, a sam silnik H2, standardowo skonfigurowany, utworzy taką bazę przy pierwszym odwołaniu.
Domyślnie w JBoss silnik H2 nie zezwala na połączenia zdalne, jednak można taki tryb umożliwić poprzez odpowiednią konfigurację.

Do stworzenia źródła przydadzą się następujące dane (nazwy dopasowane do tych użytych w plikach konfiguracyjnych projektów):

  1. nazwa źródła: h2testDS
  2. nazwa JNDI: java:/ejbcourse/h2testDS
  3. sterownik: H2
  4. ciąg połączenia: jdbc:h2:~/ejbcourse
  5. user: sa
  6. pass:

Konsola SQL do bezpośredniego wykonywania zapytań na bazie

Do "podglądania" bazy H2 można użyć narzędzia www (aplikacji dostarczanej przez H2). Jest ona dostępna w pakiecie ::projekty przykładowe dla JBoss EAP 6.4.0 GA, pod nazwą "H2 console" (wystarczy wdrożyć na serwer plik h2console.war, co pozwoli uruchomić ją pod nazwą "http://<lokalizacja i port serwera>/h2console" na serwerze www).

Po wdrożeniu aplikacji konsoli można łączyć się bezpośrednio z dowolną nową lub istniejącą bazą. Dla celów przykładu jak powyżej:

  1. rodzaj bazy: Generic H2 (Embedded)
  2. ciąg połączenia: jdbc:h2:~/ejbcourse
  3. user: sa
  4. pass:

Projekty

Przykładowe projekty są "połączone w pary", tworząc aplikacje dwuwarstwowe (moduł EJB na serwerze + kliencka aplikacja konsolowa, łącząca się z serwerem i wykorzystująca ziarna bezstanowe zdalnie). Dlatego do pełni szczęścia należy odpowiednio przygotować połączenie od strony klienta oraz serwera.

Konfiguracja serwera JBoss

Aby umożliwić klientom (metodom main aplikacji konsolowych) na łączenie się z serwerem JBoss i korzystanie z ziaren należy utworzyć użytkownika i hasło. Dokonuje się tego za pomocą skryptu add-user.bat (.sh), który był również wykorzystywany w celu dodania użytkownika administracyjnego serwera (administratora logującego się np. w konsoli www).
Przed dodaniem użytkownika, tylko w celach rozwijania i testowania aplikacji !!!, warto wyłączyć ostre wymagania haseł (w pliku add-user.properties zmienić parametr password.restriction z REJECT na RELAX).

Dla aplikacji przykładowych:

  1. nazwa użytkownika: ejbuser
  2. hasło: ejbuserpass

Konfiguracja aplikacji klienckich

Każda aplikacja kliencka chcąca połączyć się z serwerem JBoss wymaga dołączenia do projektu bibliotek umieszczonych w archiwum (<ścieżka do JBoss>/bin/client/jboss-client.jar). Znajdują się w niej odpowiednie klasy pozwalające na utworzenie obiektów realizujących połaczenie.
Przy pracy z ORM aplikacja klienta w najnowszych wersjach JBoss'a potrzebuje dodatkowo (odziwo!) podstawowych pakietów biblioteki hibernate
(<ścieżka do JBoss>/modules/system/layers/base/org/hibernate/main/hibernate-core-*.jar)

Klienci w celu połączenia z serwerem JBoss i użycia ziaren muszą zostać odpowiednio skonfigurowani. Konfigurację należy przekazać albo bezpośrednio w kodzie aplikacji przed ustanowieniem połączenia, lub użyć do tych celów odpowiednich plików konfiguracyjnych jboss-ejb-client.properties oraz jndi.properties.

Domyślna konfiguracja (w dwóch wspomnianych wersjach) jest zaimplementowana w testowych aplikacjach klienta.

::przykładowe projekty EJB w zip