Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Podobne dokumenty
Enterprise JavaBeans

Komponenty sterowane komunikatami

Stanowe komponenty sesyjne

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Programowanie komponentowe

EJB 3.0 (Enterprise JavaBeans 3.0)

Usługa TimerService

1 Wprowadzenie do J2EE

Wprowadzenie do Enterprise JavaBeans 2.0

public interface TravelAgent { public void makereservation(int cruiseid, int cabinid, int customerid, double price); }

EJB 2.x oraz zmiany w standardzie dla EJB 3.0. Michał Stanek

Platforma J2EE i EJB. Oprogramowanie systemów równoległych i rozproszonych Wykład 9. Rola EJB na platformie J2EE. Dr inż. Tomasz Olas olas@icis.pcz.

1. Model ACID. 2. Deklaratywne zarządzanie transakcjami, atrybuty transakcji. 3. Propagacja transakcji. transakcje rozproszone, propagacja kontekstu

EJB 3.0 & JBoss Seam. 25 kwietnia 2007 Jacek Gerbszt 1

mgr inż. Michał Paluch

Enterprise JavaBeans (EJB)

Bezstanowe komponenty sesyjne i zdarzenia zwrotne

Programowanie komponentowe 5

Aplikacje internetowe i rozproszone - laboratorium

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Rola EJB na platformie Java EE. Enterprise JavaBeans (EJB)

Wzorce logiki dziedziny

Wybrane działy Informatyki Stosowanej

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Enterprise Java Beans wykład 7 i 8

Enterprise Java Beans Narzędzia i Aplikacje Java EE

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Spis treści. Część I Standard EJB Słowo wstępne Przedmowa Wprowadzenie Przegląd architektury...35

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Podstawowe informacje o technologii Java EE 7

Aplikacje RMI

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Enterprise JavaBeans 3.0. Wydanie V

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Java Server Faces - wprowadzenie

Zastosowanie komponentów EJB typu Session

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Enterprise JavaBeans 3.0

1. Podstawowe usługi bezpieczeństwa. 2. Użytkownicy i role. przydzielanie uprawnie ń metodom, role komponentów, korzystanie i konfiguracja

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Wybrane działy Informatyki Stosowanej

edziennik Ustaw Opis architektury

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Oracle9iAS: instalacja i konfiguracja aplikacji J2EE

Aplikacje RMI Lab4

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Zaawansowane aplikacje internetowe

Enterprise JavaBean 3.0

Tworzenie aplikacji dla Oracle Application Server 10g R3 w technologii EJB 3.0

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Enterprise JavaBeans (EJB)

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Remote Method Invocation 17 listopada 2010

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Wywoływanie metod zdalnych

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Aplikacje biznesowe Wykład dla studentów Informatyki Stosowanej

Wywoływanie metod zdalnych

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Java wybrane technologie

Nowy powiew od Słońca: EJB 3.0. Copyright Piotr Kochański & Erudis,

Zagadnienia projektowania aplikacji J2EE

Budowa komponentów Enterprise JavaBeans

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

SYSTEM MONITORINGU PARAMETRÓW WĘZŁÓW PRZECHOWYWANIA DANYCH DLA PROJEKTU KRAJOWY MAGAZYN DANYCH PODRĘCZNIK DEWELOPERA

Co nowego w Java EE?

JBoss Application Server

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Co nowego w Java EE?

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje.

Programowanie Komponentowe WebAPI

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

J2EE Project TEMATY PROJEKTÓW PRZEMYSŁAW SOŁTAN. (0.2 build )

JAX-RS czyli REST w Javie. Adam Kędziora

Relacje. 1. Modelowanie relacji. - siedem rodzajów relacji J2EE. - relacje jedno i wielokierunkowe, - relacje reprezentowane przez kolekcje.

Architektury Usług Internetowych. Laboratorium 1. Servlety

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Certyfikaty firmy Sun. Ścieżka certyfikacyjna dla Javy Egzamin SCJP

Wzorce projektowe warstwy danych

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Aplikacje internetowe - laboratorium

Programowanie obiektowe

Dostęp do komponentów EJB przez usługi Web Services

