Java wybrane technologie



Podobne dokumenty
Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

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

Enterprise JavaBean 3.0

Enterprise JavaBeans

Wprowadzenie do Enterprise JavaBeans 2.0

Komponenty sterowane komunikatami

Java wybrane technologie

Java Enterprise Edition

EJB 3.0 (Enterprise JavaBeans 3.0)

Usługa TimerService

Bezstanowe komponenty sesyjne i zdarzenia zwrotne

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

Enterprise Java Beans Narzędzia i Aplikacje Java EE

Enterprise JavaBeans 3.0

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

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

Modele komponentowe SCA, OSGi, Distributed OSGi i OSGi Enterprise a Java EE

Enterprise JavaBeans (EJB)

Aplikacje internetowe i rozproszone - laboratorium

Wywoływanie metod zdalnych

mgr inż. Michał Paluch

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.

Wywoływanie metod zdalnych

Enterprise Java Beans wykład 7 i 8

Podstawowe informacje o technologii Java EE 7

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

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

Programowanie komponentowe 5

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

SOP System Obsługi Parkingów

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

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

1 Wprowadzenie do J2EE

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

Stanowe komponenty sesyjne

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Remote Method Invocation 17 listopada 2010

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

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

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ć

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

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

Automatyzacja procesów biznesowych Andrzej Sobecki. ESB Enterprise service bus

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

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

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

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

Tomasz Dobek.

JAVA I BAZY DANYCH. MATERIAŁY:

Budowa komponentów Enterprise JavaBeans

Aplikacje biznesowe Wykład dla studentów Informatyki Stosowanej

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

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

Aplikacje RMI

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Wybrane działy Informatyki Stosowanej

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Programowanie Komponentowe WebAPI

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Transakcje w systemach Java Enterprise Korzystanie z systemów kolejkowania w serwerach aplikacji

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN. kerk@moskit.ie.tu.koszalin.pl

Aplikacje RMI Lab4

Zastosowanie informatyki w gospodarce Wykład 2

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Obs³uga transakcji rozproszonych w jêzyku Java

Wybrane działy Informatyki Stosowanej

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

Piotr Matkowski Wprowadzenie do J2EE 20 kwietnia "Unfortunately, no one can be...told what the J2EE is. You have to see it for yourself.

Enterprise JavaBeans (EJB)

Serwery Aplikacji "CC" Grzegorz Blinowski. tel (22) ; faks (22)

Java wybrane technologie

IBM Corporation IBM SOA Center of Excellence

Podstawowe informacje o technologii Java Persistence API - przykład

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Zastosowanie komponentów EJB typu Session

Programowanie obiektowe

Dostęp do baz danych z aplikacji J2EE

Interfejsy w Javie. Przykład zastosowania interfejsów:

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

Programowanie komponentowe

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Zagadnienia Programowania Obiektowego. Usługi sieciowe w Javie EE 5

Co nowego w Java EE?

Systemy Rozproszone - Ćwiczenie 6

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

JDBC (Java Database Connectivity vit )

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Programowanie obiektowe

JBoss Application Server

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

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

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

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

Zaawansowane aplikacje internetowe

Transkrypt:

Java wybrane technologie spotkanie nr 7 Enterprise Java Beans

Zagadnienia dotyczące systemów rozproszonych Zdalne wołanie metod (ang. Remote Method Invocation) Wielowątkowość (ang. Threading) Współpraca z bazą danych i systemami spadkowymi (ang. Back-end integration) Transakcje Równoważenie obciążenia (ang. Load balancing) Płynne przejmowanie zadań od komponentów, które uległy awarii (ang. Transparent failover) Czy stan serwera, który uległ awarii jest replikowany na inne serwery (ang. Clustering) Uaktualnienia działającego systemu (ang. Dynamic redeployment) Prowadzenie dziennika i audyt (ang. Logging and auditing) Monitorowanie i administrowanie działającym systemem (ang. System management) 2

Zagadnienia dotyczące systemów rozproszonych... Luźne sprzężenie przy pomocy komunikatów (ang. Message-oriented middleware) Tworzenie/niszczenie komponentów w zależności od obciążenia (ang. Component life cycle) Pule zasobów (ang. Resource pooling) Kontrola bezpieczeństwa na poziomie operacji (ang. Security) Pamięć podręczna (ang. Caching) 3

