aleksandar nikolic - web aplikacija turisticke agencije u j2ee okruzenju

Upload: marko-djurdjevic

Post on 07-Feb-2018

224 views

Category:

Documents


1 download

TRANSCRIPT

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    1/121

    UNIVERZITET U BEOGRADU

    FAKULTET ORGANIZACIONIH NAUKA

    DIPLOMSKI RAD

    Web aplikacija turistike agencije u J2EE okruenju

    Mentor: Kandidat:

    prof. dr Sinia Vlaji Nikoli Aleksandar372/03

    Beograd, 2008.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    2/121

    Web aplikacija turistike agencije u J2EE okruenju______________________________________________________________________________

    2

    Sadraj

    1. UVOD ............................................................................................................... 6

    2. JAVA PROGRAMSKI JEZIK............................................................................ 7

    3 JAVA PLATFORM, ENTERPRISE EDITION (JAVA EE) ................................. 9

    3.1 Distribuirane vienivojske aplikacije .................................................................................................. 103.1.1 Klijentski nivo ................................................................................................................................ 103.1.2 Srednji nivo ..................................................................................................................................... 11

    3.1.2.2 Web nivo ................................................................................................................................. 113.1.3 Enterprise information system (EIS) nivo ...................................................................................... 123.1.4 Odvajanje poslovne logike od prezentacije..................................................................................... 12

    3.2 Java EE komponente ............................................................................................................................ 133.2.1 Klijentske komponente ................................................................................................................... 13

    3.2.1.1 Aplikacioni klijent ........... ........... .......... .......... ........... .......... ........... .......... ........... .......... .......... 143.2.1.2 Web klijent .............................................................................................................................. 14

    3.2.1.2.1 Apleti ............................................................................................................................... 153.2.2 Web komponente ............................................................................................................................ 163.2.3 JavaBeans komponente ................................................................................................................... 173.2.4 Poslovne (EJB) komponente ........................................................................................................... 17

    3.2.4.1 Session bean ............................................................................................................................ 183.2.4.1.1 Stateful session bean ....................................................................................................... 18

    3.2.4.1.1.1 ivotni ciklus stateful session bean-a ...................................................................... 193.2.4.1.2 Stateless session bean ...................................................................................................... 20

    3.2.4.1.2.1 ivotni ciklus stateless session bean ........................................................................ 203.2.4.1.3 Stateful ili Stateless? ....................................................................................................... 21

    3.2.4.1.4 Pristup session bean-u ..................................................................................................... 213.2.4.1.4.1 Udaljeni klijent ........................................................................................................ 223.2.4.1.4.2 Lokalni klijent ......................................................................................................... 223.2.4.1.4.3 Udaljeni ili lokalni pristup? ..................................................................................... 233.2.4.1.4.4 Web servis klijenti ................................................................................................... 23

    3.2.4.2 Entity bean .............................................................................................................................. 243.2.4.2.1 Dependency injection ...................................................................................................... 24

    3.2.4.3 Message-driven bean ............................................................................................................... 253.2.4.3.1 ivotni ciklusmessage-driven bean ................................................................................ 27

    3.2.4.4 Pakovanje enterprise bean-ova ................................................................................................ 27

    3.3 Java Enterprise kontejneri .................................................................................................................. 28

    3.4 Java API ................................................................................................................................................ 303.4.1 Komponente tehnologije ................................................................................................................. 31

    3.4.1.1 Java Servleti ............................................................................................................................ 313.4.1.2 JavaServer Pages (JSP) ........................................................................................................... 313.4.1.3 JavaServer Pages Standard Tag Library (JSTL) ..................................................................... 323.4.1.4 JavaServer Faces (JSF) ........................................................................................................... 323.4.1.5 Enterprise JavaBeans (EJB) .................................................................................................... 32

    3.4.2 Servisne tehnologije ........................................................................................................................ 32

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    3/121

    Web aplikacija turistike agencije u J2EE okruenju______________________________________________________________________________

    3

    3.4.2.1 Java Database Connectivity (JDBC) ....................................................................................... 323.4.2.2 Java Message Service (JMS) ................................................................................................... 333.4.2.3 Java Transaction API (JTA) .................................................................................................... 333.4.2.4 JavaMail API .......................................................................................................................... 333.4.2.5 JavaBeans Activation Framework (JAF) ................................................................................ 333.4.2.6 Java API for Web Services (JAX-WS) ................................................................................... 343.4.2.7 Java Authentication and Authorization Service (JAAS) ......................................................... 343.4.2.8 SOAP with Attachments API for Java (SAAJ) ....................................................................... 343.4.2.9 Java Persistence API ............................................................................................................... 343.4.2.10 Java API for XML Registries (JAXR) .................................................................................. 34 3.4.2.11 Java Naming and Directory Interface API (JNDI) ................................................................ 35

    3.4.3 Integracione tehnologije ................................................................................................................. 353.4.3.1 Java API for XML Processing (JAXP) ................................................................................... 353.4.3.2 Java Architecture for XML Binding (JAXB) .......................................................................... 353.4.3.3 Java Connector Architecture (JCA) ........................................................................................ 363.4.3.4 Java Interface Definition Language API (IDL) ........... .......... ........... .......... ........... .......... ........ 36

    3.4.4 Komunikacione tehnologije ............................................................................................................ 363.4.4.1 Java Remote Method Invocation (RMI) -IIOP API ................................................................ 36

    3.5 Web servisi ............................................................................................................................................ 373.5.1 Universal Description, Discovery, and Integration (UDDI) ........................................................... 393.5.2 Web Services Description Language (WSDL) ............................................................................... 393.5.3 Simple Object Access Protocol (SOAP) ......................................................................................... 393.5.4 XML ............................................................................................................................................... 413.4.5 Kada koristiti Web servise? ............................................................................................................ 41

    3.6 Razvoj EJB specifikacije ...................................................................................................................... 423.6.1 EJB 1.0 ............................................................................................................................................ 423.6.2 EJB 1.1 ............................................................................................................................................ 423.6.3 EJB 2.0 ............................................................................................................................................ 423.6.4 EJB 2.1 ............................................................................................................................................ 423.6.5 EJB 3.0 ............................................................................................................................................ 43

    3.7 Java Pesistance API Model .................................................................................................................. 43

    3.8 Pakovanje Java EE aplikacija ............................................................................................................. 44

    3.9 Java EE moduli ..................................................................................................................................... 473.9.1 Enterprise JavaBeans modul ........................................................................................................... 473.9.2 Web modul...................................................................................................................................... 483.9.3 Modul aplikacionog klijenta ........................................................................................................... 493.9.4 Modul adaptera resursa ................................................................................................................... 49

    3.10 Razvoj Java EE aplikacija ................................................................................................................. 493.10.1 Dobavlja Java EE proizvoda (Java EE Product Provider) ........................................................... 503.10.2 Dobavlja alata (Tool Provider) .................................................................................................... 50

    3.10.3 Dobavlja aplikacionih komponenti (Application Component Provider)..................................... 503.10.4 Sastavlja aplikacije (Application Assembler) ............................................................................. 513.10.5 Rasporeiva i administrator aplikacije (Application Deployer and Administrator)................. 51

    4 RAZVOJ WEB APLIKACIJE ........................................................................... 52

    4.1 Evolucija Java EE Web tehnologija .......... ........... .......... .......... ........... .......... .......... ........... .......... ....... 52

    4.2 Model-View-Controller (MVC) arhitektura ...................................................................................... 54

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    4/121

    Web aplikacija turistike agencije u J2EE okruenju______________________________________________________________________________

    4

    4.3 Upoznavanje sa Web serverom ........................................................................................................... 55

    5 JAVA SERVLET TEHNOLOGIJA ................................................................... 57

    5.1 ta je servlet? ........................................................................................................................................ 57

    5.2 Servlet kontejner .................................................................................................................................. 57

    5.3 Servlet metode ....................................................................................................................................... 595.3.1 Metoda init() ................................................................................................................................... 595.3.2 Metoda service() ............................................................................................................................. 595.3.3 Metoda getServletConfig() ............................................................................................................. 595.3.4 Metoda getServletInfo() .................................................................................................................. 605.3.5 Metoda destroy() ............................................................................................................................. 60

    5.4 Pisanje servleta ..................................................................................................................................... 60

    5.5 Send redirect metoda............................................................................................................................ 62

    5.6 Zivotni ciklus servleta .......................................................................................................................... 63

    5.7 Filtriranje zahteva i odgovora ............................................................................................................. 64

    5.8 Obrada izuzetaka .......... ........... .......... ........... .......... ........... .......... ........... .......... .......... ........... .......... ..... 65

    5.9 Interakcija sa klijentima ...................................................................................................................... 65

    5.10 Prednosti Java Servlet tehnologije .................................................................................................... 665.10.1 Prenosivost (portability) ............................................................................................................... 665.10.2 Snaga (powerful)........................................................................................................................... 665.10.3 Efikasnost (efficiency) .................................................................................................................. 675.10.4 Bezbednost (safety) .......... .......... ........... .......... ........... .......... ........... .......... ........... .......... .......... ..... 67

    5.10.5 Integracija (integration) ................................................................................................................ 675.10.6 Proirljivost (extensibility)............................................................................................................ 675.10.7 Prednosti Servleta u odnosu na CGI ............................................................................................. 67

    6 JAVASERVER PAGES TEHNOLOGIJA ........................................................ 69

    6.1 Pregled JSP-a ........................................................................................................................................ 69

    6.2 Komponente JSP-a ............................................................................................................................... 706.2.1 Elementi JSP datoteka .................................................................................................................... 70

    6.2.1.1 JSP direktive ........................................................................................................................... 706.2.1.2 Skript elementi ........................................................................................................................ 71

    6.2.1.2.1 Deklaracija ...................................................................................................................... 716.2.1.2.2 Skriptlet ........................................................................................................................... 716.2.1.2.3 Izrazi ................................................................................................................................ 72

    6.2.1.3 Standardne akcije .................................................................................................................... 736.2.2 Kako funkcionie JSP i JSP kontejner............................................................................................ 73

    6.3 JSP arhitektura ..................................................................................................................................... 746.3.1 Dvo-nivojski pristup ....................................................................................................................... 746.3.2 N-nivojski pristup ........................................................................................................................... 74

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    5/121

    Web aplikacija turistike agencije u J2EE okruenju______________________________________________________________________________

    5

    6.4 Prednosti JSP-a ..................................................................................................................................... 76

    6.5 ivotni ciklus JSP-a .............................................................................................................................. 77

    7. KORISNIKI ZAHTEV................................................................................... 78

    7.1 Verbalni opis ......................................................................................................................................... 78

    7.2 Specifikacija zahteva pomou sluajeva korienja ......................................................................... 79

    7.3 Faza analize .......................................................................................................................................... 857.3.1 Ponaanje softverskog sistema ........................................................................................................ 85

    7.3.1.1 Sistemski dijagrami sekvenci ........... .......... ........... .......... .......... ........... .......... .......... ........... ... 857.3.1.2 Definisanje ugovora o sistemskim operacijama ...................................................................... 96

    7.3.2 Struktura softverskog sistema ......................................................................................................... 997.3.2.1 Konceptualni (domenski) model ............................................................................................. 997.3.2.2 Relacioni model ...................................................................................................................... 99

    7.4. Faza projektovanja ............................................................................................................................ 1007.4.1 Arhitektura softverskog sistema ................................................................................................... 1007.4.2 Ponaanje softverskog sistema- sistemske operacije ................................................................... 101

    7.5 Projektovanje korisninog interfejsa ............................................................................................... 1067.5.1 Ekranske forme ............................................................................................................................. 1067.5.2 Projektovanje scenarija SK ........... ........... .......... .......... ........... .......... ........... .......... ........... .......... . 1077.5.3 Finalna arhitektura softverskog sistema ........... .......... ........... .......... .......... ........... .......... .......... ..... 118

    7.6 Faza implementacije ........................................................................................................................... 119

    8 ZAKLJUAK ................................................................................................. 120

    9. LITERATURA .............................................................................................. 121

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    6/121

    Web aplikacija turistike agencije u J2EE okruenju - Uvod

    ________________________________________________________________________

    6

    1. Uvod

    Sa razvitkom tehnologije, omogueno je pisanje aplikacija koje su sloenije i

    distributivnije. Danas, mrene tehnologije omoguavaju procesnim jedinacama rad narazliitim, fiziki odvojenim mainama rasejanim po svetu. Sa pojavom Jave dolazi dovelikih promena ona sa sobom nosi veu mogunost interakcije izmeu odvojenihprocesnih jedinica (klijenta i servera) ija je posledica pomeranje granice aktivnisti saweb servera na web klijenta, to nije bio sluaj sa predhodnim softverskim sistemima.

    Jedan od trendova i tendencija dananjice je da se web aplikacije koriste zareavanje najrazliitijih problema iz sfere poslovanjakako malih tako i velikih preduzea.Kao jedno od najefikasnijih sredstava za reavanje ovih problema samo po sebi senameeJava Enterprise Editontehnologija.

    Java EE platforma je projektovana da pomogne programerima pri kreiranjuvelikih, vie-nivojskih, skalabilnih, pouzdanih i bezbednih web aplikacija. Ovekarakteristike koje ine sloene (enterprise) aplikacije veoma monim esto ih ine isloenim. Java EEpaltforma je projektovana tako da smanji cenu i sloenost razvijanjaaplikacija obezbeujui moni razvojni model i razvojno okruenje koje omoguujeprogramerima da se koncentriu na funkcionalnost aplikacije.

    Java EEaplikacije se mogu brzo rasporeivati i lako nadograivati to sa ostalimnavedenim karakteristikama predstavlja odgovor Jave na takmiarski pritisak od stranedrugih, konkurentnih programskih jezika.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    7/121

    Web aplikacija turistike agencije u J2EE okruenju - Java programski jezik______________________________________________________________________________

    7

    2. Java programski jezik

    Java predstavlja zatitni znak Sun Microsystems-a koji se odnosi na objektno-

    orijentisan jezik koji je nastao 1995 godine. Generalno gledano, ime Java nas upuuje naskup softverskih alata za kreiranje i implementiranje izvrnog sadraja (programa)korienjem Java programskog jezika. Objektno-orijentisano programiranje predstavljamoan nain za organizovanje i razvojsoftvera, pri emu je programer okruen grupomobjekata koji su u meusobnoj interakciji. Programi zasnovani na ovom konceptu suprilagodljiviji, laki za razumevanje i pruaju vii nivo sigurnosti.

    Za izvravanje Java programa, neophodno je da se na maini izvriprevoenjeJava koda u bajt kod. Ovaj zadatak obavlja Java interpreter. Za korienje Javaprogramana web-u, neopodno je da web pretraiva omogui interpretaciju Java programa. Spoetka razvoja jezika samo posebno kreiran pretraivaHotJavaje mogao interpretiratiprograme kreirane u Javi.HotJavaje razvijen od strane Sun-a ne bi li pokazao potencijal

    i mo koju nosi novi programski jezik. Pretraivac prati zahtev korisnika, povlaiodreeni sadraj definisan MIME1specifikacijom i prikazuje ga.Jedna od vanijih karakteristika ovog programskog jezika je mogunost pisanja

    programa koji se mogu izvravati na stranama World Wide Web-a.Sa Javom dolazi do velikih promena na web-u, ona sa sobom nosi vecu

    mogunost interakcije izmeu klijenta i servera to nije bilo sluaj sa predhodnimsoftverskim sistemima. Ona omoguava programerima kreiranje softvera koji moe bitidistribuiran kroz mreu, radei na razliitim mainama. Rezultat svega ovoga jepomeranje granice aktivnosti sa web servera na web klijenta.

    Java programi koji se izvravaju na web stranama tj. koje izvrava ita(browser)se nazivaju apleti (applet). Svi ostali Javini programi se nazivaju aplikacije. Aplet se

    izvrava na korisnikoj maini. Za izvravanja apleta neophodno je da browser imainstaliranu Java virtualnu mainu. Ovakav nain izvravajna apleta moe prouzrokovatipuno tetnih dogaaja, kao to su virusi i trojanci, koji se mogu desiti za vremeizvravanja programa. Java obezbeuje zatitu na nekoliko razliitih nivoa. Kao prvo,jezik je projektovan tako da je jako teko otetiti izvrni kod. Uklanjanje pointera je velikikorak u tom pogledu. Pointeri se mogu koristiti da obezbede pristup delovima programa

    gde pristup nije dozvoljen i pristup poljima u memoriji koja bi trebalo biti nepromenljiva.

    Eliminacijom svih pointera sem onih koji daju referencu na objekte, Java postaje dostasigurniji programski jezik. Drugi nivo zatite je bytecode verifikator. Java kod sekompajlira u skup naredbi koje nazivamo bytecode, pre nego to se program startuje,verifikator proverava svaki bytecode ne bi li proverio da se sve odvija po pravilima. Zbog

    vie nivoa zatite i stalnog napora da se isti poboljaju, Java programski jezik spada ugrupupouzdanih jezika za izvravanje web aplikacija.Veoma bitnu osobinu Jave ini njena neutralna arhitektura tj. platformska

    nezavisnost. Zapravo, Javina platforma ne zavisi od operativnog sistema. Ova osobina

    omoguuje da se isti program izvrava na razliitim operativnim sistemima.

    1 Multipurpose Internet Mail Extensions spacifikacija ukljuuje razliite formate multimeijalnih

    dokumenata.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    8/121

    Web aplikacija turistike agencije u J2EE okruenju - Java programski jezik______________________________________________________________________________

    8

    Java omoguava izvravanje vie niti odjednom tj. vie naredbi se moeizvravatiistovremeno2.

    Sve Java platforme se sastoje od Java virtuelne maine (VM) i aplikacionogprogramskog interfejsa (API). Java virtuelna maina je program, za specifinu hardversku

    i softversku platformu, koja izvrava Java aplikacije. API (Application ProgrammingInterface) je kolekcija softverskih komponenti koje se mogu koristiti za kreiranje drugihsoftverskih komponenti ili aplikacija. Svaka Java platforma obezbeuje vurtuelnu mainui API, i ovo omoguava da se aplikacije pisane za tu platformu izvravaju na bilo kojemkompatibilnom sistemu sa svim prednostima Java programskog jezika: platformskanezavisnost, snaga, stabilnost, lakoa razvoja i sigurnost.

    2 Narebe se privino, istovremeno eavaju ali se faktiki u jenom trenutku u procesoru izvrava samo

    jedna naredba. Ko vieprocesorskih maina je mogude istovremeno izvravanje vie narebi.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    9/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    9

    3 Java Platform, Enterprise Edition (Java EE)

    Java Enterprise Editionpaltforma je prva od svih specifikacija sa vie-nivojskim

    distribuiranim aplikacionim okruenjem. J2EE specifikacija sadri sve API-je i punoobjanjenje svih runtime komponenata i sevisa koje aplikacija moe koristiti. Moda inajvaniju karakteristiku specifikacije predstavlja jasna razlika izmeu API-ja, kojizajedno formiraju aplikacioni model za programiranje J2EE aplikacija, i runtime-a na

    serverskoj strani koji je izgraen od komponenata i servisa.Drugi deo J2EE platforme je implementacija referenci, koja je kompletno

    implementirana u J2EE specifikaciji od strane Sun Microsystems. Dostupna je kako u

    binarnoj tako i u izvornoj formi. Implementacija referenci se moe koristiti zaodreivanje prenosivostiJ2EEaplikacije.

    Trei deo J2EEplatforme je J2EE Compatibility Test Suite. J2EE CompatibilityTest Suite vri validaciju u saglasnosti sa specifikacijom implementacije. Ova skupina

    mora biti koriena zajedno saJava Conformance Kit (JCK), jer poinje na mestu gde seJCKzavrava.etvrti deoJ2EEplatforme jeJ2EE SDKkoji ukljuuje imlementaciju referenci,

    verifikaciju aplikacije, alat za rasporeivanje aplikacije i dokumentaciju. Zadatak ove Javine tehnologije je da obezbedi platformsku nezavisnost, sigurnost

    i da je vie korisniki orijntisana.J2EEpredstavlja specifikaciju. Specificiraju se pravilakoja moraju biti ispotovana prilikom pisanja programa.Java Enterprise Editionpredstavlja jednu od tri Javine platforme:

    Java 2 Platform, Micro Edition (J2ME) je razvojna platforma za aplikacijekoje se koriste od strane mobilnih ureaja kao to su telefoni, pejderi inavigacioni ureaji. Predstavlja restriktivni oblik Javine tehnologije iji su

    kapaciteti limitirani na male ureaje.Java 2 Platform Standard Edition (J2SE)ini standardno jezgro paketa koji sekorise u apletima,Java EEaplikacijama,Java ME i konzolnim aplikacijama.Dato jezgro ini itav spekter paketa za rad sa ulazom/izlazom, grafikimkorisnikim interfejsom, mreom itd. Ova platforma sadri pakete koji senajee koriste u standardnom programiranju.Java 2 Platform Enterprise Edition (J2EE) predstavlja nadogradnju iproirenje Java SE. Namenjen je za razvijanje i izvravanje velikih (large-scale), vienivojskih (multi-tiered), skalabilnih (scalable), pouzdanih isigurnih mrenih aplikacija.

    Sa karakteristinim dizajnom i ubrzanim procesom razvoja distribuiranih aplikacija,Java Enterprise Editionprua nekoliko koristi/olakica:Pojednostavljena arhitektura i proces razvoja aplikacija.

    Sloboda izbora servera, alata i komponenti.

    Integracija sa postojeim informacionim sistemom.Skalabilne pri obradi zahteva.

    Fleksibilan model zatite.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    10/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    10

    3.1 Distribuirane vienivojske aplikacije

    Java Enterprise Editionplatforma je projektovana da obezbedi podrku serverskoji klijentskoj strani pri razvoju distribuiranih vienivojskih aplikacija. Kod vienivojskihaplikacija funkcije su podeljene u razliita polja koja se nazivaju nivoi.

    J2EEarhitektura definie klijentski nivo, srednji nivo (sastoji se iz vie podnivoa)i EISnivo (Enterprise Information System tier). Klijentski nivo podrava razliite vrsteklijenata. Srednji nivo podrava klijentske servise kroz web kontejnere (na web nivou) iposlovnu logiku aplikacije kroz Enterprise JavaBeanskontejnere (naEJBnivou).

    Slika 1: Vienivojska aplikacija

    3.1.1 Klijentski nivo

    Klijentski nivo se sastoji od klijentske aplikacije preko koje se pristupa serveru

    koji se obino nalazi na drugoj maini. Klijent alje zahtev serveru, server obraujezahtev i vraa odgovor do klijenta. Mnogi razliiti tipovi aplikacija koriste Java EEklijenta, i oni ne pripadaju uvek Java aplikacijama. Klijent moe biti web ita (Webbrowser), stand-alone (samostalna) aplikacija ili drugi server.

    Poto itai imaju ugraen mehanizam kojim prevode korisnike akcije u HTTPzahtev i inerpreter HTTP odgovora, Java klijent mora biti programiran da izvrava teakcije. Klju u implementaciji tih akcija je format poruka izmeu servera i klijenta. Javaklijent moe da alje i prima poruke u bilo kom formatu.

    Tro-nivojske aplikacije proiruju standardni klijent-server model postavljanjemvie-nitnogJ2EEservera izmeu klijentske aplikacije i skladita podataka.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    11/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    11

    3.1.2 Srednji nivo

    Srednji nivo ili nivo aplikacione logike predstavlja nivo ije se komponenteizvravaju na serveru. Ovaj nivo je podeljen na dva podnivoa:Poslovni nivo.

    Web nivo.

    Poslovni nivo se sastoji od komponenti koje obezbeuju poslovu logikuaplikacije. Poslovna logika je programski kod koji obezbeuje poslovanje u odreenimposlovnim domenima, kao to su finansije, bankarstvo i e-poslovanje. Tehnologije kojekoristi poslovni nivo u Java EE aplikacijama su:

    Enterprise JavaBeans (enterprise bean).

    JAX-WS.

    Java Persistance API.

    Alikacioni server obezbeuje neophodno okruenje za izvravanje poslovnelogike. Aplikacioni server takoe upravlja tim komponentema i obezbeuje njihov servis.

    3.1.2.2 Web nivo

    Web nivo ini aplikacionu poslovnu logiku dostupnu na WorldWideWeb-u. Webnivo prihvata itavu aplikacionu komunikaciju sa web klijentima, poziva poslovnu logiku

    i vri transmisiju podataka u odgovore iz dolazeih zahteva. U J2EE aplikacijama, Web nivo uglavnom upravlja interakcijom izmeu Web

    klijenta i aplikacione poslovne logike. Za web nivo je tipino da stvara HTML ili XMLsadraj. Poslovna logika se esto implementira kao enterprise bean. Ona takoe moe bitiimplementirana iskljuivo unutar Web nivoa.

    Web nivo ima sledee funkcije uJ2EEaplikacijama:Upravlja interakcijom izmeu Web klijenta i aplikacione poslovne logikeKomponente Web nivoa generiu sadraj dinamiki, u proizvoljnom formatu,ukljuujuiHTML, slike, muziku i video.Logika koja odreuje koji screen(strana) e se sledei objaviti obino

    odreuje Web nivo.Predstavlja jednostavan, fleksibilan mehanizam za prikupljanja podataka ipamenje njihovihpromena nastalih za vreme korisnike sesije.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    12/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    12

    J2EEaplikacije koriste sledee Javine tehnologije ne Web nivou:Servlets Javine klase koje dinamiki procesiraju zahtev i sastavljajuodgovore, uglavnom zaHTMLstrane.

    JavaServer Pages (JSP)kompajlira se u servlet i sastoji se iz:

    statikih podataka koji mogu biti predstavljeni u bilo kom formatuzasnovanom na tekstu (HTML, XML, WML). JSPelemenata koji ine dinamiki sadraj.

    JavaServer Faces (JSF) je okvir korisnikog interfejsa za pravljenje Webaplikacija kojiprua mogunost ukljuivanja ulazno/izlaznih komponenti (kaoto su tekstualno polje i dugme) na stranu, njihovo konvertovanje i validaciju.JavaServer Pages Standard Tag Library uauruje jezgro funkcionalnostizajedniko mnogimJSPaplikacijama.JavaBeans Component objekti koji predstavljaju privremeno skladitepodataka koji dospevaju sa strana.

    3.1.3 Enterprise information system (EIS) nivo

    Enterprise information system(EIS) nivo ine komponente koje se izvravaju nanekomEISserveru. Obino je to neki sistem za upravljanje bazom podataka (SUBP).EISukljuuje relacione baze podataka, ERP (enterprise resource planning) sisteme i velikesisteme za transakcione procese. Problem EISintegracije ima veliki znaaj iz razloga toenterprise tei ka poveanju moi svojih postojeih sistema i resursa dok u istom trenutkuusvaja i razvija nove tehnologije. Problem EIS integracije predstavlja samo deo irokogpolja koje ini EAI (enterprise aplication intergration). EAI ima ulogu u integraciji

    aplikacije i izvora podataka tj. baze podataka.

    3.1.4 Odvajanje poslovne logike od prezentacije

    Smetanje poslovne logike i prezentacionog koda u odvojene softverske slojevepredstavlja dobru praksu. Poslovni nivo obezbeuje samo aplikacionu funkcionalnost,bez upuivanja na prezentaciju. Prezentacioni sloj sadri podatke koje unosi korisnik ikoji su korisniku dostupni.

    Odvajanje poslovne logike od prezentacije ima nekoliko prednosti:

    Smanjuje uticaj promenaposlovna logika se moe menjati bez modifikacijau prezentacionom sloju ili sa malim modifikacijama. Aplikaciona prezentacijase moe izmeniti bez uticanja naprogramski kod poslovne logike.Poveava se sposobnosti odravanja poslovna logika razvijena u posebnojkomponenti moe biti modifikovana na jednom mestu u izvornom kodu, toe proizvesti promene na svim mestima gde je komponenta koriena.Obezbeuje klijentsku nezavisnost i ponovno korienje koda - meanjeprezentacije podataka i poslovne logike vezuje poslovnu logiku za odreen

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    13/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    13

    tip klijenta, to zahteva reimplementaciju poslovne logike za drugi tip klijenta.Iz tog razloga je pogodna to vea nezavisnost prezentacionog i poslovnognivoa.

    Podeljene uloge programera aplikacije - aplikacije kod kojih je odvojenaposlovna logika od prezentacije omoguavajuprogramerima da se koncentriu

    na oblast u kojoj su najvetiji jer je omogueno nezavisno razvijanjeposlovnelogike i prezentacionog sloja.

    3.2 Java EE komponente

    Java Enterprise Edition komponenta je softverska jedinica koja ima neku

    funkcionalnost i koja je pridruenaJ2EEaplikaciji koja je realizovana u skladu sa J2EEspecifiakacijom. J2EE komponenta se sastoji do skupa meusobno povezanih klasa idatoteka koje joj obezbeuju eljenu funkcionalnost.J2EEaplikacije se prave od sledeih

    komponenti:Klijetske komponente.

    Web komponente.

    Poslovne komponente.

    JavaBeanskomponente.

    Klijentske komponente ine apleti i aplikacioni klijenti i oni se izvravaju naklijentskoj maini, dok se na serverskoj maini izvravaju servleti i JSPkoji ine Webkomponente.EJBkomponente su poslovne komponente koje se izvravaju na serverskojmaini. JavaBeans komponente se mogu nai i na serverskoj i na klijentskoj strani.JavaBeans komponente kao i klijentske komponente (aplikacioni klijenti i apleti) nisu

    realizovane u skladu saJ2EEspecifikacijom.J2EEkomponente su pisane u Java programskom jeziku i kompajliraju se na isti

    nain kao i bilo koji drugi program koji je napisan u Javi. Razlika izmeu ovihkomponenti i "standardnih" Java klasa se ogleda u tome da se J2EE komponente

    ugrauju uJ2EEaplikaciju ako zadovoljavajuJ2EEspacifikaciju.

    3.2.1 Klijentske komponente

    Klijentske komponente ine aplikacioni klijenti i apleti koji se izvravaju naklijentskoj maini.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    14/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    14

    3.2.1.1 Aplikacioni klijent

    Aplikacioni klijent se izvrava u Java 2 Runtime Environment, Standard Edition(JRE). On je slian stand-alone aplikacijama koje rade na tradicionalnim desktopraunarima. Aplikacioni klijent je upakovan u JAR datoteku, i moe biti instalirandirektno na klijentskoj maini.

    Kontejner aplikacionog klijenta predstavlja interfejs izmeu Java EEaplikacionog klijenta i Java EE servera. Kontejner aplikacionog klijenta se pokree naklijentskoj maini i predstavlja vezu izmeu klijentske aplikacije i servera. Aplikacioniklijenti direktno pristupaju enterprise beans-ima koji se izvravaju na nivou poslovnelogike. Ukoliko postoji potreba aplikacioni klijenti mogu da naprave HTTPkonekciju sa

    servletima koji se izvravaju na Web nivou.

    3.2.1.2 Web klijent

    Web klijent se sastoji iz dinamikih Web strana koje sadre razliite tipovemarkup jezika kao to su HTML, XML, koje su generisane od strane Web komponenti ikoje se izvravajuna Web nivou. Drugi deo Web klijenta ini Web itaa (Web browser),koji prikazuje strane dobijene od servera.

    Web klijent se povezuje sa web nivoomJ2EEaplikacije koristeiHTTPprotokol.Ova osobina Web klijenta je naroito bitna za Internet, gde je HTTPkomunikacija jedininain da klijent dopre do servera. Mnogi serveri su odvojeni od klijenata "zatitnim

    zidom" (firewall-om) a HTTP je jedini od nekoliko protokola koje "zatitni zid" neblokira.Mada su mogunosti beskonane, o formatu poruka se moe razmiljati kao o

    spektru na ijem se jednom kraju nalaze binarni stringovi a na drugomXMLdokumenti.Binarne poruke ne zahtevaju mreu savelikim protokom podataka. Ova osobina binarnihporuka je posebno znaajna u okruenjima sa malim protokompodataka (kao to je dial-up mrea), gde se broji svaki bajt.

    Java tehnologija zaXMLsmanjuje neke od tekoa koje nose binarne poruke. Ovatehnologija ukljuuje u sebe Java API for XML Processing(JAXP), automat parsiranja ipomo pri sastavljanju XMLporuka. Alati (toolkit) poruka zasnovani na Java tehnologijipomau prilikom interpretiranja poruka. Ovi alati implementiraju stadnard kao to jeSimple Object Access Protocol (SOAP). SOAP predstavlja komunikacioni protokol,

    baziran na XML-u, za razmenu informacija izmeu raunara bez obzira na njihovoperativni sistem, programsko okruenje ili objektni model. Sposobnost parsiranja iinterpretacije poruka automatski smanjuje vreme razvoja, testiranja i odravanjaaplikacije. Najobiniji modeli XML parsera su DOM (Document Object Model) i SAX(Simple API for XML), gde parser predstavlja konkretnu implementaciju SAX-a iliDOM-

    a koja je razvijena za odgovarajuu softversku ili hardversku platformu.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    15/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    15

    SAX model zasnovan na dogaajima, obrauje XML dokument sekvencijalno,tretirajui komponentu po komponentu.Koristi se kada se ne zahteva dinamiki pristup iizmena elemenata u XML dokumentu i kada se vri obrada dokumenata sa prostomstrukturom koja sadre veliki obim podataka.

    DOM model zasnovan na stablu, predstavlja ceo dokument u obliku stabla i

    obezbeuje pristup pojedinim vorovima stabla. Koristi se kada se zahteva dinamikipristup i manipulacija sa XML dokumentom i njegovim elementima, kao i kod XMLdokumenata sa sloenom strukturom

    3.2.1.2.1 Apleti

    Aplet je program napisan u Java programskom jeziku koji izvrava Java virtualnamaina koja je instalirana na Web itau. Da bi aplet mogao uspeno da se izvripotrebno je da postoji Java Plug-in i security policy datoteka

    3, gde Java Plug-in

    predstavlja mehanizam koji omoguava da se najnovije verzije Jave mogu izvriti u run-

    time okruenju itaa. Za izvravanje apleta neophodno je postojanje HTML strane.Aplet predstavlja podklasu java.awt.Panel-a. Apleti se po karakeristikama razlikuju odaplikacija. Postoje konkretna i implicitna ogranienja koja se moraju potovati prilikomkreiranja apleta.Na primer:

    Aplete pokree ita.Apleti imaju ogranien pristup datotekama.Apleti imaju ogranien pristup mreama.

    Prilikom zapoinjanja rada apleta pozivaju se metode init(), start(), paint(), stop() idestroy()respektivno.

    init()metoda se poziva samo jednom u toku izvrenja apleta.start()metoda se poziva neposredno posle metode init(). Ona se poziva i kod

    ponovnog pokretanja apleta tj. svaki put kada se ita vrati na HTMLdokument koji sadri taj aplet.paint()metoda se poziva svaki put kada izlazni podaci moraju ponovo da seprikau.stop()metoda se poziva kada ita napusti HTMLdokument u kome se apletnalazi.

    destroy()metoda se poziva kada okruenje zahteva da se aplet u potpunostiukloni iz memorije.

    3Java Plug-in, security policy atoteka i JVM su potrebni kako bi se izvrio aplet. Oni nisu neophoni ko

    izvrenja HTML ili XML strana.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    16/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    16

    HTML dokument sadri osnovne informacije i parametre o apletu, on sadritag koji ima sledeu strukturu:

    Tag sadri ime izvrnog koda u formatu ime.class i dimenzijeprozora. Parametar je potreban ukoliko je aplet projektovan da prima parametre i

    moe se ponavljati vie puta ukoliko je potrebno.Mnoge Web strane karakterie upotreba apleta, koji imaju irok spektar primene u

    aplikacijama, prikazivanju slike i zvuka, grafikih efekata i interaktivnih programa kao

    to su igrice.

    3.2.2 Web komponente

    Servleti i JSP strane, zajedno, obezbeuju monu platformu za generisanjedinamikih web strana. Servleti i JSP, ije je zajedniko ime web komponente, mogupristupiti resursima kao to su JDBC (Java Database Connectivity) i enterprise bean-ovima. Zbog pristupa bazama koristei JDBC, web komponente mogu da obezbedemonu platformu za e-trgovinu iz razloga to omoguuju izlaganje poslovnog sistema naWeb-u.JSPstrane su tekst dokumenti koji se izvravaju kao servleti ali oni dozvoljavajuda se na neposredniji nain kreira statiki sadraj tih dokumenata tj. mogue je direktno

    pisanjeHTMLkoda uJSPstranu. Servleti iJSPstrane se mogu zajedno koristiti u jednojWeb aplikaciji ali treba znati da je svaka od navedenih tehnologija usmerena ka

    odreenom tipu Web aplikacije. Servleti su najpogodniji za servisno-orijentisaneaplikacije (Web servisi su implementirani kao servleti) i za kontrolne funkcije

    prezentaciono-orijentisane aplikacije. JSP strane su pogodne za generisanje markupstrana (HTML, XML, WML- Wireless Markup Language), odnosno one su pogodne za

    prezentaciono-orijentisane aplikacije.Statike HTML strane i apleti su povezane sa Web komponentama tokom

    sastavljanja aplikacije ali se ne smatraju Web komponentama po Java EE specifikaciji.

    Klase serverske strane mogu takoe biti povezane sa Web komponentama, ali se slinoHTMLstranama ne smatraju Web komponentama.

    Najvanije prednosti ove tehnologije se ogledaju u distribuciji(laka distribucijajer nema instalacije na klijentskoj maini) i zatiti (firewalls). Primenom apleta koji sedinamiki uitavaju na klijentsku mainu izbegavaju se problemi koji mogu nastatiprilikom instalacije.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    17/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    17

    HTTPprotokol, kroz koji web strane alju zahteve i odgovore, moe proi kroz "zatitni zid" firewall bez problema, ali drugi protokoli kao to su IIOP ili JRMP4 nemogu. Dokazano je da to predstavlja veliku barijeru za uspenu distribuciju objekata.

    3.2.3 JavaBeans komponente

    Serverski i klijentski nivoi mogu takoe da ukljue komponente koje suzasnovane na JavaBeanskomponentnoj arhitekturi (JavaBeans components) kako bi seupravljalo sa tokom podataka izmeu aplikacionog klijenta ili apleta i komponenti koje seizvravaju na Java EE serveru, ili izmeu serverskih komponenti i baze podataka.JavaBeans komponente nisu podrazumevane Java EE komponente po Java EE

    specifikaciji.

    3.2.4 Poslovne (EJB) komponente

    Poslovni kod, koji predstavlja logiku koja reava ili prikuplja potrebe razliitihposlovnih domena, kao to su bankarstvo, prodaja, ili finansije, je obuhvaen enterprisebean-ovima koji se izvravaju na poslovnom nivou aplikacije. Enterprise bean primapodatke od klijentskog programa, procesira ih (ukoliko je potrebno) i alje ih EISnivouna skladitenje. Enterprise bean moe takoe izvlaiti podatke iz skladita, procesirati ih(ukoliko je potrebno) i slati ih nazad do klijentskog programa.

    Postoji vie razloga zbog kojih enterprise bean-ovi pojednostavljuju razvojdistribuiranih aplikacija. EJB kontejner obezbeuje sistemske servise enterprise bean-ovima, dok se programer bean-a moe koncentrisati na reavanje poslovnih problema.EJBkontejner, a ne programer bean-a, je odgovoran za sistemske servise kao to su na

    primer upravljanje transakcijama i autorizacijom. Bean-ovi, a ne klijenti, sadre poslovnulogiku aplikacije, programer klijenta se moe fokusirati na predstavljanje klijenta.Programer klijenta ne mora da pie kod rutina koje implementiraju poslovna pravila ilipristup bazama podataka. Kao rezultat, klijent je tanji, to je korist koja je posebno vanaza klijente koji se izvravaju na malim ureajima. Bitan razlog u pojednostavljenjuaplikacija je i to to su enterprise bean-ovi prenosive komponente. Ove aplikacije semogu izvravati na bilo kojem kompatibilnomJava EEserveru.Enterprise JavaBeanskomponente pojavljuju se u tri rezliita tipa:

    Session bean.

    Entity bean.

    Message-driven bean.

    Session i entity bean-ovi imaju dva tipa interfejsa: component interfejs i home

    interfejs. Home interfejs definie pristup metapodacimabean-a i definie metode create,removeifind. Componentinterfejs definie metode poslovne logikebean-a. Component i

    4 Java Remote Method Protocol transportni mehanizam za komunikaciju izmeu Java objekta i rugih

    pojavljivanja

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    18/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    18

    home interfejs moraju biti ili lokalni (local) ili udaljeni (remote). Message-driven bean

    nema component i home interfejs.

    3.2.4.1 Session bean

    Session bean predstavljaproirenjeklijentske aplikacije na serveru i odgovoran jeza komunikaciju izmeu web i poslovnog nivoa i za poslovna pravila aplikacije. Sessionbean predstavlja klijenta unutar aplikacionog servera. Kreiran je da obezbedi odreeniservis za klijenta i postoji samo za vreme trajanja klijen-server sesije. Kako bi pristupio

    aplikaciji, koja se nalazi na serveru, klijent poziva metode session bean-a. Session bean

    ime velike slinosti sa interaktivnim sesijama: nije deljiv, moe imati samo jednogkorisnika i nije perzistentan, odnosno pri zavretku izvravanja session bean i njegovipodaci nestaju.

    Po definiciji session bean-a se sastoji iz (a) business interfejsa (jedan ili vie)kojim se definiu metode koje e bean staviti na raspolaganje, (b) klase kojim se

    implementiraju ovi interfejsi, nazvana bean klasa, koja se u zavisnosti od session bean-aoznaava sa @Stateful ili @Stateless anotacijom i (c) pomone klase (helper classes),klase potrebne enterprise bean klasi kao to je klasa exception. Dobro kreiran poslovniinterfejs pojednostavljuje razvoj i odravanje Java EE aplikacija, on omoguava da sebean-ovi menjaju interno bez uticaja na klijente.

    EJBspecifikacija definie svaki dogaaj koji se odvije za vreme ivota entitybean-a, od instanciranja do trenutka kada ga garbage collection ne pokupi. Ovajvremenski period se naziva ivotni ciklus (life cycle). Svaki od session bean-ova imarazliit ivotni ciklus.

    Slika 2: Komponente session bean

    3.2.4.1.1 Stateful session bean

    Stateful session bean se posveuje samo jednom klijentu za vreme ivotanjenog pojavljivanja (istance). Stateful session bean odrava konverzaciono stanje saklijentom. Konverzaciono stanje nije zapisano u bazi, to je stanje koje se uva u memoriji

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    19/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    19

    za vreme korienja sesije od strane klijenta. Stanje objekta se sastoji od vrednostipromenljivih njegovog pojavljivanja i uva se na taj nain to pri prispeu svakog novogzahteva od strane klijenta, interni atributi bean-a imaju iste vrednosti kao i u trenutkukada je obrada predhodnog zahteva okonana. Za vreme trajanja konverzacije klijent-bean stanja se uvaju.Nakon zavretka konverzacije stanje se gubi.

    3.2.4.1.1.1 ivotni ciklus stateful session bean-a

    Na slici 3 je prikazan stateful session bean ivotni ciklus koji se sastoji iz etiristanja: does not exist, metoda ready, metoda ready in transactioni passive.

    Slika 3: ivotni ciklus stateful session bean

    Iz prelaska iz stanja does not exist u stanje metode ready dolazi do sledeegdogaaja: newInstance metoda je pozvana, dependency injection se aktivira, i metodasession bean-a anotirana saPostConstructili ejbCreateje pozvana.

    Pri prelasku iz stanja metode readyu stanje passive, kontejner bira session beankoji je kvalifikovan za pasivizaciju i dogaa se sledee: metoda session bean-a anotiranasaPrePassivateili ejbPassivatemetoda (ukoliko je definisana) je pozvana.

    Pri povratku iz stanja passiveu stanje metode readydolazi do sledeeg: metodasession bean-a anotirana sa PostActivate ili ejbActivate (ukoliko je definisana) jepozvana. Ukoliko session bean ostane u passive stanju dovoljno dugo da prekoraitimeout, session bean prelazi u does not existstanje.

    Pri prelasku iz stanja metode readyu stanje metode ready in transactiondeava sesledee: transakcija je pokrenuta i metoda sinhronizacije sesije afterBeginje pozvana.

    Pri povratku iz stanja metode ready in transaction u stanje metode ready, u

    sluaju uspeha, dolazi do sledeeg dogaaja: transakcija se uspeno izvrava, metoda

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    20/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    20

    sinhronizacije sesije beforeCompletion je pozvana; metoda sinhronizacije sesije

    afterCompletion sa argumentom true je pozvana; u sluaju neuspeha , dolazi dosledeeg dogaaja: transakcije se ponitava i metoda sinhronizacije sesijeafterCompletionsa argumentom false je pozvana.

    Na kraju ivotnog ciklusa, klijent poziva metodu anotiranu sa @Remove, a EJB

    kontejner poziva metodu anotiranu sa @PreDestroy, ukoliko postoji. Nakon togapojavljivanje bean-a je spremno za garbage collection. Klijentov kod kontrolie pozivsamo jedne metode ivotnog ciklusa, metode obeleene sa @Remove.

    3.2.4.1.2 Stateless session bean

    Stateless session bean zahteva vie serverskih resursa. On nije perzistentan i neodnosi se na samo jednog klijenta. Ova osobina omoguuje da vie EJBobjekata mogu"deliti" jedno pojavljivanje (instancu) stateless bean-a. Stateless session bean jeEJB-ova

    verzija tradicionalnih transakcionih aplikacija koje se izvravaju korienjemproceduralnog poziva. Procedura se izvrava od poetka do kraja i nakon toga se vraa

    rezultat. Procedura je zavrena inita od podataka kojim se manipulisalo nije zapameno,nema stanja. Stateless session beanne odrava konverzaciono stanje sa klijentom. Svakametoda je potpuno nezavisna i koristi samo podatke koji su prosleeni kao njeniparametri. Kada klijent pozove metode stateless bean-a, promenljive pojavljivanja bean-amogu sadrati stanje specifino za tog klijenta, ali samo za vreme trajanja poziva. Beanizvrava svoje zadatke i alje rezultat klijentu, na koga prelazi odgovornost za uvanjestanja.

    3.2.4.1.2.1 ivotni ciklus stateless session bean

    Stateless session bean ne moe biti pasivan pa se njegov ivotni ciklus sastoji izdve faze: does not exist (nepostojanje) i method-ready pool (pripravnost za povezivanjemetoda).

    Slika 4: ivotni ciklus stateless session bean-a

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    21/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    21

    Klijent inicira ivotni ciklus dobijanjem reference do stateless session bean-a.Pri prelasku iz stanja does not exist u stanje method-ready pool pozvana je metoda

    newInstance, dependency injection zauzima svoje mesto, pozvana je metoda

    setSessionContext i pozvana je metoda session bean-a anotirana sa PostConstruct ili

    ejbCreate(ukoliko postoji).Pri prelasku iz stanja method-ready poolu stanje does not existpozvana je metodasession bean-a anotirana sa PreDestroy ili ejbRemove (ukoliko postoji). Dok se session

    bean nalazi u stanju method-ready pool, njegove metode mogu biti pozvane kao i metoda

    ejbTimeout(ukoliko session bean implementira TimedObjectinterfejs).

    3.2.4.1.3 Stateful ili Stateless?

    Pri odluci za korienje stateful session bean-a postavlja se pitanje da li je uprojektu neophodno korienje stateful modela. Ukoliko se na ovo pitanje dobijapozitivan odgovor, stateful model verovatno predstavlja najbolje reenje. Pri korienjustateful session bean-a, zbog naina na koji je on realizovan oteano je upravljanjegrekama.

    Primera radi, ukoliko doe do odreenih greaka na nivou sistema, pada mree ilirestartovanja maine, kod stateless modela zahtev moe biti preusmeren ka drugojkomponenti, zato to bilo koja komponenta moe da opslui klijentove potrebe. Dok sukod stateful modela manje anse da se klijentski zahtev preusmeri jer se gubi stanjeklijenta pri nastanku greke(stanje je bilo sauvano u izgubljenom bean-u). Nekeimplementacije EJB kontejnera kao opciju imaju i servise za oporavak stanja stateful

    session bean-a.

    3.2.4.1.4 Pristup session bean-u

    Session objekti su neperzistentni objekti koji implementiraju poslovnu logiku koja

    se izvrava na serveru. Jedan nain shvatanja session objeketa je da oni predstavljajulogiku ekstenziju klijentskog programa koji radi na serveru. Ovi objekti nisu deljeni uvie klijentskom okruenju. Klijent nikada ne pristupa direktno pojavljivanjima sessionbean klase, ve im pristupa preko metoda definisanim u poslovnom interfejsu bean-a.Poslovni interfejs definie klijentov pogled bean-a. Svi ostali aspekti bean-a su skriveniod klijenta.

    Klijent session bean-a moe biti:lokalni klijent (local client).

    udaljeni klijent (remote client).

    web servis klijent.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    22/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    22

    3.2.4.1.4.1 Udaljeni klijent

    Remote klijent session bean-a moe biti enterprise bean ili moe biti neki drugiJava program, kao to su aplikacije, apleti ili servleti.

    Interfejs korien za remote session bean je implementiran od strane kontejnera

    kao remote business interfejs5

    (ili remoteEJBObjectinterfejs).Remote business interfacese koristi kada je potrebno da bean komunicira sa udaljenim klijentima. Udaljenomklijentu je lokacija entersprise bean-a kome pristupa vidljiva i on se moe izvravati narazliitoj maini ili razliitoj Java virtuelnoj maini (JVM) u odnosu na enterprise beankome pristupa.

    Kako bi se kreirao bean sa udaljenim pristupom potrebno je oznaiti business(poslovni) interfejs enterprise bean-a sa @Remoteanotacijom:

    @Remote

    public interface Ime{

    .....

    }

    I oznaiti klasu enterprise bean-a sa @Remote, specificirajui poslovni interfejs:

    @Remote(ImeInterface.class)

    public class ImeBean implements Ime Interface {

    .....

    }

    3.2.4.1.4.2 Lokalni klijent

    Local klijent session bean-a moe biti enterprise bean ili Web komponenta.Korienje local interfejsa zahteva kolekciju lokalnih klijenata i sesije. Lokalni klijententerprise bean-a mora biti spojen u istom kontejneru sa bean-om. Lokalni klijent nijelokaciono nezavisan. Korienjem pogleda lokalnog klijenta izbegava se preoptereenjeperformansi sistema koji potie od poziva udaljenih metoda. Za korienje lokalnogklijenta, enterprise bean i njegov klijent se moraju izvravati na istoj JVM. Za razliku odudaljenog klijenta, lokalnom klijetu, lokacija enterprise bean-a kome pristupa nije

    vidljiva.

    Kako bi se kreirao bean sa lokalnim pristupom potrebno je oznaiti business(poslovni) interfejs enterprise bean-a sa @Localanotacijom:

    @Localpublic interface Ime{

    .....

    }

    5U ovoj specifikaciji se koristi termin remote business interfaceda uputi na business interface EJB 3.0

    session bean-a koji porava ualjeni pristup. Remote interfaceupuduje na remote component interface

    pogleda klijenta na EJB 2.1. Local business interface upuduje na local business interface EJB 3.0 session

    bean-a. Local interfaceupuduje na local component interface poglea klijenta na EJB 2.1.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    23/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    23

    I oznaiti klasu enterprise bean-a sa @Local, specificirajui poslovni interfejs:

    @Local(ImeInterface.class)

    public class ImeBean implements Ime Interface {

    .....}

    Ukoliko klasa bean-a ne specificira interfejs korienjem @Local ili @Remote iposlovni interfejs nije oznaen tada se podrazumeva da je poslovni interfejs lokalnogkaraktera.

    3.2.4.1.4.3 Udaljeni ili lokalni pristup?

    Propustljivost mree moe imati ograniavajuu ulogu pri izboru udaljenogklijenta. Usled slabe propustljivosti udaljeni pozivi mogu biti sporiji od lokalnih.

    vrsto upareni bean-ovi zavise jedni od drugih. Ovakvi bean-ovi su dobrikandidati za lokalni pristup. Zato to su pogodni zajedno kao lokalna jedinica, obinopozivaju jedni druge.

    Ukoliko enterprise bean-u pristupaju aplikacioni klijenti, onda bi on trebaodozvoliti udaljeni pristup. Ukoliko su klijenti enterprise bean-a Web komponente ili drugi

    enterprise bean-ovi, onda tip pristupa zavisi od toga kako e se distribuirati komponente.Java EE aplikacije su skalabilne jer njihove server-side komponente mogu biti

    distribuirane preko vie maina. U distribuiranoj aplikaciji, na primer, Web komponentese mogu izvravati na razliitom serveru od enterprise bean -a kome pristupaju. U ovomdistribuiranom scenariju enterprise bean-ovi bi trebali dozvoliti udaljeni pristup. Ukoliko

    postoji dilema koji bi tip pristupa enterprise bean trebao imati, udaljeni pristup je uvekdobar izbor. Ovakva odluka prua veu fleksibilnost.

    3.2.4.1.4.4 Web servis klijenti

    Web servis klijenti u Java EE su veoma slini obinim bean klijentima. Webservice klijentpristupa aplikacijama na dva naina. (a)Web servis klijent moe pozivatiposlovne metode stateless session bean-a. (b) Klijent moe pristupiti Web servisukreiranom saJAX-WS-om.

    Web service klijent pristupa stateless session bean-u kroz klijentski pogled bean-a. Klijentski pogled Web sevisa je obanjen WDSL (Web Services DescriptionLanguage) dokumentom. WDSL-om se definiu i opisuju Web servisi. Predstavljagramatiku baziranu naXML-u za opisivanje Web servisa.Opis servisa pokriva sve detaljekoji su neophodni za komunikaciju sa servisom, to ukljuuje format poruke, transportneprotokole i lokaciju servisa.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    24/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    24

    3.2.4.2 Entity bean

    Za klijenta, entity bean je perzistentna komponenta koja predstavlja objektno-

    orijentisan pogled na sauvane entitete u bazi podataka. Entity bean moe imati lokalnog (local) ili udaljenog (remote) klijenta. Svaki entity bean zahteva da EJB modul sadri

    bean-ovu primary key klasu.

    Slika 5: Komponente Entity bean

    Od kreiranja do ponitavanja, entity objekti ive u kontejneru. Vidljiv od straneklijenta, kontejner obezbeuje bezbednost, konkurentnost, perzistentnosti i druge serviseza objekte koji se u njemu nalaze. Omoguen je konkurentni vie-klijentski pristup entityobjektima. Kontejner u kome su entity bean-ovi razvijeni na ogovarajui nainsinhronizuju pristup stanjima entity objekta koristei transakcije.

    Za svaki entity bean kontejner obezbeuje klasu koja implementira home interfejsza entity bean. Interfejs omoguava klijentu da kreira, pronae i ukloni entity objekat.Klijent moe dobiti entity bean home interfejs kroz dependecy injection, ili ga moetraiti prekoJNDI-a.

    3.2.4.2.1 Dependency injection

    U verzijama koje predhode J2EE 1.5, klijent je morao eksplicitno da deklariezavisnosti za resursima u opisivau rapsoreda i stekne referencu do resursa korienjemJNDI lookup-a. Nakon instanciranja EJB-a unutar Java EEkontejnera, ali pre isporuke

    klijentu, kontejner moe inicijalizovati pojavljivanja (instance) podataka prema pravilimakoje definie enterpreise bean. Ova karakteristika se zove dependency injection ipopularizovana je u Spring Framework-u. Proces automatskog traenja resursa i njihovogpodeavanja u okviru klasa neziva se dependency injection zato to je serveru reeno da

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    25/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    25

    ubaci (inject) otkrivenu zavisnost (dependency) u klasu. Ova tehnika uklanja breme koje

    je nosio runinain traenja resursa izJNDIokruenja.Dependency injection velikom brzinim postanje vodea tehnika za razvijanje

    aplikacija, ne samo zbog smanjene potrebe za JNDI traenjem, ve i zbogpojednostavljenog postupka testiranja. Bez bilo kakvog JNDI APIkoda u klasama koje

    zavise od runtime okruenja aplikacionog servera, bean klasa moe biti instanciranadirektno u test jedinicu(test unit). Dependency injection se moe koristiti jedino odstrane klasa kojima se upravlja (managed classes), a to su one kojima upravljaju Java EE

    kontejneri, kakve suEJBili Servleti. Znai, dependency injection se ne moe koristiti odstrane svih klasa, kakve su recimo pomone klase (helper classes).

    Meutim, potoJava EE 5podrava dependency injection jedino od strane klasakojima se upravlja, dependency injection se ne moe koristiti iz pomonih klasa, tako dase jo uvek mora koristiti JNDIukoliko se ele koristiti resursi ili servisi iz pomonihklasa.

    3.2.4.3 Message-driven bean

    Message-driven bean omoguuje J2EE aplikacijama da primaju JMS6 porukeasinhrono. Asinhrone poruke dozvoljavaju aplikacijama ili komponentama dakomuniciraju sa drugim aplikacijama ili komponentama radi razmene poruka na taj nainto su poaljioci nezavisni od primaoca. Poaljioc alje poruku i ne mora da eka daprimalac primi ili obradi poruku.

    Message-driven bean su komponente koje primaju dolazee poruke od JMSprovajdera

    7 (JMS provider). Primarna odgovornost message-driven bean-a je obrada

    poruka, zato to bean-ov kontejner automatski upravlja ostalim aspektima message-driven bean okruenja. Message-driven bean sadri poslovnu logiku za obradu primljenih

    poruka. Ova poslovna logika moe obuhvatiti operacije kao to su raunanje,skladitenjepodataka i slanje drugih poruka.

    6 Java Message Sevice predstavlja Java EE API stanar koji omogudava aplikacijama slanje i primanje

    poruka asinhrono. JMS je analogan sa JDBC-om, koji obezbeuje API stanar za povezivanje sa nekoliko

    tipova baza podataka(Oracle, MySQL,DB2).7JMS providermoe biti komponenta poruke aplikacionog severa kao to su OracleAS, BEA WebLogic, IBM

    WebSphare. JMS provajderi su poznati i kao JMS serveri.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    26/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    26

    Slika 6: Veza izmeu JMS provajdera (producer) i message-drive bean-a

    Message-driven bean se obino ponaa kao oslukivaJMSporuka, pa je slianoslukivau dogaaja sa razlikom da prima JMSporuke umesto dogaaja. Poruke mogubiti poslate od strane bilo koje Java EE komponente - aplikacionog klijenta, drugogenterprise bean-a, web komponente, od strane JMSaplikacije ili sistema koji ne koristi

    Java EEtehnologiju.

    Message-driven bean-ovi podseaju na stateless session bean-ove:S tim to su jednostavniji.Imaju isti ivotni ciklus kao stateless session bean-ovi.

    Message-driven bean moe procesirati poruke viestrukih klijenata.Pojavljivanja message-driven bean-a ne uvaju stanje podataka ili

    konverzaciono stanje za specifinog klijenta.

    Najvidljivija razlika izmeu message-driven bean-ova i session bean-ova je daklijenti ne pristupaju message-driven bean-ovima kroz interfejse. Za razliku od session

    bean-a, message-driven bean imaju samo bean klasu.Message-driven bean je pogodno koristiti u sledeim prilikama:

    Kada su u aplikacijama potrebne asinhrone poruke.

    U sluaju kada je potrebna automatska isporuka poruka.Pri integraciji dve aplikacije u klimav spoj (loosely-coupled) koji jepouzdan.

    Kada isporuena poruka upravlja drugim dogaajima u sistemu.Pri kreiranju selektora poruka. Selektor poruka je projektovan za preuzimanjespecifinih poruka.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    27/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    27

    3.2.4.3.1 ivotni ciklus message-driven bean

    ivotni ciklus message-driven bean-a ine dva stanja: not exist i method-readypool.

    Slika 7: ivotni ciklusmessage-driven bean

    Pri prelasku iz does not exist stanja u method-ready pool stanje poziva se

    newIstance metoda, aktivira se dependency injection i pokrenuta je metoda message-

    driven bean anotirana sa PostConstruct ili metoda ejbCreate. Dok se nalazi u stanju

    method-ready pool sledee metode mogu biti pozvane: message listener method iliejbTimeout.

    Pri prelaska iz stanja method-ready pool u does not exist poziva se message-driven bean metoda anotirana sa PreDestroyili metoda ejbRemovetj. na kraju ivotnogciklusa se poziva ova metoda. Pojavljivanje bean-a je nakon toga spremno za garbage

    collection8.

    3.2.4.4 Pakovanje enterprise bean-ova

    Datoteke se pakuju u listu u okviru EJB JAR datoteke, modula koji uvaenterprise bean. EJB JAR datoteka je prenosiva i moe biti koriena za razliiteaplikacije. Kako bi se sastavila Java EE aplikacija, pakuje se jedan ili vie modula, kao

    to suEJB JARdatoteke, uEARdatoteku, arhiva datoteku koja sadri aplikaciju. Kada serasporeuje EAR datoteka koja sadri EJB JAR datoteku bean-a, takoe se rasporeujeenterprise bean na aplikacioni server. Takoe se moe rasporeditiEJB JARdatoteka kojanije sadrana od straneEARdatoteke.

    8 Java runtime koristi garbage collection mehanizam kako bi se izborio sa objektima koji vie nisu u

    upotrebi. Garbage collection isti objekte koji nisu referencirani od strane ni jedne promenljive i uklanja ih

    iz memorije.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    28/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    28

    Slika 8: Enterprise JAR datoteka

    3.3 Java Enterprise kontejneri

    ArhitekturaJ2EEaplikacije je vie-nivojska, u zavisnosti od tipa klijenta ona sesastoji od tri ili etiri nivoa. Ti nivoi zajedno sa odgovarajuom tehnikom

    infrastrukturom ine kontejnere.J2EE kontejner je izvrno okruenje za upravljanje aplikacionim komponentama

    koje su razvijene u skladu sa API specifikacijom, i za obezbeivanje pristupa J2EE API-ju.J2EEkontejner obezbeuje okruenje u kome se izvravaju komponente, upravljanjeivotnim ciklusom, bezbednost, rasporeivanje i izvrne servise koje sadre aplikacionekomponente. To znai da komponente (aplikacioni klijent, aplet, servlet, EJB, JSP) preizvrenjamoraju biti ugraene (asemblirane) uJ2EEmodul ili dodeljene odgovarajuemkontejneru. U procesu ugraivanja vri se podeavanje odgovarajuih XML datoteka zasvaku komponentuJ2EEaplikacije i za same aplikacije.

    Koncept kontejnera je veoma bitna karakteristika J2EE platforme. Odvaja

    tehniku infrastrukturu od J2EE aplikacije. Ovo odvajanje koje je ostvareno kroz

    specifikaciju J2EE platforme za posledicu ima:Prvo, programeru je potrebno da samo jednom razvije infrastrukturu softvera i

    moe je koristitiu svim J2EEaplikacijama koje on razvija. Zbog infrastrukture koja jedefinisana u J2EEplatformi sve implementacije nad datom infrastrukturom se ponaajuisto i stoga one su zamenljive.

    Drugo, zato to kontejner obezbeuje sva infrastrukturna povezivanja, programerse moe koncentrisati na bitan deo njegovog rada, na J2EE aplikaciju. Kontejnerobezbeuje odgovarajuu podrku koja je obezbeena prekoJ2EEservera.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    29/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    29

    Neki od najvanijih servisaJ2EEservera su:Java EE model zatite (security model) koji omoguava da se Webkomponenta ili enterprise bean konfigurie tako da sistemskim resursimamogu pristupiti samo autorizovani korisnici.

    Java EE transakcioni model (transaction model) koji omoguava da se

    specificiraju veze izmeu metoda koje prave jednu transakciju tako da svemetode u jednoj transakciji tretiraju kao jedna jedinica.Servis JNDI pretraivanja obezbeuje jedinstven interfejs za viestrukoimenovanje i servise direktorijuma.

    Java EE model udaljenog povezivanja (remote connectivity) koji upravljakomunikacijama niskog nivoa izmeu klijenata i enterprise bean-ova. Nakon to jeenterprise bean kreiran, klijent poziva metode i ima utisak da se metode nalaze iizvravaju na istoj virtuelnoj maini na kojoj se nalazi i sam klijentski program.

    Java EEarhitektura obezbeuje servise koji se mogu konfigurisati (configurableservices). Aplikacione komponente u okviru iste Java EE aplikacije se mogu ponaatirazliito u zavisnosti od toga gde su rasporeene. Kontejner takoe upravlja servisimakoji se ne mogu konfigurisati, kao to su ivotni ciklusi enterprise bean-ova ili servleta,database connection resource pooling, perzistentnost podataka i pristup do API-ja Java

    EEplatforme.

    Postoje sledei tipovi kontejnera:Web kontejnerupravlja izvrenjemJSPstrana i servlet komponenti za JavaEEaplikacije. Web komponente i njihov kontejner izvravaju se na Java EEserveru. Web kontejner obezbeuje sledee servise za Web komponente:usmeravanje zahteva, zatitu, konkurentnost i upravljanje ivotnim ciklusom.Kontejner aplikacionog klijenta (application client container) upravljaizvrenjem komponenti aplikacionog klijenta. Aplikacioni klijenti i njihovkontejner izvravaju se na klijentu.Enterprise JavaBeans(EJB) kontejnerupravlja izvrenjem enterprise bean-ova zaJava EEaplikacije.

    Aplet kontejner (applet container) upravlja izvrenjem apleta. Sastoji se odWeb itaa i Java Plug-ina koji se zajedniki izvravaju na klijentu.Java EE server izvrno okruenje Java EE proizvoda. Java EE serverobezbeujeEJBi Web kontejnere.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    30/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    30

    Slika 9: J2EE server i kontejneri

    Na slici 9 su prikazane komponente kao to su baza podataka i web browser kojene pripadaju kontejnerima. Iako su one standardne softverske komponente, one nisu

    standardne komponente u J2EE platformi. J2EE platforma nudi veoma prilagodljivuarhitekturu, ponuena reenja idu od tankog klijenta (sa web itaem kao klijentom), dosrednjeg klijenta (sa aplet kontejnerom kao klijentom) i do debelog klijenta ( sa

    kontejnerom aplikacionog klijenta kao klijentom).

    3.4 Java API

    Java APIse moe podeliti prema etiri tipa tehnologija koje se koriste. To su:Komponentne.

    Servisne.

    Integracione, i

    Komunikacione.

    Neke od tehnologija koje se koriste u Java EE pripadaju J2SE platformi. J2EEplatforma zavisi odJ2SEtehnologije ili se nadograuje na nju. Radi boljeg razumevanjavrednosti Enterpeise Edition-a navedene su neke od vanijih tehnologija i API-ja kojeimplementacijaJava EEpodrava.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    31/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    31

    Slika 10: Java EE API

    3.4.1 Komponente tehnologije

    Predstavlja tehnologiju koju programer implementira. To su tehnologije kojeimplementiraju prezentacioni, aplikacioni i poslovno logiki sloj.

    3.4.1.1 Java Servleti

    Servlet je komponenta koja se koristi za proirenje funkcionalnosti web servera.Obezbeuju objektno-orijentisanu apstrakciju za izgradnju dinamikih web aplikacija.Servlet pripada serverskoj strani i moe dinamiki da generie HTMLkao rezultatHTTPzahteva. On prima zahtev sa klijentskog hosta (web ita) i alje odgovor ka istom.

    3.4.1.2 JavaServer Pages (JSP)

    JavaServer Pagespredstavlja tehnologiju jako slinu servletima. Tanije, JSP

    skript se kompajlira u servletima. Najvea razlika izmeu JSP-a i servleta je u tome toJSPskript nije ist Java kod. Servlet koristi XML/HTMLtagove i Java skriptlete radiuaurenja logikog zahteva na platformski nezavisan nain.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    32/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    32

    3.4.1.3 JavaServer Pages Standard Tag Library (JSTL)

    JSTL uauruje jezgro funkcionalnosti, zajedniko mnogim JSP aplikacijama.

    Umesto meanja tagova brojnih vendora u aplikaciji, koristi se izdvojeni, standardni skuptagova. Ova standardizacija omoguava rasporeivanje aplikacija u bilo koji JSPkontejner koji podrava JSTL i ini vie verovatnim da je implementacija tagovaoptimizirana. JSTL poseduje iterator i uslovne tagove za kontrolu toka, tagove zamanipulaciju XML dokumenata, tagove internacionalizacije, tagove za pristupanje

    bazama podataka korienjem SQL-a i tagove za obino koriene funkcije.

    3.4.1.4 JavaServer Faces (JSF)

    JSF tehnologija je okvir korisnikog interfejsa za pravljenje Web aplikacija.

    Glavne komponenteJavaServer Facestehnologije su:Okvir GUI komponenti.

    Fleksibilni model za prevoenje (rendering) komponenti u razliite oblikeHTML-a ili razliite markup jezike i tehnologije. Objekat koji prevodi(Renderer object) generie markup kako bi preveo komponentu i konvertovao.podatke sauvane u modelu objekta u tipove koji mogu biti predstavljeniStandardniRenderKitza generisanjeHTML/4.01markup-a.

    3.4.1.5 Enterprise JavaBeans (EJB)

    Enterprise JavaBeansdefinie kako su komponente na serverskoj strani napisanei obezbeuje kontakt izmeu tih komponenata i aplikacionog servera koji upravlja njima.EJBpredstavlja osnovu Java EE. Postoje tri osnovna tipa EJB-a: Session bean, Entity

    bean i Message-driven bean.

    3.4.2 Servisne tehnologije

    Servisne tehnologije obezbeuju tehniku infrasrtukturu koju aplikacione

    komponente mogu koristiti.

    3.4.2.1 Java Database Connectivity (JDBC)

    JDBCpredstavlja API za pristup relacionim bazama podataka. JDBCpruapristup bilo kojim relacionim bazama koristei isti API.JDBComoguuje izvrenje upita,vaenje i manipulisanje podacima iz baza. On omoguuje pozivanje SQL komandi iz

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    33/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    33

    metoda Java programskog jezika. JDBC APIse koristi u enterprise bean-u kada session

    bean pristupa bazi podataka. On se takoe moe koristiti iz Servlet-a ili JSP strana zapristup bazi podataka direktno bez prolaska kroz enterprise bean. Sastoji se iz interfejsaaplikacionog nivoa, koji koriste aplikacione komponente za pristup bazi podataka, i

    sevice provider interface-a koji dodajeJDBCdrajverJava EEplatformi.

    3.4.2.2 Java Message Service (JMS)

    JMSje standard za slanje poruka koji omoguava komponentama Java EEaplikacije da kreiraju, alju, primaju i itaju poruke. On omoguava distribuiranukomunikaciju koja je labavo vezana, pouzdana i asinhrona.

    3.4.2.3 Java Transaction API (JTA)

    JTA predstavlja API za upravljanje distribuiranim transakcijama. JTA definieinterfejs izmeu koordinatora transakcija i drugih delova, kao to su enterprise beans iliaplikacioni server. Java EE arhitektura obezbeuje, podrazumevano, auto commit zaupravljanje commiti rollbackfunkcijama transakcija. Auto commitznai da e bilo kojadruga aplikacija koja posmatra podatke videti promenjene podatke nakon svake operacije

    itanja ili pisanja u bazi podataka.

    3.4.2.4 JavaMail API

    JavaMail API obezbeuje platformski i protokolarno nezavisnu osnovu za

    izgradnju email aplikacija zasnovanim na Javi. JavaMail API se sastoji iz serviceprovider interfejsa i aplication-level interfejsa, koji koristi aplikacione komponente kakobi slao email. Iako nije nezavisan od platforme, JavaMail zavisi od osnovnog email

    servera kao to je SendMail ili MS Excange Server. JavaMail koristi IMAP4, POP3 iSMTPkao osnovne transportne mehanizme.

    3.4.2.5 JavaBeans Activation Framework (JAF)

    JAFje ukljuen iz razloga to je korien od straneJavaMail-a.JavaMailkoristi

    JAF da bi odredio sadraj MIME poruka i odredio akcije koje e prema tome bitiizvrene. JAFobezbeuje standardne servise kako bi determinisao tip proizvoljnog delapodataka, uaurio pristup do njega, otkrio operacije dostupne na njemu i kreiraoodgovarajuuJavaBeanskomponentu kako bi obavio ove operacije.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    34/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    34

    3.4.2.6 Java API for Web Services (JAX-WS)

    JAX-WS predstavlja baznu tehnologiju za podrku web servisima na J2EE

    platformi koji koristeJAXB APIza povezivanje XMLpodataka sa Java objektima. JAX-WSspecifikacija definie klijentski API za pristupanje Web servisima, kao i tehnike zaimplementaciju krajnjih Web servisa. JAX-WSdefinie dva krajnja modela web servisa,prvi zasnovan na servlet tehnologiji a drugi zasnovan naEnterprise JavaBeans-ima.

    3.4.2.7 Java Authentication and Authorization Service (JAAS)

    JAAS obezbeuje nain da Java EE aplikacije autentifikuju i autorizujuspecifinog korisnika ili grupu korisnika koji ih mogu izvravati. JAAS je verzija Javaprogramskog jezika standardnog Pluggable Autentication Module (PAM) okvira

    (framework), koja proiruje arhitekturu sigurnosti Java platforme kako bi podralakorisniku autorizaciju.

    3.4.2.8 SOAP with Attachments API for Java (SAAJ)

    SAAJ je API niskog nivoa od kojeg JAX-WS i JAXR zavise. SAAJ omoguavaproizvoenje i korienje poruka koje odgovaraju SOAP 1.1 specifikaciji i SOAP-u sapridruenim API-em. Mnogi programeri ne koriste SAAJ API, ve koriste JAX-WS APIkoji je vieg nivoa.

    3.4.2.9 Java Persistence API

    Java Persistence APIje na Java standardima zasnovano reenje za perzistentnost.Perzistentnost koristi pristup objektno-relacionog preslikavanja kako bi premostio razlikuizmeu objektno orijentisanog modela i relacione baze podataka. Java Persistence sesastoji od tri podruja:

    Java Persistence API-ja.

    Upitnog jezika.

    Metapodataka objektno/relacionog preslikavanja.

    3.4.2.10 Java API for XML Registries (JAXR)

    JAXR omoguava pristup poslovnim i registrima opte namene preko Web -a.JAXRpodrava ebXML Registry, Repository standarde i UDDI (Univesal Description,Discovery and Integration) specifikacije. Korienjem JAXR-a programeri mogu nauitiposeban API i dobiti pristup ovim vanim registry tehnologijama.

  • 7/21/2019 Aleksandar Nikolic - Web Aplikacija Turisticke Agencije u J2EE Okruzenju

    35/121

    Web aplikacija turistike agencije u J2EE okruenju - Java Platform Enterprise Edition (J2EE)______________________________________________________________________________

    35

    3.4.2.11 Java Naming and Directory Interface API (JNDI)

    JNDIpredstavlja standardizovan pristup razliitim tipovima imenovanih servisa.API je projektovan da bude nezavisan od bilo kojih implementacija imenovanih idirectory servisa. JNDI predstavlja J2SE API. Korienje JNDI-a je dvostruko. Prvo,

    JNDI obezbeuje interfejs koji omoguuje pristup imenovanim i directory servisresursima kao to suLDAP,DNSiliNDS. Drugo,JNDIse koristi uJ2EEaplikacijama pritraenju interfejsa koji kreiraJDBCkonekciju.

    U aplikacijama JNDI ima primenu pri povezivanju sa komponentama EJB-a ili

    drugim resursima na mrei.Koristei JNDI, Java EE aplikacija moe uvati i povlaitibilo koji tip imenovanog Java objekta.

    Java EEservis imenovanja obezbeuje aplikacionim klijentima, enterprise bean-ovima i Web komponentama pristup okruenju JNDI imenovanja (JNDI namingenvironment). Okruenje imenovanja dozvoljava da komponenta bude podeavana bezpotrebe pristupa ili menjanja izvornog koda komponente.

    3.4.3 Integracione tehnologije

    Integracione tehnologije pomau programeru da integrie J2EE platformu saostalimplatformama koje se mogu nai u okruenju.

    3.4.3.1 Java API for XML Processing (JAXP)

    JAXPpodrava procesiranje XML dokumenata korienjem DOM-a (Document

    Object Model), SAX-a (Simple API for XML) i XSLT-a (Extensible Stylesheet LanguageTransformations). JAXP omoguava aplikacijama da parsiraju i transformiu XMLdokumente nezavisno od pojedinane implementacije XML procesiranja. JAXP takoeobezbeuje namespace podrku, koja dozvoljava rad sa emama koje bi inae mogleimati konflikte imenovanja. Projektovan da bude fleksibilan, JAXP dozvoljava da se

    koristi bilo kojiXMLparser iliXSLprocesor i podrava W3Cemu.

    3.4.3.2 Java Architecture for XML Binding (JAXB)

    JAXB specificira povezivanje XML dokumenta sa JavaBean objektima koje se

    zasniva na XML emi. Takoe, u poslednjoj verziji JAXB-a Java s