Tworzenie i wykorzystanie usług sieciowych

Transkrypt:

1 Enterprise JavaBeans 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

2 Enterprise JavaBeans Enterprise JavaBeans (EJB) to specyfikacja modelu komponentów serwerowych używanych w rozproszonych aplikacjach biznesowych. Komponenty EJB reprezentują procesy biznesowe (sprzedaż, magazynowanie, rozliczenia itp.). Aplikacja biznesowa to zbiór takich komponentów. Komponenty są udostępniane i zarządzane poprzez kontenery EJB. Komponenty działające w ramach jednej aplikacji nie muszą znajdować się na jednym serwerze (kontenerze).

Przegląd komponentów Podstawowe części, z których tworzone są aplikacje biznesowe to: utrwalanie danych - odbywa się w abstrakcyjnej warstwie ponad JDBC. Polega na odwzorowaniu obiektów na zapis w bazie danych. Utrwalanie zostało określone poprzez Java Persistence API, które definiuje odwzorowanie dla zwykłych obiektów Javy (POJO) zwanych także komponentami encyjnymi. przesyłanie komunikatów - komponenty jak również aplikacje mogą wymieniać sie wiadomościami. EJB wspiera asynchroniczną i synchroniczną wymianę komunikatów poprzez Java Message Service (JMS) oraz komponenty messagedriven beans. usługi web services usługi realizowane poprzez sieć internet za pośrednictwem Simple Object Access Protocol (SOAP) lub Web Service Description Language (WDSL) 3

4 Komponent encyjny Komponent encyjny (entity bean) to POJO, odwzorowany w relacyjnej bazie danych. Komponenty encyjne modelują elementy aplikacji biznesowych, które wyrażają się rzeczownikami. Implementacją komponentu encyjnego jest klasa oznaczona jako @javax.persistence.entity zawierająca atrybut poprzedzony adnotacją @javax.persistence.id (klucz główny)