Serwery aplikacji Podobna funkcja serwera jak dla kontenerów webowych Jak zapewnić usługi śródprogramów (ang. Middleware services) zaprogramować samemu użyć serwera aplikacji Standaryzacja po dokonaniu wyboru nie było odwrotu zatrzymać użytkowników można jedynie przez dbanie o jakość! (patrz IE) Standaryzacja w innych dziedzinach: telewizja, telefony, paliwo samochodowe pozew Departamentu Sprawiedliwości przeciw IBM z 1980 r. (sprzęt, oprogramowani i usługi zostały rozdzielone) wojny przeglądarek pozwy Komisji Europejskiej 4

Technologia Enterprise JavaBeans Zalety: to wszechobecny standard są pracownicy dojrzała technologia (dużo dobrych praktyk i narzędzi) możliwa jest przenośność mimo, że nigdy nie jest za darmo aplikacje powstają szybciej, bo wiele usług jest oprogramowane w serwerach nie wszystkie usługi są wymagana przez specyfikację (używanie dodatkowych usług może ograniczyć przenośność) Dotychczas z EJB było jak z przysłowiową armatą na wróble czy EJB 3.0 to zmieni? Jeżeli nie EJB, to: lekkie zręby o otwartym kodzie (np. Spring).NET-managed components 5

Technologia Enterprise JavaBeans Typowe zastosowania EJB logika biznesowa: np. wyliczanie podatków dla listy zakupów, wysyłanie emaili z potwierdzeniami dostęp do bazy danych integracja z innymi systemami (Java EE Connector Architecture) Typowi klienci aplikacje (biurkowe, applety) dynamiczne WWW Web services (interfejs dla aplikacji) 6

7

Dostęp do usług wprost (ang. explicit) niższa efektywność pracy programistów trudniejsze pielęgnowanie większa kontrola niejawnie (ang. implicite) programiści skupiają się jedynie na logice biznesowej niektóre zmiany nie wymagają poprawiania kodu deksryptory/anotacje EJB zazwyczaj jest wybór między usługami jawnymi i niejawnymi (jak wiele kontroli potrzeba) specyfikacja nie narzuca sposobu realizacji dostępu niejawnego 8

Role efektywność vs elastyczność role sprawdzają się w zespołach średnich i dużych zespołach Bean Provider Application Assembler (architekt) EJB Deployer (wybór sprzętu, redundancja, strojenie) często kontakt z "centrum danych" System Administrator (nadzór nad działającym systemem) 9

Kontenery EJB http://java.sun.com/j2ee/licensees.html Komercyjne BEA WebLogic Sun Java System Application Server IBM WebSphere Oracle Application Server Otwarte JBoss Glassfish Apache Geronimo JOnAS 10

Rodzaje EJB inne technologie komponentowe jak DCOM,.NET i CORBA mają jeden rodzaj komponentów wiele wydłuża naukę, ale ułatwia dobrą organizację projektu Session beans (SB) stateless vs stateful Message-driven beans (MDB) ten sam cel, ale luźnie sprzężone Entity beans nie zmienione od wersji EJB 2.1 alternatywą jest Java Persistence API 11

Dostęp do beanów RMI-IIOP Internet Inter-ORB Protocol Java Message Service (JMS) Location Transparency Java Naming and Directory Interface (JNDI) java:comp/env/ (nie trzeba się odwoływać do rzeczywistych adresów zasobów) zdalny interfejs lokalny interfejs (od EJB 2.0) Web Services komponenty vs usługi (SOA) 12

Podstawy: Programowanie rozproszone zdalny interfejs zapewnia distribution transparency co najmniej raz/co najwyżej raz semantyka przekazywania parametrów technologie: OMG Common Object Request Broker Architecture (CORBA) Microsoft Distributed Component Object Model (DCOM) Sun Remote Method Invocation (RMI) gruboziarniste operacje 13

Model programistyczny EJB 3.0 14

Prościej niż w EJB 2.1 EJB 2.1 i EJB 3.0 można wymieszać nie ma interfejsu domowego dla stateless SB i MDB nie ma sensu dla stateful SB użytkownik może użyć dowolnej metody POJO nie trzeba dostarczać deskryptora kiedy deskryptor się przydaje? (podział ról w zespole) deskryptor ma większy priorytet od anotacji nie trzeba implementować specjalnych interfejsów i wypełniać ich metod dependency injection można zapomnieć o JNDI 15

