Vybrané partie z jazyka Java

Transkript

Vybrané partie z jazyka Java
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 (Web­Sphere), 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 2003­2006
●
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
Aspect­Oriented (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 (Model­View 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, JAX­RPC
–
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:
–
Point­to­Point
–
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
–
EJB­QL ­ 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)

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB) Context – ne úplně jako Spring (mix s lookup)

Více

Prezentace ke stažení [PDF - 269 kB]

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)

Více

Stáhnout Michalovo CV

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...

Více

EJB - Enterprise Java Beans

EJB - Enterprise Java Beans public class CalculatorBean implements CalculatorRemote, CalculatorLocal

Více

7916

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ý...

Více

[email protected] (+420) 773 400084

milan.karasek@algomica.cz (+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...

Více