Professional Documents
Culture Documents
Kup ksik
Pole ksik
Oce ksik
Ksigarnia internetowa
Lubi to! Nasza spoeczno
Spis treci
O autorach .......................................................................................................... 11
O korektorze merytorycznym .......................................................................... 13
Podzikowania .................................................................................................. 15
Przedmowa ........................................................................................................ 17
Wprowadzenie ................................................................................................... 19
CZ I
Rozdzia 1.
Rozdzia 2.
Kup ksik
Pole ksik
Rozdzia 3.
Rozdzia 4.
Rozdzia 5.
Kup ksik
Pole ksik
Spis treci 7
Stereotypy .....................................................................................................................82
Inne wzorce zwizane z CDI ......................................................................................82
Podsumowanie ...................................................................................................................83
wiczenia ............................................................................................................................83
Rozdzia 6.
Rozdzia 7.
Rozdzia 8.
Rozdzia 9.
Kup ksik
Pole ksik
Kup ksik
Pole ksik
Spis treci 9
Kup ksik
Pole ksik
PODSUMOWANIE
Kup ksik
Pole ksik
5
Wstrzykiwanie zalenoci i CDI
ZAWARTO ROZDZIAU:
wprowadzenie do technik wstrzykiwania zalenoci;
znaczenie wstrzykiwania zalenoci w Javie EE;
implementacja wstrzykiwania zalenoci w zwykym kodzie;
implementacja wstrzykiwania zalenoci w Javie EE;
wprowadzenie do kontekstowego wstrzykiwania zalenoci;
najwaniejsze rnice dzielce kontenery CDI i EJB.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Wzorce projektowe. Elementy oprogramowania
obiektowego wielokrotnego uytku, Helion, 2010.
Kup ksik
Pole ksik
72
co stao si bodcem do powstania i spopularyzowania rnych systemw szkieletowych, takich jak Spring
czy PicoContainer. W 2004 r. Martin Fowler opublikowa artyku na temat kontenerw odwrconego
sterowania (ang. Inversion of Control IoC) i wzorca wstrzykiwania zalenoci2. Wikszo producentw
oprogramowania nie zachcaa programistw do uywania kontenera J2EE. Wkrtce kontrol przejy
lekkie kontenery, ktre zaczto oficjalnie obsugiwa, i na dodatek Spring sta si w zasadzie nieoficjalnym
standardem, doprowadzajc do tego, e Jav biznesow postanowiono zaprojektowa od nowa.
Martin Fowler, Inversion of Control Containers and the Dependency Injection Pattern, 2004,
http://martinfowler.com/articles/injection.html.
Kup ksik
Pole ksik
73
Najpierw na listingach: 5.1, 5.2, 5.3 i 5.4 przedstawimy przykady silnie powizanych klas,
a nastpnie zmienimy je zgodnie z zasadami wzorca Wstrzykiwanie Zalenoci.
Listing 5.1. Klasa UserService tworzca now zaleno w konstruktorze
package com.devchronicale.di;
class UserService {
private UserDataRepository udr;
UserService() {
this.udr = new UserDataRepositoryImpl();
}
public void persistUser(User user) {
udr.save(user) ;
}
}
// zapisywanie danych
}
}
Kup ksik
Pole ksik
74
OPOWIADANIE WOJENNE
Gdy powierzono mi zadanie napisania aplikacji na Androida, postanowiem
poszuka systemw szkieletowych ze wstrzykiwaniem zalenoci dla platform
mobilnych. Jako programista z dowiadczeniem w sektorze biznesowym mylaem,
e to najlepsze rozwizanie. Interfejs uytkownika Androida wykorzystuje przecie
struktur przypominajc wstrzykiwanie zalenoci, wic skadniki interfejsu
zdefiniowane w XML-u z kodem Javy, wic wydawao mi si, e implementacja
kompletnego systemu wstrzykiwania zalenoci jest dobrym pomysem, ktry
pozwoli osign oszaamiajce rezultaty.
Opracowaem pikn architektur, w ktrej wszystkie obiekty i zasoby byy ze sob
powizane. Wstrzykiwanie dziaao piknie, ale aplikacja nie. Uruchamiaa si
o wiele duej ni inne podobne aplikacje i szwankowaa te w niej nawigacja.
Wszyscy zakadalimy, e elegancki system zoony z luno powizanych skadnikw
da si utworzy tylko przy uyciu wstrzykiwania zalenoci, wic nawet nie przyszo
nam do gowy szuka rda problemw wanie w tej technice. Stworzylimy pikny
i lekki interfejs uytkownika oraz wykorzystalimy asynchroniczne zadania dziaajce
w tle, aby nie blokowa aplikacji niektrymi operacjami oraz zmniejszy ilo pracy
podczas uruchamiania programu. Jednak wszystko na prno.
Kup ksik
Pole ksik
75
Kup ksik
Pole ksik
76
Kontener CDI tworzy jeden egzemplarz klasy UserRepositoryImpl jako ziarno zarzdzane
przez kontener i wstrzykuje go wszdzie tam, gdzie znajdzie adnotacj @Inject przy polu typu
UserDataRepository.
Ziarna zarzdzane przez kontener mona wstrzykiwa do konstruktorw, metod i pl bez wzgldu
na modyfikator dostpu, ale pole nie moe by finalne, a metoda nie moe by abstrakcyjna.
Powstaj pewne wane pytania. Co si stanie, jeli bdzie wicej ni jedna implementacja interfejsu
UserDataRepository? Jak kontener CDI zidentyfikuje implementacj do wstrzyknicia? Aby rozrni
konkretne implementacje interfejsu UserDataRepository, dla konkretnych klas mona oznaczy
klas samodzielnie zdefiniowanym kwalifikatorem.
Wyobra sobie, e s dwie implementacje interfejsu UserDataRepository jedna dla kolekcji
Mongo DB (dokumentowa baza danych), a druga dla bazy danych MySQL (relacyjna baza
danych). Naleaoby utworzy dwa kwalifikatory (jeden dla implementacji Mongo i drugi
dla implementacji MySQL) i odpowiednio oznacza nimi konkretne klasy oraz znajdujce si
w nich pola.
Wemy np. klas UserService z listingu 5.7. Gdybymy chcieli uy implementacji interfejsu
UserDataRepository dla Mongo, dodalibymy adnotacj @Mongo do pola udr:
@Inject @Mongo
private UserDataRepository udr;
Adnotacja @Named
Kolejnym wielkim wydarzeniem byo wprowadzenie adnotacji @Named w miejsce
kwalifikatorw acuchowych. Wieloznacznoci w zalenociach EJB rozstrzygano przy uyciu
acucha w atrybucie beanName adnotacji @EJB okrelajcej implementacj do wstrzyknicia
@EJB(beanName="UserDataRepository"). Adnotacja @Named umoliwia rwnie rozstrzyganie
niejednoznacznoci przy uyciu atrybutu acuchowego. Na listingu 5.8 implementacja Mongo
interfejsu UserDataRepository jest wstrzykiwana do pola udr.
Kup ksik
Pole ksik
77
Jawna adnotacja implementacji Mongo jest wymagana przez odpowiadajc jej adnotacj @Named.
Na listingu 5.9 implementacja Mongo interfejsu UserDataRepository jest oznaczona adnotacj
z tak sam nazw, jaka zostaa uyta do rozstrzygnicia wieloznacznoci na listingu 5.8.
Listing 5.9. Konkretna implementacja wymaga adnotacji @Named
package com.devchronicale.di;
import javax.inject.Named;
@Named("UserDataRepositoryMongo")
public class UserDataRepositoryMongo implements UserDataRepository {
@Override
public void save(User user) {
// zapisywanie danych
}
}
Na listingu 5.9 nazwa implementacji do wstrzyknicia jest okrelana na podstawie nazwy pola
UserDataRepositoryMongo. W rzeczywistoci adnotacja @Named zostaje zamieniona na
@Named("UserDataRepositoryMongo").
Kup ksik
Pole ksik
78
(system szkieletowy do budowy aplikacji sieciowych), ktry zdoby cakiem spor popularno
dziki obsudze bezporednich interakcji midzy JSF (ang. JavaServer Faces) i JavaBeans oraz EJB.
Sukces systemu Seam doprowadzi do powstania specyfikacji JSR 299 WebBeans. Podobnie jak
Hibernate, znany system szkieletowy do zapisywania danych dla Javy, by bodcem do standaryzacji
interfejsu API Java Persistence (JPA), Seam sta si inspiracj rdzenia implementacji CDI.
CDI wsppracuje z kadym zwykym obiektem Javy (POJO) przez tworzenie i wstrzykiwanie
obiektw do innych obiektw. Wstrzykiwa mona nastpujce rodzaje obiektw:
POJO;
zasoby biznesowe, np. dane i kolejki;
zdalne referencje EJB;
ziarna sesyjne;
obiekty typu EntityManager;
referencje do usug sieciowych;
pola producenckie i obiekty zwracane przez metody producenckie.
CDI a EJB
Cho moe si wydawa, e CDI i EJB to technologie konkurencyjne, w rzeczywistoci egzystuj
one w harmonii. CDI moe dziaa bez kontenera EJB. W istocie CDI moe by podstaw aplikacji
desktopowej lub dowolnej aplikacji sieciowej, ktra nie korzysta z kontenera EJB. CDI dostarcza
fabryk i wstrzykiwanie do dowolnego ziarna.
Natomiast ziarna EJB wymagaj kontenera EJB. Nawet uproszczona architektura EJB jest bardziej
zoona ni obiekty POJO i dlatego ziarna EJB potrzebuj kontenera EJB. Kontener ten zapewnia
dodatkowe przydatne usugi, takie jak: zabezpieczenia, transakcje i wspbieno.
Mwic krtko: kontener CDI jest lejszym i potniejszym, ale te mniej funkcjonalnym
kontenerem dla obiektw POJO. Jednak oba kontenery s na tyle dobrze ze sob zintegrowane,
e adnotacje CDI mog suy jako brama i standardowy interfejs do interakcji z kontenerem EJB.
Na przykad adnotacja @Inject moe by uywana zarwno z POJO, jak i EJB oraz moe wstrzykiwa
dowoln kombinacj tych obiektw, wywoujc odpowiedni kontener.
Ziarna CDI
Ziarno zarzdzane przez kontener to troch wicej ni tylko obiekt POJO speniajcy pewne
proste wymagania:
Musi mie bezargumentowy konstruktor lub konstruktor deklarujcy adnotacj @Inject.
Klasa musi by konkretna i znajdowa si na najwyszym poziomie hierarchii albo
by opatrzona adnotacj @Decorate. Nie moe by to niestatyczna klasa wewntrzna.
Ziarno nie moe by zdefiniowane jako EJB.
Jeli ziarno jest zdefiniowane jako zarzdzane przez inn technologi Javy EE, np. JSF,
to rwnie bdzie zarzdzane przez ten kontener.
Obiekty kadej klasy speniajcej te wymagania s tworzone i zarzdzane przez kontener i mog
by wstrzykiwane. Nie trzeba adnej specjalnej adnotacji, aby oznaczy klas jako ziarno zarzdzane.
Kup ksik
Pole ksik
79
Kontener szuka ziaren w archiwach ziaren. Wyrnia si dwa typy takich archiww jawne
i niejawne. Archiwum jawne zawiera deskryptor wdroenia bean.xml, ktry z reguy pozostaje
pusty. CDI skanuje klasy w archiwum w poszukiwaniu klas speniajcych opisane powyej wymagania
stawiane ziarnom oraz przejmuje do zarzdzania i wstrzykiwania wszystkie te z nich, ktre nie
maj adnotacji @Vetoed. Adnotacja ta wyklucza klas z grupy klas zarzdzanych przez kontener.
W niektrych przypadkach nie jest podane zezwolenie kontenerowi na zarzdzanie wszystkimi
znalezionymi ziarnami, ktre speniaj warunki. Jeli trzeba ograniczy grup klas, ktre zostan
przyjte przez kontener CDI do zarzdzania, mona zdefiniowa wasno bean-discovery-mode
w deskryptorze wdroenia bean.xml. Na listingu 5.10 pokazano fragment tego pliku zawierajcy
wasno bean-discovery-mode z wartoci all.
Listing 5.10. Tryb wykrywania ziaren ustawia si w pliku bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http: //www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1" bean-discovery-mode="all">
...
</beans>
Wasnoci bean-discovery-mode mona przypisa jedn z trzech wartoci: all, none lub annotated.
Ustawienie all oznacza dla kontenera CDI, e ma zarzdza wszystkimi znalezionymi w archiwum
ziarnami. Jest to warto domylna. Ustawienie none oznacza, e kontener CDI ma w ogle nie
zarzdza ziarnami, a annotated sprawia, e archiwum zachowuje si jak archiwum niejawne.
W takim przypadku kontener szuka ziaren z adnotacjami oznaczajcymi ich zakres.
Niejawne archiwum ziaren nie zawiera deskryptora wdroenia bean.xml. Stanowi to dla kontenera
CDI sygna, e powinien zarzdza tylko ziarnami z okrelonym zakresem. Wicej informacji
na temat zakresw ziaren znajduje si w punkcie Konteksty i zakres.
Adnotacja @Inject
Waciwoci adnotacji @Inject zostay ju opisane. Zanim wprowadzono technologi CDI do Javy EE,
kady system szkieletowy wstrzykiwania zalenoci dziaa na swj sposb. Kiedy w Javie EE
zastosowano kontener CDI, ktry mia pracowa obok kontenera EJB, adnotacja @Inject staa si
jedynym i abstrakcyjnym interfejsem dla prawie wszystkich operacji wstrzykiwania. Dziki niej
mona uywa kadego kontenera lub systemu szkieletowego wstrzykiwania zalenoci
odpowiedniego w danym przypadku.
Konteksty i zakres
Kontekst jest tym, co odrnia kontenery EJB od CDI. Cykl ycia ziarna CDI jest powizany
z zakresem kontekstowym. Istniej cztery zakresy CDI:
@RequestScoped zakres obejmuje danie HTTP uytkownika.
@SessionScoped zakres obejmuje sesj HTTP uytkownika.
@ApplicationScoped stan jest wspdzielony przez wszystkich uytkownikw w aplikacji.
@ConversationScoped zakres jest kontrolowany przez programist.
Kup ksik
Pole ksik
80
Ziarno opatrzone adnotacj okrelajc zakres przechowuje stan przez cay ten zakres i wspdzieli
ten stan z kadym klientem dziaajcym w tym samym zakresie. Na przykad ziarno o zakresie dania
przechowuje stan przez cay czas istnienia dania HTTP, a ziarno o zakresie sesji przechowuje
stan przez cay czas istnienia sesji HTTP. Ziarno z zakresem jest automatycznie tworzone w razie
potrzeby i niszczone na kocu kontekstu, w ktrym bierze udzia.
Adnotacje zakresowe s czsto uywane do okrelania zakresu ziaren wykorzystywanych
przez jzyk EL (ang. Expression Language) w faceletach.
Nazewnictwo i EL
Ziarno z adnotacj @Named jest dostpne poprzez jzyk EL. Domylnie w wyraeniu naley uy
nazwy klasy, tylko zmieni pierwsz liter na ma. W odniesieniach do metod dostpowych
zaczynajcych si od przedrostka get lub is naley opuci t czstk. Na listingu 5.11 pokazano
stosowny przykad.
Listing 5.11. Adnotacja @Named sprawia, e ziarno staje si widoczne dla EL
package com.devchronicale.di;
import j avax.enterprise.context.RequestScoped;
import j avax. inj ect.Named;
@Named // Defining that this is a managed bean
@RequestScoped // Defines the scope
public class User {
private String fullName;
public String getFullName() {
return this .fullName;
}
Jest to prosta implementacja nazwanego ziarna zwracajcego acuch, gdy zostanie wywoana
metoda getFullName(). W facelecie do metody tej naleaoby odnie si za pomoc nazwy
user.fullname.
<h:form id="user">
<p><h:outputText value="#{user.fullname}"/></p>
</h:form>
Kup ksik
Pole ksik
81
Kwalifikatory
W tym podrozdziale opisujemy sposoby tworzenia wasnych klas kwalifikatorw.
Na listingu 5.12 tworzymy kwalifikator o nazwie Mongo, przy uyciu ktrego mona dodawa
adnotacje do pl. Jeli chcesz zastosowa t adnotacj do metody, parametru lub klasy albo
interfejsu (typu), to moesz j doda do adnotacji @Target.
Listing 5.12. Tworzenie kwalifikatora o nazwie @Mongo
package com.devchronicale.di;
import static java.lang.annotation.ElementType. FIELD ;
import static java.lang.annotation.RetentionPolicy. RUNTIME ;
import j ava.lang.annotation.Retention;
import j ava.lang.annotation.Target;
import j avax. inj ect.Qualifier;
@Qualifier
@Retention(RUNTIME)
@Target({ FIELD} )
public @interface Mongo {}
Alternatywy
W przedstawionych przykadach pokazalimy, jak za pomoc kwalifikatorw odrni od siebie
dwie rne implementacje interfejsu UserDataRepository. Takich wyborw implementacji
dokonuje si z reguy w czasie pisania programu, wprowadzajc odpowiednie zmiany w kodzie.
Ale w razie potrzeby mona te zrobi to podczas wdraania programu za pomoc adnotacji
@Alternative i kilku linijek konfiguracji w deskryptorze wdroenia bean.xml.
Korzystajc z dotychczasowych przykadw, oznaczymy nasze dwie implementacje interfejsu
UserDataRepository adnotacj @Alternative oraz zdefiniujemy odpowiedni konfiguracj
Kup ksik
Pole ksik
82
Stereotypy
Stereotypy mona sobie wyobraa jako szablony definiujce cechy typu ziarna. Na przykad
ziarno wykorzystywane na poziomie modelu w aplikacji zbudowanej wedug wzorca
Model Widok Kontroler (MVC) do dziaania wymaga pewnych adnotacji. Mog to by np. te:
@Named
@RequestScoped
@Stereotype
@Target({TYPE, METHOD, FIELD})
@Retention(RUNTIME)
Kup ksik
Pole ksik
Podsumowanie
83
W rozdziale 11. znajduje si opis wzorca Obserwator i zdarze. Wzorzec ten zmienia kierunek
przepywu wiadomoci, czyli kolejno wywoujcego i wywoywanego. Przy uyciu tego wzorca
nie trzeba agresywnie sprawdza zasobu, tylko mona subskrybowa zmiany zachodzce w zasobie.
Wzorzec Obserwator w Javie EE wykorzystuje adnotacj @Observes i zdarzenia. Obserwatory
docelowe mog obserwowa wszystkie zdarzenia.
Tematem rozdziau 8. s aspekty i interceptory. Przy ich uyciu mona zmieni sposb
wykonywania kodu w czasie dziaania programu. Kady aspekt lub interceptor moe zatrzyma
wykonywanie i wczy si w wybranym miejscu. Umoliwia to dynamiczne wprowadzanie zmian
nawet w duych programach.
Podsumowanie
W tym rozdziale przedstawilimy techniki wstrzykiwania zalenoci w Javie EE. Koncepcja ta
umoliwia rozlunienie wizi midzy skadnikami systemu atwiej, ni mona by si byo spodziewa.
Pokazalimy, jak wstrzykiwanie zalenoci umoliwia pozbycie si sowa kluczowego new, a wic
uniknicie rcznego tworzenia obiektw.
Sporo miejsca powicilimy te technologii CDI, ktra dziki wykorzystaniu nowego kontenera
stwarza cakiem nowe moliwoci. Przy jej uyciu wstrzykiwanie zalenoci mona stosowa
do wszystkich obiektw, a implementacja innych wzorcw opisanych w tej ksice jest znacznie
atwiejsza.
WICZENIA
1.
2.
3.
Zaimplementuj obiekt odczytujcy jako acuch tre HTML z okrelonego na stae adresu URL.
4.
Zastanw si, co musisz zmieni w klasie usugowej, aby mc wstrzykiwa obu dostawcw
danych przy uyciu tej samej referencji.
5.
Kup ksik
Pole ksik
84
Kup ksik
Pole ksik
Skorowidz
A
abstrakcyjny dekorator, 107
adnotacja, 37
@DependsOn, 65
@GeneratedValue, 176
@Inject, 76, 79, 94
@Interceptor, 124
@Interceptors, 124
@Lock, 67
@MessageEvent, 166
@Named, 7680, 96, 207
@Observes, 166
@Path, 193
@Produce, 101
@RequestScope, 207
@Schedule, 150, 156
@Secure, 129
@Timeout, 151, 156
@Transient, 176
stereotypowa, 82
agencja informacyjna, 162
alternatywy, 81
antywzorce, 35, 220
AOP, aspect-oriented programming, 117
API JPA, 174
architektura
Lazani, 221
mikrousugowa, 215, 219
monolityczna, 215, 216, 220
wielowarstwowa, 38
Kup ksik
aspekty, 122
asynchroniczne
serwlety, 140
ziarna, 138
asynchroniczno, 133
B
baza danych typu NoSQL, 171
bezpieczestwo, 32
bezstanowo, 184
C
CDI, Context and Dependency Injection, 34, 43, 71, 77
CMP, Container-Managed Persistence, 174
cykl ycia interceptora, 125
czasomierz, 155
automatyczny, 150
programowy, 151
czas dostpu wspbienego, 68
D
DAO, data access object, 172
definicja filtru serwletu, 121
dekompozycja na usugi, 218
dekorator
BlackFridayDiscountDecorator, 111
dodajcy dodatki, 107
PriceDiscountDecorator, 110
dekoratory bez konfiguracji XML, 113
dekorowanie, 109
delegacja, 143
Pole ksik
E
EJB, 78
EJB, Enterprise JavaBeans, 41
EL, 80
encja, entity, 174
F
fabryka, 85
Abstrakcyjna, 85, 89
DAO, 177
facelety, 206
filtr serwletu, 120
format JSON, 191
G
gniazda sieciowe, 212
H
HATEOAS, 182, 194
I
idempotencja, 187
implementacja
@Secure, 129
AOP, 120
asynchronicznoci, 136
automatycznego czasomierza, 151
bezstanowej fasady, 54
CoffeMachine, 88
Kup ksik
Pole ksik
Skorowidz 233
J
J2EE, 31
Java SE, Java Standard Edition, 31
jednostka utrwalania, 178
JPA, Java Persistence API, 174
JPE, 31
JSF, 80
JSR, Java Specification Request, 41
K
klasa
akcji, 205
DrinksMachine, 88
encyjna, 175
fabryczna, 204
ListUserAction, 206
Observable, 164
User, 73
UserService, 7376, 203
UserServiceFactory, 74
klient-serwer, 183
kolejka, 214
kolejno
interceptorw, 126
uruchamiania, 65
komponent sieciowy, 40
konfiguracja serwletu facesservlet, 206
konteksty, 44, 77, 79
kontener CDI, 97, 101
kontroler, 200
konwencja, 43
kwalifikator, 81, 95
LongMessage, 94
niestandardowy, 112
ShortMessage, 94
Kup ksik
L
LDAP, Lightweight Directory Access Protocol, 171
litera adnotacyjny, 99
M
mapowanie obiektowo-relacyjne, ORM, 174
metoda
DELETE, 188
GET, 187
executeTask, 150
Fabryczna, 85, 86
GET, 194
getInfo, 150
getNextTimeout, 153
getThirdChild, 168
isCalendarTimer, 153
POST, 188, 194
PUT, 188
serviceTrace, 165
setRollbackOnly, 169
setTimer, 151
startAsync(), 141
startService, 165
metody HTTP, 187
mikrousugi, 219
model
dojrzaoci Richardsona, 185
komponentowy, 42
programowania J2EE, 227
modyfikowanie czasomierza, 155
MVC, model-view-controller, 199
MVP, model, view, presenter, 202
N
nazewnictwo, 80
nazewnictwo zasobw, 186
niejednoznaczno, 95
niestandardowa adnotacja wiadomoci, 99
niestandardowy typ adnotacji, 95
O
obiekt
dostpu do danych, DAO, 172
DTO, 173
JSON, 192
transferu danych, DTO, 172
Pole ksik
P
plik persistence.xml, 178
pliki EJB-JAR, 126
pobieranie informacji, 124
podczanie faz cyklu ycia, 125
podmiot, 160
POJO, 37
profil sieciowy Javy EE, 42
programowanie
aspektowe, AOP, 117
asynchroniczne, 133, 138
przekazywanie wiadomoci, 214
przenono, 32
publikacja-subskrypcja, 215
punkt
do punktu, 214
kocowy, 212
kocowy z adnotacjami, 213
R
repozytorium LDAP, 171
REST, 181, 182
bezstanowo, 184
jednolity interfejs, 184
klient-serwer, 183
kod na danie, 184
nazewnictwo zasobw, 186
posts, 189
system warstwowy, 184
topics, 189
users, 188
zapisywanie danych w buforze, 184
REST-owy interfejs API, 185, 188
rozrnianie ziaren, 96
Kup ksik
rozstrzyganie
niejednoznacznoci, 95, 96
wieloznacznoci, 77
rozwizania dla biznesu, 31
S
schemat implementacji MVC, 202
serwer Java EE, 41
serwlet, 140
serwlet FacesServlet, 206
skalowalno, 217
SOA, Service Oriented Architecture, 33, 215, 228
stereotypy, 82
synchronizacja singletonu, 60
system szkieletowy, 222
szecian AKF, 217
T
technika CDI, 77
technologia J2EE, 32
tematy, topics, 189, 214
transakcje, 32, 156
tworzenie
obiektu singletonowego, 60, 61
uytkownika, 189
typ wyliczeniowy, 62
typy wzorca MVC, 201
U
Uberklasa, 220
users, 188
usuga odmierzania czasu, 147
usugi sieciowe, 181
uytkownicy, users, 188
uywanie
interceptorw, 130
programowania asynchronicznego, 143
REST, 196
wzorca DAO, 180
wzorca Dekorator, 114
wzorca Fasada, 55
wzorca MVC, 208
wzorca Obserwator, 169
wzorca Singleton, 69
wzorcw, 227
wzorcw fabrycznych, 100
Pole ksik
Skorowidz 235
W
warstwa
EIS, 40
kliencka, 39
logiki biznesowej, 40
porednia, 214
warunki REST, 183
wizanie interceptora, 129
widok, 200
widok renderujcy dane, 208
wpisy, posts, 189
wspbieno, 67
wstrzykiwanie
acucha, 92
zalenoci, 44, 77
zalenoci, DI, 71
ziaren, 94, 96
wyjtek IndexOutOfBounds, 168
wykorzystywanie singletonw, 64
wykrywanie ziaren, 79
wyczanie interceptorw, 128
wyraenia
czasowe, 153
kalendarzowe, 154
wywoywanie singletonu, 64
wzorce
behawioralne, 30
biznesowe, 33
konstrukcyjne, 30
strukturalne, 30
zwizane z CDI, 82
Kup ksik
wzorzec
Asynchroniczno, 134
Dekorator, 103
Dostp do Danych, 171, 172
Fabryka, 85
Fasada, 49
Model Widok Kontroler, 199
MVC, 200
Obiekt Transferu Danych, 173
Obserwator, 159
projektowy, 28
Singleton, 57
Z
zakres, 79
zalety architektury mikrousugowej, 218
zarzdzanie wspbienoci, 67
zasada Hollywood, 160
zasady Javy EE, 42
zdarzenie transakcji, 167
ziarna
asynchroniczne, 138
bezstanowe, 53
CDI, 78, 80
obserwatora, 165
singletonowe, 63
stanowe, 55
usugowe, 164
wiadomoci, 93
wspierajce, 206
ziarno, 38
encyjne, entity bean, 174
MessageA, 92
MessageB, 93
Pole ksik
Kup ksik
Pole ksik