Pule swapping pamięć wirtualna aktywacja/pasywacja zazwyczaj Last Recently Used (LRU) tylko dla beanów, których metody nie są w tej chwili wywoływane i które nie uczestniczą w transakcji dla socketów, połączeń JDBC, itp. @PrePassivate @PostActivate @PostConstruct i @PreDestroy klasy callback listener nie dotyczy ich DI 16

Pozostałe callbacki SL SF 17

Przykład interfejs zdalny package test; public interface CountRemote { public int count(); public void set(int val); public void remove(); 18

Przykład klasa beana package test; import javax.ejb.*; import javax.interceptor.interceptors; @Stateful @Remote(CountRemote.class) @Interceptors(CountCallbacks.class) public class CountBean implements CountRemote { private int val; public int count() { System.out.println("count()"); return ++val; public void set(int val) { this.val = val; System.out.println("set()"); @Remove public void remove() { System.out.println("remove()"); 19

Przykład callbacks public class CountCallbacks { public CountCallbacks() { @PostConstruct public void construct(invocationcontext ctx) throws Exception { System.out.println("cb:construct() "); ctx.proceed(); @PostActivate public void activate(invocationcontext ctx) throws Exception { System.out.println("cb:activate()"); ctx.proceed(); @PrePassivate public void passivate(invocationcontext ctx) throws Exception { System.out.println("cb:passivate()"); ctx.proceed(); @PreDestroy public void destroy(invocationcontext ctx) throws Exception { System.out.println("cb:destroy()"); ctx.proceed(); 20

public class CountClient { public static final int noofclients = 3; public static void main(string[] args) { try { Context ctx = new InitialContext(System.getProperties()); CountRemote count[] = new CountRemote[noOfClients]; int countval = 0; System.out.println("Instantiating beans..."); for (int i = 0; i < noofclients; i++) { count[i] = (CountRemote) ctx.lookup(countremote.class.getname()); count[i].set(countval); countval = count[i].count(); System.out.println(countVal); Thread.sleep(100); System.out.println("Calling count() on beans..."); for (int i = 0; i < noofclients; i++) { countval = count[i].count(); System.out.println(countVal); count[i].remove(); Thread.sleep(50); catch (Exception e) { e.printstacktrace(); Initializing beans... 1 2 3 Calling count on beans... 2 3 4 co z callbacks??? 21

<?xml version="1.0" encoding="utf-8"?> <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"> <description>stateful Session Bean Example</description> <display-name>stateful Session Bean Example</display-name> <enterprise-beans> <session> <ejb-name>countbean</ejb-name> <business-remote>examples.session.stateful_dd.count</business-remote> <ejb-class>examples.session.stateful_dd.countbean</ejb-class> <session-type>stateful</session-type> <transaction-type>container</transaction-type> </session> </enterprise-beans> <interceptors> <interceptor> <interceptor-class>examples.session.stateful_dd.countcallbacks </interceptor-class> <post-construct><lifecycle-callback-method>construct</lifecycle-callback-method></post-construct> <post-activate><lifecycle-callback-method>activate</lifecycle-callback-method></post-activate> <pre-passivate><lifecycle-callback-method>passivate</lifecycle-callback-method></pre-passivate> <!-- <pre-destroy><lifecycle-callback-method>destroy</lifecycle-callback-method></pre-destroy> --> </interceptor> </interceptors> <assembly-descriptor> <interceptor-binding> <ejb-name>countbean</ejb-name> <interceptor-class>examples.session.stateful_dd.countcallbacks </interceptor-class> </interceptor-binding> </assembly-descriptor> </ejb-jar> 22

Ułatwienia Ułatwienia JNDI Context ctx = new InitialContext(); //bezparametrowy konstruktor w pełni kwalifikowana nazwa klasy oraz java:comp/env/ejbjndi SessionContext Anotacje dla @Stateless, @Stateful i @MessageDriven name, mappedname, description @Local i @Remote mogą zawierać listę np. {X.class, Y.class Dependency Injection @Resource SessionContext ctx; @EJB InnyBean ib; @Resource(name="jdbc/ default",type=datasource.class) DataSource ds; @Resource int ala; //z env-entry 23

Interceptors @Interceptor i @Interceptors wskazują zewnętrzne klasy @AroundInvoke wskazują metodę programowanie aspektowe cross-cuting concern (bezpieczeństwo, logi, audyt) InvocationContext.proceed() 24