5 Komponent encyjny import javax.persistence.*; @Entity @Table(name="CABIN") public class Cabin { private int id; private String name; private int decklevel; @Id @GeneratedValue @Column(name="CABIN_ID") public int getid( ) { return id;' public void setid(int pk) { this.id = pk;

6 Komponent encyjny @Column(name="CABIN_NAME") public String getname( ) { return name; public void setname(string str) { this.name = str; @Column(name="CABIN_DECK_LEVEL") public int getdecklevel( ) { return decklevel; public void setdecklevel(int level) { this.decklevel = level;

Komponent encyjny - deskryptor Deskryptor jest inną formą określenia odwzorowania POJO na zapis w relacyjnej bazie danych. <entity-mappings> <entity class="com.titan.domain.cabin" access="property"> <table name="cabin"/> <attributes> <id name="id"> <column name="cabin_id" nullable="false" column-definition="integer"/> </id> <basic name="name"> <column name="cabin_name" nullable="false" length="20"/> </basic>... </attributes> </entity> </entity-mappings> 7

8 Komponent korporacyjny Komponenty korporacyjne (enterprise bean) dzielą się na dwa typy: sesyjne (session bean) i sterowane komunikatami (message-driven bean). Komponenty sesyjne służą do zarządzania zadaniami realizowanymi przez aplikację, natomiast komponenty przenoszące komunikaty pozwalają koordynować zadania realizowane przez inne komponenty.

9 Komponent sesyjny Implementacja komponentu sesyjnego składa się z: zdalnego interfejsu oznaczonego @javax.ejb.remote i określającego metody dostępne dla aplikacji na zewnątrz kontenera, lokalnego interfejsu oznaczonego @javax.ejb.local i określającego metody dostępne dla komponentów działających w ramach tego samego kontenera, końcowego interfejsu oznaczonego @javax.jws.webservice i określającego metody dostępne z zewnątrz poprzez protokół SOAP, klasy implementującej komponent oznaczonej @javax.ejb.stateful albo @javax.ejb.stateless.

Komponent sesyjny import javax.ejb.remote; @Remote public interface CalculatorRemote { public int add(int x, int y); public int subtract(int x, int y); import javax.ejb.*; @Stateless public class CalculatorBean implements CalculatorRemote { public int add(int x, int y) { return x + y; public int subtract(int x, int y) { return x - y; 10

11 Komponenty stanowe i bezstanowe Komponenty sesyjne stanowe przechowują informację o stanie interakcji z klientem. Stan nie jest zapisywany w bazie danych. Jest on utrzymywany dopóki klient aktywnie korzysta z komponentu. Później jest bezpowrotnie tracony. W komponentach bezstanowych wywołania metod są niezależne. Komponenty bezstanowe charakteryzują sie większą wydajnością i efektywniejszym zarządzaniem pamięcią ponieważ jeden komponent może obsługiwać wielu klientów.

Komponenty stanowe i bezstanowe @Stateful public class TravelAgentBean implements TravelAgentRemote { // Referencja do usługi wypełniana przez kontener EJB @PersistenceContext private EntityManager entitymanager; // Referencja do komponentu wypełniana przez kontener EJB @EJB private ProcessPaymentRemote process; private Customer customer; private Cruise cruise; private Cabin cabin; public void setcustomer(customer cust) { // Nowy rekord w bazie danych entitymanager.create(cust); customer = cust; public void setcabinid(int id) { cabin = entitymanager.find(cabin.class, id); 12

public Reservation bookpassage(string card, double price) throws IncompleteConversationalState { if (customer == null cruise == null cabin == null){ throw new IncompleteConversationalState( ); try { // Nowy komponent Reservation reservation = new Reservation( customer,cruise,cabin,price,new Date( )); // zapis w bazie danych entitymanager.persist(reservation); process.bycredit(customer,card,price); // komponent zwracany klientowi jako POJO return reservation; catch(exception e){ throw new EJBException(e); 13 Komponenty stanowe i bezstanowe public void setcruiseid(int id) { cruise = entitymanager.find(cruise.class, id);

14 Komponent sterowany komunikatami Implementacja komponentu do obsługi komunikatów: interfejsu Message określającego metody za pomocą których JMS dostarcza komunikaty do komponentu klasy implementującej komponent oznaczonej @javax.ejb.messagedriven implementującej interfejs javax.jms.messagelistener.

public void onmessage(message message) { try { MapMessage reservationmsg = (MapMessage)message; // Odebranie referencji komponentu z wiadomości Customer customer = (Customer)reservationMsg.getObject("Customer"); // Odebranie innych danych int cruisepk = reservationmsg.getint("cruiseid"); int cabinpk = reservationmsg. getint("cabinid"); double price = reservationmsg.getdouble("price"); String card = reservationmsg.getstring("card"); 15 Komponent sterowany komunikatami @MessageDriven public class ReservationProcessorBean implements javax.jms.messagelistener { // Referencja do usługi wypełniana przez kontener EJB @PersistenceContext private EntityManager entitymanager; // Referencja do komponentu wypełniana przez kontener EJB @EJB private ProcessPaymentRemote process;

Komponent sterowany komunikatami // Wstawienie komponentu do bazy danych entitymanager.persist(customer); // Odnalezienie komponentów Cruise cruise = entitymanager.find(cruise.class, cruisepk); Cabin cabin = entitymanager.find(cabin.class, cruisepk); // Nowy komponent encyjny Reservation reservation = new Reservation( customer,cruise,cabin,price,new Date( )); entitymanager.create(reservation); // Wywołanie metody komponentu sesyjnego process.bycredit(customer,card,price); catch(exception e) { throw new EJBException(e); 16

17 Kontener EJB Kontener to środowisko, w ramach którego działa serwer komponentów. Kontener zarządza obiektami EJB, pomaga im tworzyć komponenty oraz udostępnia usługi związane z transakcjami, bezpieczeństwem, współbieżnością i wyszukiwaniem komponentów. Komponenty mają dostęp do kontenera poprzez interfejs javax.ejb.ejbcontext (javax.ejb.sessioncontext, javax.ejb.messagedriven-context) dzięki czemu podczas obsługi żądań klientów mogą używać przechowywanych tam informacji.

18 JBoss - Instalacja Wymagania: JDK (zalecana wersja 5.0) Instalacja: pobranie http://www.jboss.org/downloads/index rozpakowanie lub uruchomienie instalatora Uruchomienie: run.sh (run.bat) w podkatalogu bin. strona główna: http://localhost:8080/, sterowanie http://localhost:8080/jmx-console, zatrzymanie: shutdown.sh (shutdown.bat).

19 Struktura katalogów bin skrypty startowe i związane z nimi pliki. client przechowuje pliki konfiguracyjne i pliki jar, które mogą być wykorzystane przez aplikacje klienckie lub zewnętrzne kontenery. lib wewnętrzne biblioteki serwera JBoss. server każdy z podkatalogów umieszczonych tutaj określa inną konfigurację serwera. Konfiguracja może być przekazana przy uruchomieniu serwera poprzez opcje -c <nazwa konfiguracji>.

20 Konfiguracje serwera W podkatalogu server początkowo znajdują sie trzy konfiguracje: minimal niezbędne minimum do uruchomienia serwera aplikacji. Zawiera usługi logowania, JNDI oraz skaner nowych aplikacji. Nie zawiera kontenera serwletów, EJB i JMS. default domyślna konfiguracja, zawierająca usługi wchodzące w skład specyfikacji J2EE. all uruchamia wszystkie dostępne usługi. Zawiera RMI/IIOP, obsługę klastrów oraz narzędzia dla usług webowych (web-services deployer), które nie znajdują sie w konfiguracji domyślnej.

Konfiguracje serwera Pojedyncza konfiguracja serwera składa się z podkatalogów: conf zawiera plik jboss-service.xml konfigurujący podstawowe usługi serwera oraz pliki konfiguracyjne pozostałych usług. data - katalog na dane dla wbudowanej bazy Hypersonic. Używany ponadto przez JBossMQ (implementacja JMS) do przechowywania komunikatów. deploy miejsce na aplikacje użytkownika (pliki jar, war oraz ear). lib biblioteki jar używane w danej konfiguracji serwera. Można tutaj umieszczać własne pliki: np. biblioteki JDBC. log miejsce na logi serwera - tworzone są z wykorzystaniem biblioteki log4j. tmp katalog tymczasowy do przechowywania rozpakowanych aplikacji, work katalog roboczy wykorzystywany przez Tomcat'a do kompilacji plików. 21

Uruchomienie aplikacji Technologia J2EE została zaprojektowana tak, aby kod aplikacji był niezależny od serwera na którym jest ona uruchamiana. Deskryptory dla EJB oraz aplikacji (odpowiednio ejb-jar.xml i web.xml) także nie muszą być modyfikowane przy zmianie kontenera J2EE. Jednakże w celu uruchomienia aplikacji na konkretnym serwerze zwykle należy dostarczyć specyficzne deskryptory oraz skrypty sterujące pracą bazy danych. JBoss używa następujących dodatkowych plików: jboss.xml opis EJB, jboss-web.xml opis aplikacji, application-client.xml, jbosscmp-jdbc.xml. 22

23 Hello World i JBoss Źródło: http://www.centerkey.com/jboss/ 1. Piszemy stronę JSP (hi.jsp): <html> <head><title>jsp Test</title> <%! String msg = "Hello, World."; %> </head> <body> <h2><%= msg %></h2> <%= new java.util.date() %> </body> </html>

Hello World i JBoss 2. Deskryptor rozmieszczenia (WEB-INF/web.xml) <web-app> <display-name>hello World</display-name> </web-app> 3. Tworzymy plik war: jar.exe" -cvf helloworld.war *.jsp WEB-INF 4. Kopiujemy aplikacje do katalogu serwera copy helloworld.war "%JBossHome%\server\default\deploy 5. Uruchamiamy stronę: http://adres.serwera.jboss:8080/helloworld/hi.jsp 24

Podsumowanie partnerzy biznesowi aplety, aplikacje, RMI, CORBA przeglądarka www serwlety strony JSP komponenty EJB komponenty encyjne złącza inny system wewnętrzny partner biznesowy SQL 25