Vybrané partie z jazyka Java
Transkript
Vybrané partie z jazyka Java Spring a Enterprise JavaBeans Romana Hamplová Obsah přednášky ● K čemu je to dobré? ● Historie. Srovnání. ● Spring 3.0 ● Enterprise JavaBeans (EJB) 3.0 Vybrané partie z jazyka Java Spring a EJB 2 K čemu jsou dobré? ● Vývoj velkých podnikových řešení ● Rychlost, zjednodušení vývoje ● Znovupoužitelnost ● Volné vazby ● Deklarativní rozhraní, protokoly ● Persistence ● Bezpečnost ● Distribuované aplikace, výpočty Vybrané partie z jazyka Java Spring a EJB 3 Třívrstvá architektura ● Prezentační (Klient) vrstva – ● ● Light clients Aplikační vrstva – Business nebo process logic – Deklarativní Datová (perzistenční) vrstva (DAO) – zprávy Vybrané partie z jazyka Java → Oddělení logiky vrstev → Čistější kód Spring a EJB 4 Vývoj – EJB před verzí 3.0 ● IBM (1997), Sun (1999) ● Náročný vývoj – příliš složité ● Robustní, komplexní řešení ● Pro největší aplikace ● Problémy, např. s testováním ● Standard ● IBM (WebSphere), BEA (Weblogic), Oracle (JDeveloper) Vybrané partie z jazyka Java Spring a EJB 5 Vývoj Spring ● Rod Johnson, 2002 ● Reakce na EJB ● Snahy – Jednodušeji – Standardní JavaBeans – Lehčí řešení – Není třeba vše implementovat, stačí dobrá integrace pro stávající (otevřené) frameworky – Interoperabilita s EJB Vybrané partie z jazyka Java Spring a EJB 6 Vývoj – EJB 3.0 ● Sun Microsystems 20032006 ● Inspirováno Springem ● Jednodušší ● – Nejsou třeba implementovat některé interface – Ubyly zbytečné callback metody Nahrazeno anotacemi – Dříve prosyceno java.rmi.remoteException Použitelnější – Dependency Injection – Context – ne úplně jako Spring (mix s lookup) Vybrané partie z jazyka Java Spring a EJB 7 Inversion of Control (IoC) ● Základní návrhový vzor (Dependency injection) ● Dependent, dependencies a injector (kontejner) ● ● ● Objekty se nepropojují v kódu, ale v konfiguračním souboru Objekt není zodpovědný za hledání svých závislostí (nadeklarovány) Kontejner je ”dodá” nastaví konkrétní objekty pomocí setterů – Obvyklá jmenná konvence setXxx() Vybrané partie z jazyka Java Spring a EJB 8 Spring Architektura Vybrané partie z jazyka Java Spring a EJB 9 Spring – Komponenty 1 ● ● Core Container – BeanFactory – IOC – Spring Context – Konfigurační soubor .xml AspectOriented (AOP) – Např. Logování, transakce – Aplikace instruována anotacemi Vybrané partie z jazyka Java Spring a EJB 10 Spring – Komponenty 2 ● DAO (Data Access Object) – Abstrakce nad přístupem k DB (JDBC, ... )Object – Relační (ORM) ● ● JDO, Hibernate, OJB and iBatis SQL Maps Hibernate Web – MVC Framework (ModelView controller) ● – pohledy: JSP, Velocity, Tiles, PDF, XLS Servlets & JSP (viz přednáška z 14.4.) Vybrané partie z jazyka Java Spring a EJB 11 Property namebean.java public class nameBean { String name; public void setName(String a) { name = a; } public String getName() { return name; } } Vybrané partie z jazyka Java context.xml bean id="bean1" class="nameBean"> <property name="name" > <value>Tom</value> </property> Spring a EJB 12 Konstruktor namebean.java public class nameBean { String name; public nameBean(String a) { name = a; } } ● context.xml <bean id="bean1" class="nameBean"> <constructorarg> <value>My Value</value> </constructorarg> </bean> Obdobně Init() metoda Vybrané partie z jazyka Java Spring a EJB 13 Provázání context.xml ... <bean id="bean" class="beanImpl"> <property name="conn"> <ref bean="bean2"/> </property> </bean> <bean id="bean2" class="bean2impl"/> context.xml ... <bean id="parent" class="mybean" > <property name="name" value="xxx"/> </bean> <bean id="child" class="mybean" parent="parent"> <property name="address” value="Prague"/> </bean> ... ... ● Reference ● ”Dědění” Vybrané partie z jazyka Java Spring a EJB 14 Spring a databáze ● Data access – ● Object Ralational Mapping – ● JDBC, JDO Hibernate, OJB, iBatis, .. Např. – org.springframework.jdbc.datasource.DriverManagerDataS ource Vybrané partie z jazyka Java Spring a EJB 15 Remoting ● ● Modely: – RMI, Hessian, Burnlap, HTTP invoker, EJB, JAXRPC – Vše přes konfigurační soubor RMI: RmiProxyFactoryBean, RmiServiceExporter – ● Není třeba žádný lookup, ... EJB – abstract support classes – pro jednotlivé typy beanů Vybrané partie z jazyka Java Spring a EJB 16 Spring technologies (projects) ● Spring Security ● Spring Roo ● Spring .Net ● Spring Web Flow ● Spring Web Services ● Spring plugins (OSGi) ● ... Vybrané partie z jazyka Java Spring a EJB 17 EJB – souvislosti ● Vybrané partie z jazyka Java Spring a EJB 18 EJB 3 Funkce ● Správa transakcí ● Bezpečnost – pomocí atributů, ne API ● Správa zdrojů a životního cyklu ● Remote přístup (RMI) ● Concurrency Control – ● Detekce, zámky Clustery, Load balancing (vyvažování zátěže) Vybrané partie z jazyka Java Spring a EJB 19 Typy Beanů (komponent) ● ● ● Session beans – Representuje jednoho klienta na aplikacnim serveru – Synchronní komunikace – Interakce s klientem – aplikační vrstva Message driven beans – Asynchronní komunikace – Služby, spíš nejnižší vrstva Entity Beans (verze 2.0) – Java EE 5 nahrazeno Java Persistence API entitami Vybrané partie z jazyka Java Spring a EJB 20 Session Beans ● Business logika, přístup k db, algoritmy, procesy, ... ● Životní cyklus ● – Pro jednoho klienta – Nepersistentní – @PreConstruct, @PreDestroy, – @PostActivate, ... Použití – ● Web services "Stateful", "Stateless" Vybrané partie z jazyka Java Spring a EJB 21 Stateless session beans ● Bezestavové, Jednoduché – Jedno volání metody, pak ”destroy” – škálovatelnost ● Podporují více klientů – výkon ● Všechny instance jsou ekvivalentní status ● Implementují Web service Vybrané partie z jazyka Java Spring a EJB 22 Stateless session – ukázka /* Example class for Stateless session */ @Stateless public class MessageStoreBean implements MessageStore{ public String getMessage(){ return "Test Message"; } } /* Example class for Business Interface */ @Remote public interface MessageStore{ public String getMessage(); } Vybrané partie z jazyka Java Spring a EJB 23 Stateful session beans ● ● ● ● Status relace – hodnoty proměnných „konverzace“ Status mizí s koncem relace Life cycle callback: @PostConstruct, @PreDestroy, @PostActivate, and @PrePassivate. Vybrané partie z jazyka Java Spring a EJB 24 Stateful – Listener /* Callback method defined inside a bean class */ @Stateful public class TestBean{ private int var; public int method(){} @PreDestroy testMethod(){} } Vybrané partie z jazyka Java /* Callback method defined inside a Listener class*/ public class CustomListener{ @PrePassivate public testMethod(Object obj){ // Statements } } /* Adds callback listener to bean class */ @CallbackListener CustomListener @stateful public class TestBean{ private int var; public void getPrice(){} } Spring a EJB 25 Stateful – Dependency injection @Stateful public class LoginBean implements Login{ @Inject private UserTransaction tx; @Inject private DataSource ds; private ValidateBean validate; @EJB(name = "validateLogin") public void setValidateLogin(ValidateBean validate){ this.validate = validate; } } Vybrané partie z jazyka Java Spring a EJB 26 Message driven beans ● Přijímají Java Message Service (JMS) zprávy – ● Od klientů nebo komponent Motivace – problémy s RMI – Čekání... – Těsnost vazeb – přímá komunikace – Spolehlivost – chvilkový výpadek je problém – Nelze jinak než 1:1 Vybrané partie z jazyka Java Spring a EJB 27 Message driven beans ● Charakteristika – Asynchronní – Nerepresentují data, ale mohou k nim přistupovat – Bezestavové – Všechny instance jsou ekvivalentní – Mohou přijímat zprávy od více klientů – → Podobné Stateless session beanům ● Rozdílnost – k přístupu se nepoužívají interfaces Vybrané partie z jazyka Java Spring a EJB 28 Message driven beans & JMS ● ● Modely: – PointtoPoint – Publish/Subscribe Implements – ● MessageListener @MessageDriven – Která fronta se má poslouchat Vybrané partie z jazyka Java Spring a EJB 29 POJO ● Plain Old Java Object, Plain Old Java Interface ● Integrace ”normálních” Java objektů do EJB ● Výhody: ● – Snadné testování – Rychlý vývoj – Není vazba na EJB framework Nevýhody – Je třeba se vypořádat s transakcemi a perzistencí jinak Vybrané partie z jazyka Java Spring a EJB 30 Entity Beans & JPA ● Java Persistence API (od Java EE 5) – ● Pro objekty a vztahy mezi nimi Načítání, ukládání, mazání – databáze – Primitivní typy, kolekce, některá pole – EJBQL javax.persistence.EntityManager ● @Entity, @Table ● @Id, @GeneratedValue, @SequenceGenerator ● @OneToOne, @OneToMany, @ManyToMany Vybrané partie z jazyka Java Spring a EJB 31 Entity – ukázka (POJO třída) /* Example program for EntityBeans using annotations */ @Entity public class TestEntityBean{ private String userId; private String name; } @id(generate=AUTO) public String getUserId(){ return this.userId; } public void setUserId(String userId){ this.userId = userId; } public String getName(){ return this.name; } public void setName(String name){ this.name = name; } Vybrané partie z jazyka Java Spring a EJB 32 Životní cyklus entity ● Řízení pomocí EntityManageru Vybrané partie z jazyka Java Spring a EJB 33 Děkuji za pozornost ● Otázky? ● Připomínky? Vybrané partie z jazyka Java Spring a EJB 34
Podobné dokumenty
Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)
Context – ne úplně jako Spring (mix s lookup)
Prezentace ke stažení [PDF - 269 kB]
Enterprise Java Beans (EJB) 3.1
Java Persistence API (JPA) 2.0
Java API for XML-Based Web Services (JAX-WS)
Stáhnout Michalovo CV
• vývoj billingových systémů pro telekomunikace
• řízení týmu vývojářů, komunikace se zákazníkem
• JSP, JSF, Oracle, IceFaces, EJB 3
• IT analýza, test analýza
Komerční banka a.s. (www) (2011 - 201...
EJB - Enterprise Java Beans
public class CalculatorBean implements CalculatorRemote, CalculatorLocal
7916
si také, že celou řadu principů řízení projektů uplatní i v běžném, každodenním životě při normální
práci s lidmi a s technologiemi.
Úkolem této kapitoly je seznámit čtenáře se základními, nezbytný...
[email protected] (+420) 773 400084
Banking 2013 – now; allocation 2years 4 month, customer: Air Bank
- Lead of a team that developed backend systems for document recognition, storing, organizing
and easy payments „Šanon“ (JEE, Sprin...