Enterprise Java Beans 3.0



Podobné dokumenty
(Enterprise) JavaBeans. Lekce 7

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Tvorba informačních systémů

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Semináˇr Java X J2EE Semináˇr Java X p.1/23

KIV/PIA 2013 Jan Tichava

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

Spring framework 2.0. Roman Pichlík CZJUG

Co je nového v Java EE 6

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

PA165: Úvod do Java EE. Petr Adámek

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

DPKOM_2. Technologie Enterprise JavaBeans Řízení zdrojů a primární služby

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Technologie JavaBeans

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

DPKOM_06 Dědičnost entit a zpětná volání posluchači

Technologie Java. Jaroslav Žáček

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

RMI Remote Method Invocation

JAVA. Aspekty (AOP) AspectJ

UJO Framework. revoluční architektura beans. verze

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

Základy Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition

Návrhové vzory Tvorba objektů

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Java Message Service (JMS) Martin Ptáček, KOMIX s.r.o.

VŠB Technická univerzita Ostrava. Fakulta elektrotechniky a informatiky. Katedra informatiky. Enterprise Java Beans historie, současnost a budoucnost

Distribuované systémy a výpočty

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Platformy / technologie. Jaroslav Žáček

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Softwarové komponenty a Internet

Architektury informačních systémů

Architektury informačních systémů

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

X33EJA Enterprise Java

Technologie Java. Jaroslav Žáček

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Object-relational mapping (JPA, Hibernate)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Spring portfolio. Tomáš Krátký

RMI - Distribuované objekty v Javě

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Návrhové vzory pro J2EE

Java a XML. 10/26/09 1/7 Java a XML

Abstraktní datové typy: zásobník

Platformy / technologie. Jaroslav Žáček

Multiplatformní osobní organizér v jazyce Java

Tvorba informačních systémů

Kód, který se nebude často měnit

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Testovací metoda. Testovací metoda. public class SimpleTest {

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

}w!"#$%&'()+,-./012345<ya

TÉMATICKÝ OKRUH Softwarové inženýrství

Návrhové vzory pro J2EE. Miroslav Beneš

Java - řazení objektů

Vytváření a použití knihoven tříd

JAVA EE ORGANIZÉR - SOFTWAROVÁ ARCHITEKTURA

Podpora aplikační logiky v J2EE aplikačních rámcích

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Algoritmizace a programování

1. Programování proti rozhraní

20. Projekt Domácí mediotéka

Java - výjimky. private void vstup() throws IOException {... }

Web Services na SOAP

KTE / ZPE Informační technologie

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Ověřování nahraditelnosti EJB komponent. Pavel Stuna

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

Tvorba informačních systémů

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

Remote Method Invocation RMI

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Java Managenent Extension JMX

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25

Distribuované programování s prvky komponent XDPKO. Doc. Ing. František Huňka, CSc.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Transaction API + webové frameworky + další poznámky. Petr Aubrecht CA

SOAP & REST služby. Rozdíly, architektury, použití

Úvod do Web Services

Transkript:

Enterprise Java Beans 3.0 Lukáš Zapletal liberix.cz EJB 3.0 a JPA 1.0

JavaBean - vysvětlení pojmu Java třída s get/is a set metodami má tedy vlastnosti žádné další podmínky nejsou kladeny JavaBean je tedy třída, která má alespoň jednu vlastnost (nebo více) stačí pro čtení nebo pro zápis typicky pro čtení i zápis (get/set) ukázka Java Beanu

EJB - Enterprise Java Beans obohacené Java třídy o anotace s Java Beany mají společné pouze jméno anotace blíže popisují EJB pro dřívější verze - XML nyní konfigurace výjimkou XML stále lze použít (zpětná kompatibilita)

EJB - Enterprise Java Beans jsou to komponenty, které se skládají dohromady v aplikace běží na aplikačním serveru, který poskytuje dostatečné běhové prostředí a služby rozlišujeme tři typy EJB komponent: session beans - v nich je logika aplikace message-driven beans - reagují na události entities - reprezentují uložená data

EJB - vlastnosti EJB 3.0 perzistence dat škálovatelnost distribuovatelnost a transakce víceuživatelská bezpečnost deklarativní metadata * konfigurace výjimkou * přenositelnost a znovupoužitelnost * - novinka

EJB - historie EJB 1.0 - první verze, session a entity beans EJB 1.1 - XML deployment descriptor nahradil serializované objekty EJB 2.0 - lokální intefrace, přibyly MDB, vylepšené entity beansy, EJB QL EJB 2.1 - web services, časovač EJB 3.0 - přepracovány entity beansy (nyní se jmenují prostě entities ), anotace, mnoho změn pro zjednodušení vývoje

EJB 3.0 - zjednodušení dependency injection vpíchnutí závislosti opačný přístup (nyní push dříve pull) dříve - centrální repozitář a JNDI interceptors (callback methods) není třeba impl. hodně servisních metod potřebné metody se označí

EJB 3.0 - zjednodušení perzistence pomocí POJO už žádné home interfaces a ejbcreate() nový objekt EntityManager starající se o život beanů snadná konfigurace pomocí metadat už žádné XMl konfigurace zpětná kompatibilita ale zajištěna XML stále můžete používat

EJB - použití po vytvoření komponenty se zabalí do archivu a nahrají na aplikační server (deployment) tam se aktivují a jsou dostupné buď lokálně (v rámci aplikačního serveru) nebo vzdáleně (přes síť) EJB se poté volají například z webové vrstvy (lokálně nebo vzdáleně) desktopové aplikace (vzdáleně)

EJB 3.0 - nevýhody ačkoli se 3.0 hodně zlepšila, stále tu jsou křivka učení není strmá (nepíšete ihned) hůře se testuje (testování v kontejneru) složitější nasazení a spouštění aplikace EJB není povinnou součástí J2EE aplikace EJB lze snadno nahradit jinou komponentovou technologií, například Spring Framework (Spring Beans)

EJB - Session Beans slouží k implementaci vlastní logiky aplikace obvykle obsahují hlavní rutiny (které např. manipulují s databázovými objekty) rozeznáváme Stateless Session Bean neuchovává stav sezení příklad - CardServiceBean (kontrola kreditních karet) Stateful Session Bean uchovává stav po dobu sezení příklad - ShoppingCartBean (nákupní košík)

EJB - Session Beans u obou typu beanů musíme použít anotaci: @Stateless nebo @Stateful bean musí implementovat jedno (nebo obě) rozhraní označené jako @Local a @Remote local - přístup lokálně remote - přístup přes síť typicky se vytvoří jedno rozhraní s operacemi a Local a Remote rozhraní budou potomci

EJB - Session Beans import javax.ejb.stateless; @Stateless public class CalculatorBean implements CalculatorRemote, CalculatorLocal public int add(int x, int y) return x + y; public int subtract(int x, int y) return x - y; public interface Calculator int add(int x, int y); int subtract(int x, int y); import javax.ejb.remote; @Remote public interface CalculatorRemote extends Calculator import javax.ejb.local; @Local public interface CalculatorLocal extends Calculator

EJB - Session Beans stateful session bean - stejná situace, pouze jiná anotace (@Stateful) typické pojmenování: SearchFacade - hlavní rozhraní SearchFacadeLocal - lokální rozhraní SearchFacadeRemote - vzdálené rozhraní SearchFacadeBean - vlastní kód

EJB - Session Beans stav objektu lze kontrolovat v metodách, které označíme anotacemi @PostConstruct @PreDestroy @PreActivate @PrePassivate

EJB - Session Beans API nabízí také tzv. interceptory opět pomocí anotací lze snadno přibalovat kód k jednotlivým metodám příklad jednoduchého i/u v jedné třídě @AroundInvoke @Stateless public class HelloWorldBean implements HelloWorld public void sayhello() System.out.println("Hello!"); public Object myinterceptor(invocationcontext ctx) throws Exception System.out.println("checkPermission interceptor invoked"); if (!userisvalid(ctx. getejbcontext().getcallerprincipal())) throw new SecurityException("Caller: '" + ctx.getejbcontext().getcallerprincipal().getname() + "' does not have permissions for method " + ctx.getmethod()); return ctx.proceed();

EJB - Message Driven Beans používají se pro implementace příjemců zpráv odesílatele implementujeme jako standardní session beany pro transfer se používá JMS aplikační server musí mít podporu pro JMS pokud aplikace nepoužívá Webové Služby (WS), pak se obvykle využívá právě JMS a MDB

EJB - Message Driven Beans opět použijeme anotace v anotaci můžeme nastavit typ a adresu cíle JMS používá dva typy messagingu: point-to-point (queues) pub-sub (topics) a implementujeme metodu onmessage(...)

EJB - Message Driven Beans import javax.ejb.messagedriven; import javax.ejb.activationconfigproperty; import javax.jms.message; import javax.jms.messagelistener; @MessageDriven(activationConfig = @ActivationConfigProperty(propertyName="destinationType", propertyvalue="javax.jms.queue"), @ActivationConfigProperty(propertyName="destination", propertyvalue="queue/tutorial/example") ) public class ExampleMDB implements MessageListener public void onmessage(message recvmsg) System.out.println("----------------"); System.out.println("Received message"); System.out.println("----------------");

EJB - Entities třetí typ EJB nazýváme od verze 3.0 Entity Entity se používají jako datové modely ukládají se do relačních databází (pokud chceme použít objektové, máme JDO) dříve Entity Beans, v nové verzi zjednodušeno je to POJO třída (nemusí implementovat žádná roznraní) anotacemi kompletně popíšeme Entitu, opět není třeba žádného XML

EJB - Entities @Entity @Table(name = "PURCHASE_ORDER") public class Order implements java.io.serializable private int id; private double total; private Collection<LineItem> lineitems; @Id @GeneratedValue(strategy=GenerationType.AUTO) public int getid() return id; public void setid(int id) this.id = id; public double gettotal() return total; public void settotal(double total) this.total = total; public void addpurchase(string product, int quantity, double price) if (lineitems == null) lineitems = new ArrayList<LineItem>(); LineItem item = new LineItem(); item.setorder(this); item.setproduct(product); item.setquantity(quantity); item.setsubtotal(quantity * price); lineitems.add(item); total += quantity * price; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedby="order") public Collection<LineItem> getlineitems() return lineitems; public void setlineitems(collection<lineitem> lineitems) this.lineitems = lineitems;

EJB - Entities @Entity public class LineItem implements java.io.serializable private int id; private double subtotal; private int quantity; private String product; private Order order; @Id @GeneratedValue(strategy=GenerationType.AUTO) public int getid() return id; public void setid(int id) this.id = id; public double getsubtotal() return subtotal; public void setsubtotal(double subtotal) this.subtotal = subtotal; public int getquantity() return quantity; public void setquantity(int quantity) this.quantity = quantity; public String getproduct() return product; public void setproduct(string product) this.product = product; @ManyToOne @JoinColumn(name = "order_id") public Order getorder() return order; public void setorder(order order) this.order = order;

EJB - Entities Entities používají JPA v EJB 3.0 je to JPA 1.0 JPA je velmi komplexní záležitost implementace javax.persistence jsou momentálně dvě hlavní Oracle TopLink (RI) Hibernate

EJB - Entities nikde není nařízeno, že je nutné používat JPA je možné použít i jiné O/R mapovací frameworky (Cayene, Apache produkty) mohou se třeba použít jen session beany a nebo ani ty ne - další informace o programování J2EE bez EJB v další prezentaci

EJB - ukázky ukázka vytvoření session beanu klienta vytvoříme až v příští prezentaci ukázka JPA s ukládáním do databáze Apache Derby další popisy vlastností JPA již na příkladech