Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
01517 015126 17019518 na godz. na dobę w sumie
Java EE 6. Leksykon kieszonkowy - książka
Java EE 6. Leksykon kieszonkowy - książka
Autor: Liczba stron: 184
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-6640-9 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> j2ee - programowanie
Porównaj ceny (książka, ebook, audiobook).

Korporacyjna wersja Javy (JEE, od ang. Java Enterprise Edition) święci triumfy. Najświeższa odsłona tego języka, oznaczona numerem 6, rozwiązuje problemy znane z poprzednich wersji oraz wprowadza wiele nowości i ulepszeń. Dzięki tym zmianom praca programistów stała się tak przyjemna i wydajna, jak nigdy przedtem. Przejrzyste API, wstrzykiwanie zależności (CDI) oraz dobre wsparcie dla usług sieciowych i formatu REST (JAX-RS) to tylko niektóre z atutów JEE6.

Ten wyjątkowo poręczny leksykon dostarczy Ci garść najważniejszych informacji o JEE6, które zawsze możesz mieć pod ręką. W trakcie lektury dowiesz się, jak nowe elementy platformy wpływają na znane wzorce projektowe i jak korzystać z Java Persistence API (JPA). Poznasz także charakterystykę każdego rodzaju ziarna Enterprise JavaBeans (EJB). Ponadto nauczysz się tworzyć usługi sieciowe w oparciu o protokół SOAP i REST oraz korzystać z usług rozsyłających wiadomości (JMS). Na sam koniec zobaczysz, jak zapewnić integralność Twoim danym z wykorzystaniem BeanValidation (JSR-303).

Obowiązkowa pozycja dla każdego programisty JEE6. Jeszcze nigdy tak szeroki zbiór informacji nie był dostępny w równie poręcznej formie. Musisz go mieć!

Sprawdź:

Wykorzystaj potencjał korporacyjnej wersji języka Java!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Java EE 6 Pocket Guide Tłumaczenie: Mikołaj Szczepaniak ISBN: 978-83-246-6640-9 © 2013 Helion S.A. Authorized Polish translation of the English edition Java EE 6 Pocket Guide, ISBN 9781449336684, © 2012 Arun Gupta. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/jee6lk Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treļci Sĥowo wstýpne 1. Java Platform, Enterprise Edition Wprowadzenie Elementy skäadowe Co nowego w wersji Java EE 6 2. Komponenty zarzédzane Definiowanie i stosowanie komponentów zarzñdzanych Wywoäania zwrotne cyklu Ĕycia 3. Serwlety Serwlety Filtry serwletów Obiekty nasäuchujñce zdarzeþ Obsäuga operacji asynchronicznych Fragmenty konfiguracji Bezpieczeþstwo Pakowanie zasobów Odwzorowywanie bäödów Obsäuga Ĕñdaþ wieloczöĈciowych 4. Java Persistence API Encje Jednostka utrwalania, kontekst utrwalania i menedĔer encji Tworzenie, odczytywanie, aktualizowanie i usuwanie encji Sprawdzanie poprawnoĈci encji Transakcje i blokowanie Buforowanie 9 12 12 15 19 23 23 25 26 26 32 33 37 39 40 43 44 44 46 46 50 52 56 58 60 Spis treļci _ 5 5. Enterprise JavaBeans Stanowe komponenty sesyjne Bezstanowe komponenty sesyjne Singletonowe komponenty sesyjne Komponenty sterowane komunikatami PrzenoĈne, globalne nazwy JNDI Transakcje Przetwarzanie asynchroniczne Liczniki czasu Interfejs Embeddable API EJB.Lite 6. Konteksty i wstrzykiwanie zaleŜnoļci Punkty wstrzykiwania Kwalifikator i alternatywa Producent i dyspozytor Obiekty przechwytujñce i dekoratory Zasiögi i konteksty Stereotypy Zdarzenia PrzenoĈne rozszerzenia 7. JavaServer Faces Facelety Obsäuga zasobów Komponenty zäoĔone Ajax ēñdanie HTTP GET Punkty rozszerzeþ serwera i klienta Reguäy nawigacji 8. Usĥugi sieciowe na bazie protokoĥu SOAP Punkty koþcowe usäug sieciowych Dynamiczne punkty koþcowe na bazie interfejsu Provider Punkty koþcowe na bazie interfejsu Endpoint Klient usäugi sieciowej Dynamiczny klient na bazie interfejsu Dispatch Obiekty obsäugujñce 6 _ Spis treļci 62 62 65 66 68 70 71 74 75 79 80 82 83 84 86 88 92 94 95 97 100 101 105 105 109 113 115 118 119 121 124 125 127 129 131 9. Usĥugi sieciowe zgodne ze stylem REST Proste usäugi sieciowe zgodne z REST Wiñzanie metod protokoäu HTTP Wiele reprezentacji jednego zasobu Wiñzanie Ĕñdania z zasobem Odwzorowywanie wyjñtków 10. Java Message Service Wysyäanie wiadomoĈci JakoĈè usäugi Synchroniczne odbieranie komunikatu Asynchroniczne odbieranie komunikatu Tymczasowe miejsca docelowe 11. Bean Validation Ograniczenia wbudowane Definiowanie niestandardowych ograniczeþ Grupy sprawdzania poprawnoĈci Integracja z technologiñ JPA Integracja z frameworkiem JSF A Programowanie i wdraŜanie aplikacji platformy Java EE 6 — pierwsze kroki B Dodatkowe materiaĥy Specyfikacje technologii internetowych Specyfikacje technologii korporacyjnych Technologie usäug sieciowych Technologie zarzñdzania i zabezpieczeþ Skorowidz O autorze Kolofon 134 135 137 140 141 143 144 147 149 150 152 153 154 154 158 162 164 166 168 170 170 170 171 171 173 183 184 Spis treļci _ 7 8 _ Spis treļci Rozdziaĥ 7. JavaServer Faces Technologiö JavaServer Faces (JSF) zdefiniowano w dokumencie JSR 314. Kompletnñ specyfikacjö tej technologii moĔna pobraè ze strony internetowej http://jcp.org/aboutJava/communityprocess/final/jsr314/index.html. JavaServer Faces jest frameworkiem interfejsu uĔytkownika dziaäajñcym po stronie serwera i stworzonym z myĈlñ o aplikacjach internetowych na bazie Javy. Framework JSF umoĔliwia miödzy innymi: x tworzenie stron internetowych przy uĔyciu zbioru komponentów interfejsu uĔytkownika wielokrotnego uĔytku, zgodnie ze wzorcem projektowym model-widok-kontroler (ang. Model-View-Controller — MVC); x wiñzanie komponentów z modelem po stronie serwera (dziöki temu jest moĔliwa dwukierunkowa migracja danych aplikacji i interfejsu uĔytkownika); x obsäugö nawigacji pomiödzy stronami w odpowiedzi na zdarzenia interfejsu uĔytkownika i interakcje z modelem; x zarzñdzanie stanem komponentów interfejsu uĔytkownika po- miödzy Ĕñdaniami serwera; x udostöpnianie prostego modelu kojarzenia zdarzeþ generowanych przez klienta z kodem wykonywanym po stronie aplikacji; x äatwñ budowö i wielokrotne stosowanie niestandardowych kom- ponentów interfejsu uĔytkownika. Aplikacja JSF skäada siö z nastöpujñcych elementów: x zbioru stron internetowych, na których umieszczono komponenty interfejsu uĔytkownika; x zbioru komponentów zarzñdzanych; jeden zbiór takich kom- ponentów wiñĔe komponenty interfejsu uĔytkownika z modelem po stronie serwera (który zwykle skäada siö z komponentów CDI lub komponentów zarzñdzanych), drugi zbiór peäni funkcjö kontro- lera (na kontroler skäadajñ siö zwykle komponenty EJB lub CDI); x opcjonalnego deskryptora wdroĔenia (pliku web.xml); x opcjonalnego pliku konfiguracyjnego faces-config.xml; x opcjonalnego zbioru obiektów niestandardowych, jak konwertery czy obiekty nasäuchujñce, utworzonych przez programistö aplikacji. 100 _ Java EE 6. Leksykon kieszonkowy Facelety Facelety to jözyk deklarowania widoków (nazywany teĔ mechani- zmem obsäugi widoków) stworzony z myĈlñ o frameworku JSF. Facelety majñ zastñpiè technologiö JSP, której obsäugö zachowano wyäñcznie z myĈlñ o zapewnieniu zgodnoĈci wstecz. Nowe elementy wprowadzone w drugiej wersji specyfikacji JSF, w tym komponenty zäoĔone i obsäuga technologii Ajax, sñ dostöpne tylko dla autorów stron stosujñcych face- lety. Do najwaĔniejszych zalet faceletów naleĔñ rozbudowany system szablonów, äatwoĈè tworzenia i moĔliwoĈè wielokrotnego stosowania komponentów, lepszy system raportowania o bäödach (z uwzglödnie- niem numerów wierszy) oraz struktura stworzona z myĈlñ o wygodzie projektantów. Strony faceletów sñ tworzone przy uĔyciu znaczników jözyka XHTML 1.0 i elementów kaskadowych arkuszy stylów (ang. Cascading Style Sheets — CSS). Dokument XHTML 1.0 jest täumaczony na jözyk HTML 4 zgodnie z reguäami standardu XML 1.0. Strona musi byè zgodna ze spe- cyfikacjñ XHTML-1.0-Transitional DTD (patrz strona http://www.w3.org/ TR/xhtml1/#a_dtd_XHTML-1.0-Transitional). Proste strony faceletów moĔna definiowaè, stosujñc elementy jözyka XHTML: ?xml version= 1.0 encoding= UTF-8 ? !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd html xmlns= http://www.w3.org/1999/xhtml xmlns:h= http://java.sun.com/jsf/html h:head title Tytuï strony zbudowanej przy uĝyciu faceletów /title /h:head h:body Witaj w Ăwiecie faceletów. /h:body /html W powyĔszym kodzie po prologu XML-a nastöpuje deklaracja typu dokumentu (DTD). Gäównym elementem strony jest html, czyli element naleĔñcy do przestrzeni nazw http://www.w3.org/1999/xhtml. Przestrzeþ nazw jözyka XML jest deklarowana dla konkretnej biblioteki znaczników uĔywanej w kodzie danej strony. Komponenty moĔna dodawaè za po- mocñ znaczników faceletów (rozpoczynajñcych siö od przedrostka h:) oraz za pomocñ znaczników jözyka HTML. Standardowy zbiór bibliotek znaczników obsäugiwanych przez facelety opisano w tabeli 7.1. Rozdziaĥ 7. JavaServer Faces _ 101 Tabela 7.1. Standardowy zbiór bibliotek znaczników obsäugiwanych przez facelety Przedrostek h f c fn ui URI http://java.sun.com/jsf/html http://java.sun.com/jsf/core http://java.sun.com/jsp/jstl/core http://java.sun.com/jsp/jstl/functions http://java.sun.com/jsf/facelets Przykĥady h:head, h:inputText f:facet, f:actionListener c:forEach, c:if fn:toUpperCase, fn:contains ui:component, ui:insert Konwencja nakazuje stosowanie rozszerzenia .xhtml dla stron interne- towych tworzonych w jözyku XHTML. Facelety oferujñ integracjö z jözykiem wyraĔeþ EL (od ang. Expression Language). Dziöki temu moĔemy stosowaè dwukierunkowe powiñzania äñczñce wewnötrzne komponenty z interfejsem uĔytkownika aplikacji: Witaj w Ăwiecie faceletów, mam na imiÚ #{name.value}! W powyĔszym kodzie #{name} jest wyraĔeniem jözyka EL odwoäujñcym siö do pola komponentu CDI o zasiögu Ĕñdania: @Named @RequestScoped public class Name { private String value; // ... } W komponencie CDI naleĔy uĔyè adnotacji @Named, aby umoĔliwiè wstrzykiwanie tego komponentu do wyraĔeþ jözyka EL. Zaleca siö stosowanie komponentów zgodnych ze specyfikacjñ CDI zamiast kom- ponentów oznaczonych adnotacjñ @javax.faces.bean.ManagedBean. Podobnie, do wyraĔenia jözyka EL moĔna wstrzyknñè komponent EJB: @Stateless @Named public class CustomerSessionBean { public List Name getCustomerNames() { // ... } } W powyĔszym kodzie zdefiniowano bezstanowy komponent sesyjny z pojedynczñ metodñ biznesowñ zwracajñcñ listö nazwisk klientów. Adnotacja @Named oznacza ten komponent jako przeznaczony do wstrzyk- niöcia w wyraĔeniu jözyka EL. Komponent moĔna teraz zastosowaè w wyraĔeniu EL faceletów: 102 _ Java EE 6. Leksykon kieszonkowy h:dataTable value= #{customerSessionBean.customerNames} var= c h:column #{c.value} /h:column /h:dataTable W powyĔszym kodzie zwrócona lista nazwisk klientów jest wyĈwietlana w tabeli. Warto zwróciè uwagö na metodö getCustomerNames, która jest dostöpna jako wäaĈciwoĈè w wyraĔeniu jözyka EL. Facelety oferujñ teĔ mechanizmy sprawdzania poprawnoĈci wyraĔeþ EL w czasie kompilacji. Co wiöcej, facelety oferujñ rozbudowany system szablonów, który umoĔliwia zachowywanie spójnego wyglñdu i dziaäania wszystkich stron aplikacji internetowej. Stronö bazowñ (okreĈlanñ mianem szablonu) moĔna utworzyè za pomocñ znaczników szablonowych faceletów. Strona bazowa definiuje domyĈlnñ strukturö wäaĈciwych stron, w tym miejsca dla treĈci, która bödzie definiowana przy uĔyciu danego szablonu. Strony klienckie, które korzystajñ z tego szablonu, przekazujñ wäaĈciwñ treĈè do miejsc zdefiniowanych przez ten szablon. W tabeli 7.2 opisano kilka najczöĈciej stosowanych znaczników szablo- nów i stron klienckich szablonów. Tabela 7.2. Popularne znaczniki faceletów i szablonów Znacznik ui:composition ui:insert ui:define ui:component ui:fragment ui:include Opis Definiuje ukĥad strony, który moŜe obejmowaë szablon. W przypadku zastosowania atrybutu template znaczniki potomne tego znacznika definiujé ukĥad szablonu. W przeciwnym razie znacznik zawiera grupý elementów, czyli strukturý zĥoŜoné, któré moŜna wstawië w dowolnym miejscu kodu. Treļë spoza tego znacznika jest ignorowana. Znacznik stosowany na stronach szablonowych sĥuŜy do definiowania obszaru wstawiania wĥaļciwej treļci w szablonie. Odpowiedni znacznik ui:define w kodzie strony klienckiej szablonu umoŜliwia zastépienie treļci. Znacznik uŜywany w kodzie strony klienckiej szablonu. Definiuje treļë wstawiané w miejscu wyznaczonym przez szablon (za pomocé odpowiedniego znacznika ui:insert). Umieszcza w drzewie komponentów JSF nowy komponent interfejsu uŜytkownika. Komponenty i fragmenty treļci spoza tego znacznika sé ignorowane. Znaczenie tego znacznika jest podobne jak w przypadku ui:component, tyle Ŝe treļë spoza tego znacznika nie jest ignorowana. Doĥécza dokument wskazywany przez atrybut src (doĥéczony dokument staje siý czýļcié bieŜécej strony na bazie faceletów). Rozdziaĥ 7. JavaServer Faces _ 103 Strona szablonu moĔe mieè nastöpujñcñ postaè: h:body div id= top ui:insert name= top h1 Facelety sÈ super! /h1 /ui:insert /div div id= content class= center_content ui:insert name= content TreĂÊ /ui:insert /div div id= bottom ui:insert name= bottom center Powered by GlassFish /center /ui:insert /div /h:body W powyĔszym kodzie struktura zostaäa zdefiniowana za pomocñ ele- mentu div i arkusza stylów CSS (listing nie zawiera definicji stylów). Znacznik ui:insert definiuje treĈè, która zostanie zastñpiona przez stronö klienckñ szablonu. PoniĔej pokazano kod strony klienckiej tego szablonu: html xmlns= http://www.w3.org/1999/xhtml xmlns:ui= http://java.sun.com/jsf/facelets xmlns:h= http://java.sun.com/jsf/html body ui:composition template= ./template.xhtml ui:define name= content h:dataTable value= #{customerSessionBean.customerNames} var= c h:column #{c.value} /h:column /h:dataTable /ui:define /ui:composition /body /html W powyĔszym kodzie nie zdefiniowano znaczników ui:insert nazwa- nych top i bottom, zatem w odpowiednich sekcjach zostanñ uĔyte zapisy strony szablonowej. Strona kliencka zawiera element ui:define z nazwñ pasujñcñ do elementu ui:insert w szablonie, zatem w tym przypadku treĈè zostanie prawidäowo zastñpiona. 104 _ Java EE 6. Leksykon kieszonkowy Obsĥuga zasobów Framework JSF definiuje standardowy mechanizm obsäugi takich zaso- bów jak obrazy, arkusze stylów CSS czy skrypty jözyka JavaScript. Wy- mienione zasoby sñ niezbödne do prawidäowego wyĈwietlania kom- ponentów. Zasoby tego typu moĔna umieszczaè w katalogu /resources aplikacji internetowej lub w katalogu META-INF/resources w ĈcieĔce do klas. Zasoby moĔna dzieliè wedäug wersji jözykowych i wedäug numerów wydaþ oraz gromadziè w wiökszych bibliotekach. Odwoäanie do zasobu moĔna zapisaè w formie wyraĔenia jözyka EL: a href= #{resource[ header.jpg ]} kliknij tutaj /a W tym przykäadzie plik graficzny header.jpg zostaä umieszczony w stan- dardowym katalogu zasobów. JeĈli zasób znajduje siö w folderze corp (czyli w folderze zasobów biblio- teki), dostöp do tego zasobu moĔna uzyskaè za pomocñ atrybutu library: h:graphicImage library= corp name= header.jpg / Skrypt jözyka JavaScript moĔna doäñczyè w nastöpujñcy sposób: h:outputScript name= myScript.js library= scripts target= head / W tym przykäadzie plik myScript.js jest zasobem jözyka JavaScript umiesz- czonym w katalogu scripts w standardowym folderze zasobów. Arkusz stylów CSS moĔna doäñczyè w nastöpujñcy sposób: h:outputStylesheet name= myCSS.css library= css / Interfejs API ResourceHandler dodatkowo oferuje programowe mechani- zmy obsäugi zasobów. Komponenty zĥoŜone Framework JSF definiuje komponent zäoĔony jako taki, który skäada siö z co najmniej jednego komponentu JSF opisanego w pliku znaczników faceletów. Odpowiedni plik .xhtml naleĔy umieĈciè w bibliotece zaso- bów. Takie rozwiñzanie umoĔliwia tworzenie komponentów wielo- krotnego uĔytku na podstawie dowolnego fragmentu strony. Rozdziaĥ 7. JavaServer Faces _ 105 Definiowanie komponentu kompozytowego polega na definiowaniu strony, natomiast stosowanie tego komponentu sprowadza siö do stoso- wania strony. Strona definiujñca komponent zawiera metadane (para- metry) opisane w znaczniku cc:interface oraz wäaĈciwñ implementacjö w znaczniku cc:implementation , gdzie cc jest przedrostkiem dla prze- strzeni nazw http://java.sun.com/jsf/composite/. Wymagania dotyczñce definiowania metadanych byè moĔe zostanñ zäagodzone w przyszäych wersjach specyfikacji JSF — niezbödne informacje bödzie wówczas moĔna umieszczaè w samej implementacji. Komponent kompozytowy moĔna zdefiniowaè takĔe przy uĔyciu ele- mentów frameworku JSF 1.2, jednak budowa komponentów w ten sposób wymaga dobrej znajomoĈci cyklu Ĕycia JSF i odpowiedniego przygoto- wania wielu plików. Framework JSF2 znacznie upraszcza konstruowanie komponentów zäoĔonych wyäñcznie na poziomie plików jözyka XHTML. PrzypuĈèmy, Ĕe przykäadowy facelet zawiera nastöpujñcy fragment kodu odpowiedzialny za wyĈwietlanie formularza logowania: h:form h:panelGrid columns= 3 h:outputText value= Nazwa: / h:inputText value= #{user.name} id= name / h:message for= name style= color: red / h:outputText value= Hasïo: / h:inputText value= #{user.password} id= password / h:message for= password style= color: red / /h:panelGrid h:commandButton actionListener= #{userService.register} id= loginButton action= status value= WyĂlij / /h:form PowyĔszy kod wyĈwietla tabelö zäoĔonñ z dwóch wierszy i trzech ko- lumn (patrz rysunek 7.1). Rysunek 7.1. Strona faceletów JSF wyĈwietlona w oknie przeglñdarki internetowej 106 _ Java EE 6. Leksykon kieszonkowy Pierwsza kolumna zawiera etykiety pól formularza; druga kolumna zawiera pola tekstowe, w których uĔytkownik powinien wpisaè dane uwierzytelniajñce. Trzecia kolumna (która poczñtkowo jest pusta) säuĔy do wyĈwietlania komunikatów zwiñzanych z wartoĈciami w odpo- wiednich polach. Pierwszy wiersz kojarzy pole tekstowe formularza z polem User.name; drugi wiersz kojarzy pole tekstowe formularza z po- lem User.password. Formularz zawiera teĔ przycisk polecenia, którego klikniöcie powoduje wywoäanie metody register komponentu UserService. Tak skonstruowany formularz logowania moĔna wyĈwietlaè na wielu stronach. Okazuje siö jednak, Ĕe nie musimy za kaĔdym razem powta- rzaè tego kodu — wystarczy przeksztaäciè ten fragment w komponent zäoĔony. W tym celu interesujñcy nas fragment naleĔy skopiowaè do pliku .xhtml, a sam plik naleĔy skopiowaè do biblioteki w standardo- wym katalogu zasobów. Zgodnie z zasadñ konwencji ponad konfiguracjñ do wspomnianego fragmentu automatycznie zostanie przypisana prze- strzeþ nazw i nazwa znacznika. JeĈli pokazany wczeĈniej fragment zostanie skopiowany do pliku login. xhtml w katalogu resources/mycomp, strona definiujñca bödzie miaäa na- stöpujñcñ postaè: ?xml version= 1.0 encoding= UTF-8 ? !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd html xmlns= http://www.w3.org/1999/xhtml xmlns:cc= http://java.sun.com/jsf/composite xmlns:h= http://java.sun.com/jsf/html !-- INTERFEJS -- cc:interface /cc:interface !-- IMPLEMENTACJA -- cc:implementation h:form h:panelGrid columns= 3 h:outputText value= Nazwa: / h:inputText value= #{user.name} id= name / !-- . . . -- /h:form /cc:implementation /html W tym kodzie element cc:interface definiuje metadane, które z kolei opisujñ cechy komponentu (w tym atrybuty, fasety, punkty wiñzania z metodami nasäuchujñcymi zdarzeþ). Element cc:implementation zawiera kod jözyka znaczników wstawiany w miejsce komponentu zäoĔonego. Rozdziaĥ 7. JavaServer Faces _ 107 Przestrzeþ nazw komponentu zäoĔonego jest konstruowana przez kon- katenacjö adresu http://java.sun.com/jsf/composite/ i nazwy mycomp. Nazwa znacznika jest tworzona na podstawie nazwy pliku strony (bez rozsze- rzenia .xhtml): html xmlns= http://www.w3.org/1999/xhtml xmlns:mc= http://java.sun.com/jsf/composite/mycomp !-- . . . -- mc:login/ /html PrzypuĈèmy, Ĕe fragment kodu musi przekazywaè róĔne wyraĔenia (zamiast stosowanego wczeĈniej wyraĔenia #{user.name}) i wywoäywaè róĔne metody (zamiast wywoäywanej do tej pory metody #{userService. ´register}) w zaleĔnoĈci o strony, na której umieszczono komponent zäoĔony. Odpowiednie wartoĈci mogñ byè przekazywane przez stronö definiujñcñ: !-- INTERFEJS -- cc:interface cc:attribute name= name / cc:attribute name= password / cc:attribute name= actionListener method-signature= void action(javax.faces.event.Event) targets= ccForm:loginButton / /cc:interface !-- IMPLEMENTACJA -- cc:implementation h:form id= ccForm h:panelGrid columns= 3 h:outputText value= Nazwa: / h:inputText value= #{cc.attrs.name} id= name / h:message for= name style= color: red / h:outputText value= Hasïo: / h:inputText value= #{cc.attrs.password} id= password / h:message for= password style= color: red / /h:panelGrid h:commandButton id= loginButton action= status value= submit / /h:form /cc:implementation W tym kodzie wszystkie parametry dla jasnoĈci wymieniono w elemen- cie cc:interface. Trzeci parametr zawiera atrybut odwoäujñcy siö do pola ccForm:loginButton. 108 _ Java EE 6. Leksykon kieszonkowy NajwaĔniejsze cechy elementu cc:implementation: x Element h:form zawiera atrybut id. Atrybut id jest niezbödny, jeĈli przycisk formularza ma byè przedmiotem bezpoĈrednich odwoäaþ. x Element h:inputText uĔywa teraz wyraĔenia #{cc.attrs.xxx} (za- miast stosowanego wczeĈniej wyraĔenia #{user.xxx}). #{cc.attrs} jest domyĈlnym wyraĔeniem jözyka EL stosowanym przez auto- rów komponentów kompozytowych i umoĔliwiajñcym dostöp do atrybutów bieĔñcego komponentu. W tym przypadku #{cc.attrs} zapewnia dostöp do atrybutów name i password. x actionListener jest punktem dowiñzania metody nasäuchujñcej zda- rzeþ. W tym przypadku zastosowano atrybut method-signature opi- sujñcy sygnaturö odpowiedniej metody. x Element h:commandButton zawiera atrybut id, dziöki czemu moĔe byè jednoznacznie identyfikowany w ramach elementu h:form. W kodzie strony korzystajñcej z komponentu wartoĈci user, password i actionListener sñ przekazywane w formie wymaganych atrybutów: ez:login name= #{user.name} password= #{user.password} actionListener= #{userService.register} / Strona korzystajñca z tego komponentu moĔe teraz przekazywaè róĔne komponenty wewnötrzne, a zdarzenie naciĈniöcie przycisku wysäania formularza bödzie powodowaäo wywoäania róĔnych metod biznesowych. W najwiökszym skrócie komponenty zäoĔone majñ nastöpujñce zalety: x Koncepcja tych komponentów jest w peäni zgodna z zasadñ uni- kania powtórzeþ (DRY), poniewaĔ umoĔliwia umieszczenie w jed- nym miejscu (pliku) kodu wielokrotnie stosowanego na róĔnych stronach. x UmoĔliwia programistom tworzenie nowych komponentów bez koniecznoĈci pisania kodu Javy ani przygotowywania konfiguracji w formacie XML. Ajax Framework JSF oferuje wbudowane mechanizmy obsäugi elementów technologii Ajax na stronach internetowych. Dziöki temu istnieje moĔli- woĈè czöĈciowego przetwarzania widoków — w takim przypadku Rozdziaĥ 7. JavaServer Faces _ 109 tylko niektóre komponenty widoku sñ uĔywane do wygenerowania odpowiedzi. ēñdania Ajax umoĔliwiajñ takĔe czöĈciowe wyĈwietlanie strony (wyĈwietlanie wybranych komponentów zamiast caäej strony). Obsäugö technologii Ajax moĔna wäñczyè na dwa sposoby: x programowo (przy uĔyciu zasobów jözyka JavaScript); x deklaratywnie (za pomocñ elementu f:ajax). Programowa integracja z technologiñ Ajax jest moĔliwa dziöki mechani- zmowi obsäugi zasobów. Plik jsf.js jest predefiniowanym zasobem w ramach biblioteki javax.faces. Wspomniany zasób zawiera interfejs API JavaScriptu, który znacznie upraszcza interakcjö stron JSF z tech- nologiñ Ajax. Elementy tego interfejsu moĔna udostöpniè w kodzie stron za pomocñ znacznika outputScript: h:body !-- . . . -- h:outputScript name= jsf.js library= javax.faces target= body / !-- . . . -- /h:body Do wysyäania na serwer asynchronicznych Ĕñdaþ moĔna uĔyè kodu w tej formie: h:form prependId= false h:inputText value= #{user.name} id= name / h:inputText value= #{user.password} id= password / h:commandButton value= Login type= button actionListener= #{user.login} onclick= jsf.ajax.request(this, event, {execute: name password , render: status }); return false; / h:outputText value= #{user.status} id= status / /h:form W powyĔszym kodzie: x Dwa pierwsze pola tekstowe säuĔñ do wpisywania nazwy uĔyt- kownika i hasäa; trzecie pole odpowiada za wyĈwietlanie statusu (w tym przypadku informacji, czy uĔytkownik jest zalogowany). x Atrybutowi prependId znacznika formularza przypisano wartoĈè false, aby zagwarantowaè, Ĕe identyfikatory poszczególnych ele- mentów zostanñ zachowane w oryginalnej formie. W przeciwnym razie framework JSF poprzedziäby identyfikatory elementów po- tomnych identyfikatorem samego formularza. 110 _ Java EE 6. Leksykon kieszonkowy x Przycisk polecenia zawiera atrybut actionListener identyfikujñcy metodö klasy komponentu, która ma byè wywoäywana w odpo- wiedzi na zdarzenia klikniöcia tego przycisku. Zamiast oczekiwaè typowej odpowiedzi powodujñcej wygenerowanie i wyĈwietlenie innej strony, funkcja jsf.ajax.request powoduje wysäanie asyn- chronicznego Ĕñdania na serwer. ēñdanie jest tworzone w odpo- wiedzi na zdarzenie onclick (klikniöcia) przycisku polecenia. Po säowach execute i render przekazano identyfikatory komponentów oddzielone spacjami. Säowo execute poprzedza listö komponentów wejĈciowych, dla których zostanñ wywoäane metody ustawiajñce klasy komponentu; po säowie render przekazano listö komponen- tów, które naleĔy wyĈwietliè po otrzymaniu asynchronicznej odpowiedzi. MoĔliwoĈè przetwarzania tylko czöĈci widoku (w tym przypadku elementów name i password) okreĈla siö mianem czöĈciowego przetwarzania widoku (ang. partial view processing). Podobnie, wyĈwietlanie tylko czöĈci strony wynikowej (w tym przypadku tylko elementu status) okreĈla siö mianem czöĈciowego wyĈwietla- nia wyniku (ang. partial output rendering). Obsäugiwane wartoĈci atrybutu render opisano w tabeli 7.3. Tabela 7.3. WartoĈci atrybutu render znacznika f:ajax Wartoļë @all @none @this @form Identyfikatory WyraŜenie EL Opis Wszystkie komponenty na danej stronie śaden z komponentów na stronie (@none jest wartoļcié domyļlné) Element, który spowodowaĥ dane Ŝédanie Wszystkie komponenty naleŜéce do danego formularza Identyfikatory komponentów oddzielone spacjami WyraŜenie jýzyka EL, które po przetworzeniu reprezentuje kolekcjý ĥaħcuchów Atrybutowi execute moĔna przypisaè podobny zbiór wartoĈci, jednak w jego przypadku wartoĈciñ domyĈlnñ jest @this. x Komponent User zawiera pola, metody ustawiajñce i zwracajñce oraz prostñ metodö biznesowñ: @Named @SessionScoped public class User implements Serializable { private String name; private String password; Rozdziaĥ 7. JavaServer Faces _ 111 private String status; . . . public void login(ActionEvent evt) { if (name.equals(password)) status = Prawidïowe logowanie ; else status = Nieudane logowanie ; } } Warto zwróciè uwagö na sygnaturö metody login. Metoda musi zwracaè typ void i otrzymywaè na wejĈciu (za poĈrednictwem jedynego parametru) obiekt klasy javax.faces.event.ActionEvent. Deklaratywna integracja z technologiñ Ajax jest moĔliwa dziöki ele- mentowi f:ajax. Znacznik f:ajax moĔna albo umieĈciè wewnñtrz kom- ponentu (dziöki temu asynchroniczne Ĕñdania Ajax bödñ stosowane tylko dla tego komponentu), albo wykorzystaè do opakowania wielu komponentów (wówczas Ĕñdania Ajax bödñ stosowane dla tych kom- ponentów). Aby zastosowaè ten styl integracji z technologiñ Ajax, poprzedni przy- käad kodu naleĔaäoby przebudowaè w ten sposób: h:form prependId= false h:inputText value= #{user.name} id= name / h:inputText value= #{user.password} id= password / h:commandButton value= Login type= button actionListener= #{user.login} f:ajax execute= name password render= status / /h:commandButton h:outputText value= #{user.status} id= status / /h:form W tym kodzie uĔyto znacznika f:ajax do zdefiniowania listy elementów wejĈciowych (za pomocñ atrybutu execute) oraz elementów wyjĈciowych do wyĈwietlenia (za pomocñ atrybutu render). JeĈli znacznik f:ajax jest zagnieĔdĔony w ramach pojedynczego komponentu i jeĈli nie wskazano Ĕadnego zdarzenia, asynchroniczne Ĕñdanie jest generowane w odpo- wiedzi na domyĈlne zdarzenie komponentu macierzystego (w przypadku przycisku polecenia takim zdarzeniem jest onclick). 112 _ Java EE 6. Leksykon kieszonkowy Znacznik f:ajax moĔna stosowaè takĔe dla wielu komponentów: f:ajax listener= #{user.checkFormat} h:inputText value= #{user.name} id= name / h:inputText value= #{user.password} id= password / /f:ajax Tym razem w znaczniku f:ajax zdefiniowano atrybut listener wska- zujñcy odpowiedniñ metodö Javy: public void checkFormat(AjaxBehaviorEvent evt) { // ... } Metoda nasäuchujñca jest wywoäywana dla domyĈlnego zdarzenia ele- mentów potomnych (w przypadku elementu h:inputText bödzie to zda- rzenie valueChange). Dodatkowe mechanizmy na bazie technologii Ajax moĔna wskazaè takĔe dla elementów potomnych — wystarczy uĔyè zagnieĔdĔonych znaczników f:ajax. śédanie HTTP GET Framework JSF oferuje obsäugö odwzorowywania parametrów Ĕñdania GET protokoäu HTTP (zawartych w adresie URL) na wyraĔenia jözyka EL. JSF umoĔliwia teĔ generowanie adresów URL przystosowanych do Ĕñdaþ GET. Parametry widoku mogñ byè uĔywane do odwzorowywania parame- trów zawartych w adresie URL (skäadajñcych siö na Ĕñdanie GET) na elementy jözyka wyraĔeþ EL. W tym celu naleĔy umieĈciè w kodzie strony faceletów nastöpujñcy fragment: f:metadata f:viewParam name= name value= #{user.name} / /f:metadata Skutki dostöpu do aplikacji internetowej za poĈrednictwem adre- su index.xhtml?name=jack opisano poniĔej: x Uzyskujemy parametr Ĕñdania nazwany name. x W razie koniecznoĈci konwertujemy i sprawdzamy popraw- noĈè tego parametru. MoĔemy to zrobiè za pomocñ elementów f:converter i f:validator (tak jak w przypadku kaĔdego pola typu h:inputText). Przykäad takiego rozwiñzania pokazano poniĔej: f:metadata f:viewParam name= name value= #{user.name} f:validateLength minimum= 1 maximum= 5 / Rozdziaĥ 7. JavaServer Faces _ 113 /f:viewParam /f:metadata x JeĈli wartoĈè jest prawidäowa, parametr jest kojarzony z polem #{user.name}. Parametry widoku moĔna przetwarzaè takĔe bezpoĈrednio przed wy- Ĉwietleniem strony (za pomocñ elementu f:event): f:metadata f:viewParam name= name value= #{user.name} f:validateLength minimum= 1 maximum= 5 / /f:viewParam f:event type= preRenderView listener= #{user.process} / /f:metadata W powyĔszym kodzie metoda identyfikowana przez wyraĔenie #{user. ´process} moĔe zostaè uĔyta do ewentualnej inicjalizacji przed wäa- Ĉciwym wyĈwietleniem strony. Adresy URL przystosowane do obsäugi Ĕñdaþ GET sñ generowane za pomocñ elementów h:link i h:button. Zamiast röcznego konstruowania adresu URL wskazano odpowiedniñ stronö faceletów: h:link value= Zaloguj outcome= login / Ten zapis jest täumaczony na nastöpujñcy znacznik jözyka HTML: a href= .../faces/login.xhtml Zaloguj /a Równie äatwo moĔna zdefiniowaè parametry widoku: h:link value= Zaloguj outcome= login f:param name= name value= #{user.name} / /h:link JeĈli w powyĔszym kodzie z wyraĔeniem #{user.name} zostanie powiñzana wartoĈè Jacek , przytoczony fragment zostanie przetäumaczony na na- stöpujñcy znacznik HTML-a: a href= .../faces/login.xhtml?name=Jacek Zaloguj /a Podobnie, istnieje moĔliwoĈè okreĈlenia wyniku za pomocñ elementu h:button: h:button value= login / Kod w tej formie wygeneruje nastöpujñcy znacznik jözyka HTML: input type= button onclick= window.location.href= /JSFSample/faces/index.xhtml ; return false; value= login / 114 _ Java EE 6. Leksykon kieszonkowy Punkty rozszerzeħ serwera i klienta Konwertery, obiekty nasäuchujñce i mechanizmy sprawdzania popraw- noĈci to obiekty doäñczane po stronie serwera, których celem jest wprowadzanie dodatkowych funkcji do komponentów umieszczonych na stronie. Zachowania to z kolei punkty rozszerzeþ strony klienckiej, które uzupeäniajñ treĈè wyĈwietlanego komponentu o dodatkowe skrypty. Konwerter odpowiada za konwersjö danych wpisanych w komponencie z jednego formatu na inny format (na przykäad z äaþcucha na liczbö). Framework JSF udostöpnia wiele wbudowanych konwerterów, w tym f:convertNumber i f:convertDateTime. Konwertery moĔna äatwo stosowaè dla wszystkich komponentów z moĔliwoĈciñ edycji: h:form Wiek: h:inputText value= #{user.age} id= age f:convertNumber integerOnly= true / /h:inputText h:commandButton value= WyĂlij / /h:form Tekst wpisany w polu tekstowym zostanie przekonwertowany (o ile bödzie to moĔliwe) na liczbö caäkowitñ. JeĈli konwersja tekstu bödzie niemoĔliwa, zostanie wyĈwietlony komunikat o bäödzie. Istnieje teĔ moĔliwoĈè utworzenia niestandardowego konwertera: @FacesConverter( myConverter ) public class MyConverter implements Converter { @Override public Object getAsObject( FacesContext context, UIComponent component, String value) { // ... } @Override public String getAsString( FacesContext context, UIComponent component, Object value) { // ... } } W tym przypadku metody getAsObject i getAsString wykonujñ odpo- wiednio konwersje obiektu na äaþcuch i äaþcucha na obiekt pomiö- dzy obiektami modelu danych a ich reprezentacjami äaþcuchowymi Rozdziaĥ 7. JavaServer Faces _ 115 (potrzebnymi do wyĈwietlania na stronie). Zastosowany obiekt POJO implementuje interfejs Converter i jest oznaczony adnotacjñ @FacesConverter. Funkcjö konwertera moĔe peäniè takĔe strona JSF: h:inputText value= #{user.age} id= age f:converter converterId= myConverter / /h:inputText WartoĈè atrybutu value adnotacji @FacesConverter musi byè zgodna z wartoĈciñ uĔytego powyĔej atrybutu converterId. Mechanizm sprawdzania poprawnoĈci danych (tzw. walidator) säuĔy do weryfikacji danych wpisanych za poĈrednictwem komponentów wejĈciowych. Framework JSF udostöpnia wiele wbudowanych mecha- nizmów sprawdzania poprawnoĈci, w tym f:validateLength i f:validate ´DoubleRange. Mechanizmy sprawdzania poprawnoĈci moĔna äatwo sto- sowaè dla wszystkich komponentów z moĔliwoĈciñ edycji: h:inputText value= #{user.name} id= name f:validateLength min= 1 maximum= 10 / /h:inputText W powyĔszym kodzie okreĈlono, Ĕe däugoĈè äaþcucha wpisywanego w polu tekstowym musi siö mieĈciè w przedziale od 1 do 10 znaków. JeĈli däugoĈè danych nie bödzie naleĔaäa do tego przedziaäu, zostanie wyĈwietlony komunikat o bäödzie. Istnieje teĔ moĔliwoĈè utworzenia niestandardowego mechanizmu sprawdzania poprawnoĈci: @FacesValidator( nameValidator ) public class NameValidator implements Validator { @Override public void validate( FacesContext context, UIComponent component, Object value) throws ValidatorException { // ... } } W powyĔszym kodzie metoda validate zwraca sterowanie, pod wa- runkiem Ĕe sprawdzana wartoĈè jest poprawna. W przeciwnym razie metoda zgäasza wyjñtek ValidatorException. Mechanizmy sprawdzania poprawnoĈci moĔna stosowaè dla dowolnego komponentu z moĔliwo- Ĉciñ edycji: h:inputText value= #{user.name} id= name f:validator id= nameValidator / /h:inputText 116 _ Java EE 6. Leksykon kieszonkowy WartoĈè atrybutu value adnotacji @FacesValidator musi byè zgodna z wartoĈciñ atrybutu id elementu f:validator. Framework JSF dodatkowo oferuje wbudowane mechanizmy integracji z ograniczeniami definiowanymi na bazie frameworku Bean Validation. Zadanie programisty sprowadza siö do umieszczania odpowiednich adnotacji w kodzie komponentu (definiowanie ograniczeþ nie wymaga Ĕadnych dodatkowych czynnoĈci). Ewentualne komunikaty o bäödach (wskutek naruszenia ograniczeþ) sñ automatycznie konwertowane na obiekty klasy FacesMessage i prezentowane uĔytkownikowi koþcowemu. Do definiowania grup sprawdzania poprawnoĈci moĔna uĔyè atrybutu validationGroups znacznika f:validateBean — w ten sposób moĔna wska- zaè dodatkowe komponenty do sprawdzenia podczas weryfikacji okre- Ĉlonego komponentu. Wspomniane rozwiñzania zostanñ szczegóäowo wyjaĈnione w rozdziale poĈwiöconym specyfikacji Bean Validation. Obiekt nasäuchujñcy nasäuchuje zdarzeþ dotyczñcych komponentu. Zdarzenie moĔe polegaè na zmianie wartoĈci, klikniöciu przycisku, klikniöciu linku lub dowolnym innym dziaäaniu. Obiekt nasäuchujñcy moĔe mieè postaè metody komponentu zarzñdzanego lub samej klasy. Obiekt ValueChangeListener moĔna zarejestrowaè dla dowolnego kompo- nentu z moĔliwoĈciñ edycji: h:inputText value= #{user.age} id= age valueChangeListener= #{user.nameUpdated} W powyĔszym kodzie metoda nameUpdated komponentu User jest wy- woäywana w momencie wysyäania powiñzanego formularza. Obiekt nasäuchujñcy na poziomie klasy moĔna utworzyè, implementujñc interfejs ValueChangeListener. Odpowiedni obiekt moĔna wskazaè w kodzie strony za pomocñ znacznika f:valueChangeListener. W przeciwieþstwie do konwerterów, mechanizmów sprawdzania po- prawnoĈci i obiektów nasäuchujñcych zachowanie rozszerza mechani- zmy strony klienckiej, poniewaĔ umoĔliwia deklaratywne doäñczanie skryptów. Na przykäad znacznik f:ajax zdefiniowano jako zachowanie strony klienckiej. Opisany mechanizm dodatkowo umoĔliwia weryfikacjö poprawnoĈci danych po stronie klienta, rejestrowanie zdarzeþ w dzien- niku po stronie klienta itp. Niestandardowe zachowanie moĔna definiowaè przez rozszerzanie klasy ClientBehaviorBase i oznaczanie klas potomnych adnotacjñ @FacesBehavior. Rozdziaĥ 7. JavaServer Faces _ 117 Reguĥy nawigacji Framework JSF definiuje niejawne i jawne reguäy nawigacji. Niejawne reguäy nawigacji dotyczñ wyników pewnych czynnoĈci (na przykäad klikniöcia linku lub przycisku). JeĈli zostanie znaleziona strona faceletów pasujñca do tej akcji, wäaĈnie ta strona zostanie wyĈwietlona. h:commandButton action= login value= Zaloguj / W tym przypadku klikniöcie przycisku spowoduje wyĈwietlenie strony login.xhtml znajdujñcej siö w tym samym katalogu. Jawne reguäy nawigacji moĔna definiowaè za poĈrednictwem elementu navigation-rule w pliku faces-config.xml. Do definiowania warunko- wych reguä nawigacji säuĔy znacznik if : navigation-rule from-view-id /index.xhtml /from-view-id navigation-case from-outcome success /from-outcome to-view-id /login.xhtml /to-view-id if #{user.isPremium} /if /navigation-case /navigation-rule W powyĔszym kodzie nawigacja pomiödzy stronami index.xhtml i login. xhtml ma miejsce tylko w sytuacji, gdy uĔytkownik naleĔy do grupy waĔnych klientów. 118 _ Java EE 6. Leksykon kieszonkowy 172 _ Java EE 6. Leksykon kieszonkowy A adnotacja, 12 @Alternative, 86, 95 @ApplicationPath, 136 @AroundInvoke, 89 @AssertFalse, 155 @AssertTrue, 155 @Asynchronous, 74 @Constraint, 159 @Context, 141 @CookieParam, 141 @DecimalMax, 156 @DecimalMin, 155 @DELETE, 138 @DenyAll, 42 @DependsOn, 67 @Digits, 156 @Discriminator, 48 @EJB, 65 @ElementCollection, 47 @Embeddable, 47 @Embedded, 47 @Entity, 46 @FacesBehavior, 117 @Fancy, 84 @FormParam, 137, 141 @Future, 157 @GroupSequence, 164 @HEAD, 139 @HeaderParam, 141 @HttpConstraint, 41 @HttpMethodConstraint, 41 @Inheritance, 48 @Inject, 83, 86 @Interceptor, 89 @InterceptorBinding, 88 @ManyToMany, 48 Skorowidz @ManyToOne, 48 @MapKey, 49 @MapKeyClass, 49 @MapKeyColumn, 49 @MappedSuperclass, 48 @MatrixParam, 141 @Max, 156 @MessageDriven, 68, 152 @Min, 155 @MultipartConfig, 44, 45 @Named, 85, 102 @NamedQuery, 55 @NotNull, 155, 159 @Null, 155 @OneToMany, 48 @OneToOne, 48 @Oneway, 123 @OPTIONS, 139 @Past, 157 @Path, 13, 135 @PathParam, 135 @Pattern, 157, 159 @PermitAll, 42 @POST, 137 @PostActivate, 64 @PrePassivate, 64 @Provider, 140 @Qualifier, 86 @QueryParam, 136 @Remote, 63, 65 @Remove, 63 @RolesAllowed, 42 @Schedule, 19, 75 @ServiceMode, 125 @ServletSecurity, 40 @Singleton, 12 @Size, 156, 159 @SOAPBinding, 123 173 adnotacja bezstanowy komponent sesyjny, 65, @SQLResultSetMapping, 53 @Startup, 67 @Stateful, 12, 63 @Stateless, 12, 65 @Stereotype, 94 @Target, 89, 158 @Timeout, 75 @TransactionAttribute, 72 @TransactionManagement, 71 @TransportProtected, 42 @Valid, 57, 161 @WebFault, 123 @WebFilter, 32 @WebInitParam, 32 @WebListener, 33 @WebService, 121 @WebServiceProvider, 124 @WebServlet, 12, 26 @XmlRootElement, 135 @ZipCode, 159 FetchType.EAGER, 48 FetchType.LAZY, 48 adres URL, 113 Ajax, 109 aktualizowanie encji, 55 aktywacja komponentu, 64 aplikacje korporacyjne, 14 asynchroniczne Ĕñdanie, 130 atak XSS, 29 atrybut country, 159 execute, 111 group, 159 payload, 159 render, 111 atrybuty @WebService, 121 @WebServiceProvider, 124 automatyczna weryfikacja, 56 B Bean Validation, 18, 56, 154 bezpieczeþstwo, 40 bezpieczeþstwo wñtków, 50 174 _ Skorowidz 74 biblioteki znaczników, 101 blokada Write, 67 blokady optymistyczne, 59 pesymistyczne, 59 blokowanie encji, 59 bäñd nieprawidäowej zaleĔnoĈci, 86 bäödy, 44 buforowanie, 60 C CDI, Contexts and Dependency Injection, 14, 82 ciaäo komunikatu, 132 CRUD, create, read, update, delete, 52 CSS, Cascading Style Sheets, 101 cykl Ĕycia encji, 52 obiektów, 33 serwletu, 28 czöĈciowe przetwarzanie widoków, 109 wyĈwietlanie strony, 110 D definiowanie komponentu kompozytowego, 106 ograniczeþ, 41 zasiögów, 94 deklarowanie filtrów, 33 serwletów, 31 dekoratory, 91 deskryptor wdroĔenia aplikacji internetowej, 28 web.xml, 29 dezaktywacja komponentu, 64 doäñczanie arkusza stylów, 105 skryptu, 105 dostawca JMS, 144, 149 dostöp do serwletów, 40 zasobu, 141 DRY, Don’t Repeat Yourself, 54 dzielenie konfiguracji, 18 E EJB, Enterprise JavaBeans, 13, 62 EJB.Lite, 81 EL, Expression Language, 102 element absolute-ordering , 39 after , 40 alternatives , 86 async-supported , 37 auth-constraint , 41 before , 40 error-page , 44 exception-type , 44 filter , 32 filter-mapping , 32 interceptors , 90 name , 39 navigation-rule , 118 ordering , 39, 40 others/ , 39 security-constraint , 41 user-data-constraint , 41 web-resource-collection , 41 cc:implementation, 107, 109 cc:interface, 107, 108 f:ajax, 111 f:converter, 113 f:event, 114 f:validateBean, 117, 163 f:validator, 113 h:button, 114 h:link, 114 html, 101 outputScript, 110 shared-cache-mode, 60 validation-mode, 165 elementy WSDL, 127 encje, 46 Enterprise JavaBeans, 19 F fabryka menedĔera encji, 165 facelety, 21, 101 filtr LoggingFilter, 32 filtry serwletów, 32 formularz logowania, 106 fragment komunikacji, web fragment, 39 framework Bean Validation, 117 JSF, 100, 166 JSF2, 106 OSGi, 18 G globalne nazwy JNDI, 70 grupa Default, 165 grupy sprawdzania poprawnoĈci, 162, 165 I implementacja punktu koþcowego, 126 referencyjna, 15 instancja kontekstowej, 82 interfejs API Embeddable EJB, 19 API EntityTransaction, 58 AsyncListener, 36 BindingProvider, 128 Criteria API, 53 Dispatch, 129 Embeddable API, 79 Endpoint, 125 Event, 96 Greeting, 83, 84 HttpServletRequest, 42 HttpSession, 30 HttpSessionActivationListener, 35 HttpSessionAttributeListener, 35 HttpSessionBindingListener, 35 HttpSessionListener, 34 JPA, 46 Skorowidz _ 175 interfejs JTA, 58 LogicalHandler, 131 MessageBodyReader, 140 MessageBodyWriter, 140 MessageListener, 68, 152 Provider, 124 Provider DataSource , 124 Provider SOAP message , 125 Provider Source , 125 Servlet, 27 ServletContextAttributeListener, 34 ServletRequestAttributeListener, 36 ServletRequestListener, 36 SPI, 97 TimedObject, 77 J Java EE, 12 JavaServer Faces, 100 JAXB, Java API for XML Binding, 120 JAXR, Java API for XML Registries, 13 JAX-RPC, Java API for XML-based RPC, 13 JAX-RS, Java API for RESTful Web Services, 13, 20, 134 JAX-WS, Java API for XML Web Services, 13, 119 JCP, Java Community Process, 14 jednostka utrwalania, 50 jözyk deklarowania widoków, 101 WSDL, 119 wyraĔeþ EL, 102 XHTML 1.0, 101 zapytaþ JPQL, 53 zapytaþ SQL, 53 JMS, Java Message Service, 68, 144 JPA, Java Persistence API, 21, 46, 164 JPQL, Java Persistence Query Language, 53 JSF, JavaServer Faces, 13, 21, 100, 166 JSR, Java Specification Request, 15 176 _ Skorowidz K katalog META-INF, 39 resources, 43 klasa Application, 136 FacesMessage, 117 GreetingService, 84 MessageContext, 132 Order, 135 Response, 143 Service, 127 dostöpne do wbudowania, 47 mechanizmu odwzorowujñcego, 143 klasy klient klucz JMS, 144 usäugi sieciowej, 127 do platformy, 168 gäówny, primary key, 46 obcy, foreign key, 46 komponent Foo, 67 ServletFilter, 14 ServletListener, 14 User, 111 komponenty, 13 dostöpne lokalnie, 63, 65 EJB, 19 encyjne, 62 sesyjne, 62 sterowane komunikatami, 68 kompozytowe, 106 MDB, 68 sesyjne bezstanowe, 65 singletonowe, 66 stanowe, 62 zarzñdzane, Managed Beans, 19, 23 zäoĔone, 105 komunikat, 123, 132, 144 JMS, 144 ciaäo, 146 nagäówek, 145 wäaĈciwoĈci, 145 o bäödzie, 117, 159 konfiguracja encji, 51 konfigurowanie kontenera EJB, 80 kontekst, 14, 22, 82, 92 cyklu Ĕycia, 82 serwletów, 29 utrwalania, 50, 52 kontener EJB, 80 serwletów, 26 konwerter, 115 f:convertDateTime, 115 f:convertNumber, 115 konwertery niestandardowe, 115 koperta, envelope, 119 kwalifikator, 84 kwalifikatory CDI, 85 liczniki czasu, 75 L Ĥ äaþcuch obiektów, 133 M MDB, message-driven bean, 68 mechanizm adnotacji, 12 sprawdzania poprawnoĈci, 116 rozszerzeþ, 14 menedĔer encji, 50, 51 metadane, 95 metoda addFilter, 33 addServlet, 31 AsyncContext.complete, 37 authenticate, 42 cleanupResources, 25 consumer.receive, 151 doGet, 38 ejbTimeout, 77 EntityManager.merge, 55 EntityManager.remove, 56 EntityTransaction.rollback, 59 getCustomerNames, 103 getOrder, 136, 143 getParts, 45 getPort, 128 handleFault, 132 handleMessage, 132 HttpServletRequest.getRequestDi spatcher, 30 HttpServletResponse.sendRedirect, 30 init, 28 login, 42 onMessage, 68, 152 Persistence.createEntityManager ´Factory, 165 PostConstruct, 66 PreDestroy, 66 producenta, 86 putXml, 138 ServletContainerInitializer. ´onStartup, 31, 36 ServletContext.getContext, 30 ServletContext.getRequest ´Dispatcher, 30 ServletContextListener. ´contextInitialized, 36 ServletRegistration.setAsync ´Supported, 37 session.getAttribute, 30 session.setAttribute, 30 setupResources, 25 validate, 116 Validator.validate, 56 metody biznesowe, 123 protokoäu HTTP, 137 zasobu, 140 model najpierw kod, code first, 121 najpierw kontrakt, contract first, 121 publikacja-subskrypcja, 145 punkt-punkt, 144 MOM, Message-oriented middleware, 144 MVC, Model-View-Controller, 100 Skorowidz _ 177 N nagäówek Accept, 140 Content-Type, 140 narzödzie wscompile, 119 nasäuchiwanie zdarzeþ, 34–36 zmian atrybutów, 34–36 nawiasy klamrowe, 135 nazwa serwletu, 26 tabeli, 46 nazwy JNDI, 71 NetBeans, 168 O obiekt Application, 142 AsyncListener, 38 BeanManager, 99 Connection, 147 EntityManagerFactory, 60 HttpHeaders, 142 InvocationContext, 89 jaxbObject, 132 MessageDrivenContext, 70 messageProducer, 149 Providers, 142 QueueBrowser, 151 Request, 142 RequestDispatcher, 30 Response, 130 SecurityContext, 142 ServletContext, 29 session, 148 TemporaryQueue, 153 UriInfo, 142 UserTransaction, 90 ValueChangeListener, 117 obiekty doäñczane po stronie serwera, 115 nasäuchujñce, 33, 36 obsäugujñce logiczne, 131, 133 obsäugujñce protokoäu, 131 obsäugujñce SOAP, 133 178 _ Skorowidz POJO, 12 przechwytujñce, 21, 88, 90 tymczasowe miejsc docelowych, 153 obserwator, observer, 95 obserwatory transakcyjne, 97 obsäuga buforowania, 60 metod protokoäu HTTP, 20 negocjacji rodzaju treĈci, 20 operacji asynchronicznych, 37 powiñzania XML, 120 technologii Ajax, 21, 110, 112 zasiögów, 23 zasobów, 105, 110 zdarzeþ cyklu Ĕycia, 23 Ĕñdaþ GET, 114 Ĕñdaþ protokoäu HTTP, 27 Ĕñdaþ wieloczöĈciowych, 44 odbieranie komunikatu asynchroniczne, 152 synchroniczne, 150 odwoäanie do zasobu, 105 odwzorowania WSDL-Java, 127 odwzorowywanie danych, 120 niestandardowej reprezentacji, 140 typów jözyka, 122 wyjñtków, 143 ograniczenia bezpieczeþstwa, 41 niestandardowe, 22, 158 wbudowane, 154 oprogramowanie poĈredniczñce MOM, 144 otrzymywanie komunikatów, 148 P pakiet javax.validation.constraints, 154 pakiet zgodnoĈci technologicznej, 15 pakowanie zasobów, 43 pamiöè podröczna, 61 platforma Java EE 6, 168 plik beans.xml, 86, 90 ejb-jar.xml, 70 faces-config.xml, 21, 118 JAR, 39 JSESSIONID, 29 jsf.js, 110 library.jar, 43 login. xhtml, 107 persistence.xml, 51, 57, 165 validation.xml, 22 web.xml, 28 web-fragment.xml, 20, 39, 40 pliki .war, 29, 70 .xhtml, 105 cookie, 29 podmiot zabezpieczeþ, security principal, 75 POJO, Plain Old Java Object, 12 pola nagäówka, 146 powtarzalne adresy URL, 21 producenci zdarzeþ, 95 profile, 13 protokóä SOAP, 20, 119 zatwierdzania dwufazowego, 72 przenoĈne rozszerzenie, portable extensions, 97 przepisywanie adresów URL, 30 przetwarzanie asynchroniczne, 37, 74 wspóäbieĔne, 67 przycinanie, pruning, 13 punkt wstrzykiwania delegacji, 91 punkty koþcowe, 121, 125 koþcowe dynamiczne, 124 rozszerzeþ, 115 wstrzykiwania, 83, 85 R reguäy bezpieczeþstwa, 42 nawigacji, 118 nawigacji warunkowe, 118 odwzorowaþ, 120 relacje pomiödzy encjami, 48 REST, 134, 140 RI, Reference Implementation, 15 rola manager, 41 rozszerzenie, 98 rozszerzony kontekst utrwalania, 52 S SEI, Service Endpoint Interface, 121 serwer GlassFish, 168 GlassFish Community, 18 serwlet AccountServlet, 28 FileUploadServlet, 45 serwlety, 14, 20, 26 serwlety asynchroniczne, 20 singletonowy komponent sesyjny, 66 specyfikacja, 15 Bean Validation, 56 CDI, 82, 88 EJB 3.1, 81 EJB.Lite, 81 JAX-WS, 120 JSR 224, 119 JSR 303, 154 JSR 311, 134 JSR 314, 100 JSR 315, 26 JSR 316, 15 JSR 317, 46 JSR 318, 62 JSR 914, 144 WS-I Attachments Profile, 120 WS-I Basic Profile, 120 WS-I Simple SOAP Binding Profile, 120 WS-Reliable Messaging, 120 WS-Secure Conversation, 120 WS-Security, 120 specyfikacje serwletów, 14 technologii internetowych, 170 technologii korporacyjnych, 170 SPI, Service Provider Interface, 97 sprawdzanie poprawnoĈci, 116, 162–166 encji, 58 komponentów, 22 Skorowidz _ 179 stanowy komponent sesyjny, 62 stereotyp @Decorator, 91 stereotypy, 94 stos technologii, 17 stosowanie strony, 106 strona szablonu, 104 struktura typu Map, 49 Ļ ĈcieĔka do zasobów, 43 Ĉledzenie sesji, 30 Ĉrodowisko IDE NetBeans, 168 JAX-WS, 119 T TCK, Technology Compliance Kit, 15 technologia Ajax, 110 Bean Validation, 154 CDI, 97 JavaServer Faces, 100 JAXB, 120 JAX-RS, 13, 20, 134 JAX-WS, 13, 119 JMS, 68, 144 technologie internetowe, 15, 170 korporacyjne, 16, 170 usäug sieciowych, 16, 171 zarzñdzania i zabezpieczeþ, 17, 171 transakcje, 58, 71 zarzñdzane przez komponent, 71 zarzñdzane przez kontener, 71 tryb dostarczania komunikatów, 149 potwierdzania otrzymywania komunikatów, 148 tworzenie liczników czasu, 78 stereotypów, 95 typ void, 74, 123 typy, 48 typy MIME, 140 180 _ Skorowidz U UEL, Unified Expression Language, 82 unikanie powtórzeþ, 54 usäuga Timer Service, 77 usäugi sieciowe, 18, 119, 171 usäugi sieciowe RESTful, 134 usuwanie encji, 56 uwierzytelnianie, 42 W walidator, 116 warstwa prezentacji, 22 transakcyjna, 22 wartoĈci adnotacji @TransactionAttribute, 73 validation-mode, 165 wiñzanie metod, 137 obiektów z sesjñ, 30 Ĕñdania z zasobem, 141 wäaĈciwoĈci ActivationConfig, 69 BindingProvider, 128 wäaĈciwoĈè javax.persiste nce.cache.storeMode, 61 javax.persistence.cache. ´retrieveMode, 61 WSDL, Web Services Description Language, 119 wstrzykiwanie komponentu, 24, 102 obiektu, 87 zaleĔnoĈci, 14, 22, 82 wyjñtek, 143 ConstraintViolationException, 57 org.example.MyException, 44 SOAPFaultException, 123 ValidatorException, 116 wyraĔenia JPQL, 54 wysyäanie wiadomoĈci, 147 wywoäania zwrotne cyklu Ĕycia, 25 ś Ĕñdania blokujñce, 130 multipart/form-data, 44 protokoäu HTTP, 27 Ĕñdanie DELETE, 138 GET, 27, 113 HEAD, 138, 139 OPTIONS, 139 POST, 28 PUT, 138 wzorzec architektury, 94 fabryki, 87 X XSS, cross-site scripting, 29 Z zabezpieczenia serwletów, 20 zagadnienia przecinajñce, 88 zalety komponentów zäoĔonych, 109 zapytania dynamiczne, 54 zarzñdzanie instancjami encji, 50 zasada jednego rozwiñzania, 14 zasiög @ApplicationScoped, 93 @ConversationScoped, 93 @Dependent, 93 @RequestScoped, 93 @SessionScoped, 93 zasiögi CDI, 93 zbiór definicji ograniczeþ, 22 zdarzenie, 95 AfterBeanDiscovery, 98 AfterDeploymentValidation, 98 BeforeBeanDiscovery, 98 BeforeShutdown, 98 ProcessAnnotatedType, 98 ProcessInjectionTarget, 98 ProcessProducer, 98 znacznik, Patrz element znaczniki faceletów, 101, 103 Skorowidz _ 181 182 _ Skorowidz
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Java EE 6. Leksykon kieszonkowy
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: