{autotoc}
Üzleti alkalmazások készítésének eszközei a Java-ban (J2EE)
Java Enterprise Edition (a nagyvállalati Java platform)
Computerworld 1999. év 38. szám (részlet)
A Java 2 Enterprise Edition a kiszolgálóoldali, n rétegű Java alkalmazások szabványát határozza meg. A Java 2 EE támogatja az EJB technológián alapuló komponenseket, a Java Servlet API-t és a JSP technológiát. A Java 2 EE platform kihasználja a Standard Edition előnyeit, akárcsak az írd meg egyszer, futtasd bárhol alapelvből adódó hordozhatóság lehetőségét. A JDBC elérhetővé teszi az adatbázisokat, a CORBA technológián keresztül pedig lehetőség van a már meglevő kiszolgálóoldali komponensek elérésére; a specifikáció ezenkívül biztonsági modellt is ad a (hálózati) kiszolgálóoldali tranzakciókhoz. A Java 2 EE szabvány tartalmazza a teljes specifikációt és együttműködési teszteket, hogy az alkalmazások valóban hordozhatók legyenek.
A Java 2 EE keretrendszer a következő technológiákat integrálja
- Enterprise Java Beans (újrafelhasználható kódmodulok);
- Java Servletek és JavaServer Pages (szabványos kiszolgálóoldali Java szoftverek);
- JDBC (Java alapú adatbázis-elérés);
- Java Transaction API (interfész elosztott tranzakciókhoz hálózati környezetben);
- XML (gyártótól független jelölőnyelv adatorientált dokumentumrendszerekhez).
A vállalati fejlesztőknek az Enterprise Edition bejelentése a legfontosabb, mert lehetőséget teremt arra, hogy az elosztott rendszerek az interneten és intraneten teljes egészében szabványos Java komponenstechnológiával épüljenek fel. A különböző komponeskonténerek - mint a Web, az Applet, vagy az EJB - adják a komponensek működéséhez szükséges szabványos környezetet, egyszerűbbé teszik a programozást, és lehetőséget adnak a kód nagy részének automatikus generálására.
A szokásos rétegek (megjelenítési réteg, üzleti logikai réteg, hagyományos alkalmazások és tárolók rétege) kiegészültek egy kiszolgálóoldali prezentációs réteggel; ez jeleníti meg az üzleti információkat a HTML-es ügyfeleknek; ebbe a rétegbe került a Java Server Pages és a servlet technológia. Az Enterprise API-kra nem az újabb specifikációk megjelenése volt a jellemző, hanem a továbbfejlődés mellett a teljes konzisztencia megteremtése. A J2EE-nek része a Java Server Pages, az Enterprise Java Beans, a Servlet, az IIOP, a Transactions és a Messaging interfész.
Hálózatkezelést támogató osztályok
A java.net csomag a kommunikációval és a hálózati erőforrások elérésével kapcsolatos osztályokat tartalmazza.
Két részre csoportosítható:
- Socket-ekkel kapcsolatos osztályok:
A Jáva Socket interfészének segítségével elérhetjük az Interneten használt alapvető hálózati protokollokat - URL (Uniform Resource Locator) kezeléssel kapcsolatos osztályok:
Segítséget nyújt a hálózati erőforrások eléréséhez. (Pl. dokumentumok, programok, egyéb adatállományok)
A java.net csomag osztályai
Socket-ek
- A socket-ek alacsony szintű programozási interfészt nyújtanak a hálózati kommunikációhoz.
- A programok közti adatcserét folyamokon keresztül oldják meg.
- A Jáva különböző típusú socket-eket biztosít a két alapvetően elkülönülő hálózati protokollra: kapcsolat-orientált protokoll (Socket osztály) A kapcsolat felépítése után a két program, mint egy telefonon keresztül kommunikálhat egymással, míg a kapcsolatot az egyik fél meg nem szünteti.
- A kapcsolat nélküli protokoll (DatagramSocket osztály): a kommunikáció csak rövid üzenetek formájában zajlik.
Servlet
A servlet egy speciális Java program, amely egy webszerverrel szorosan együtt működve lehetővé teszi HTML oldalak dinamikus létrehozását és paraméterezését különböző átviteli (például HTTP) protokollokon keresztül. Egy servlet a webszervernek ugyanaz mint az applet a böngészőnek – csak nem rendelkezik grafikus felülettel. Nincs is rá szükség, mivel a servletek -- mint a név is mutatja -- csakis szerver funkciókat képesek elvégezni. Pontosabban a webszerver funkcionalitását lehet velük kibővíteni, mert ha egy kliens olyan HTML oldalt kér a webszervertől, amit egy servlet állít elő, akkor a webszerver tulajdonképp csak delegálja a kérést a servlet felé, majd a servlet által generált oldalt továbbítja a kliensnek.
- A webszerver delegálja az oldal kérést a servlet felé, majd a servlet által generált oldalt továbbítja a kliens felé.
- A javax.servlet csomag tartalmazza az összes servlet-specifikus osztályt és interfészt.
- Minden servlet vagy a javax.servlet.GenericServlet leszármazottja, vagy maga implementálja a javax.servlet.Servlet interfészt, amely az általános servlet életciklus metódusokat specifikálja.
A WWW-n elterjedt, a klienssel való kommunikációra HTTP protokollt használó servletek mindig a javax.servlet.http.HttpServlet leszármazottai. A javax.servlet.http alcsomag a HTTP-hez kapcsolódó speciális szolgáltatások elérését biztosító típusokat tartalmazza.
A HTML oldalak dinamikus generálására használt CGI (Common Gateway Interface) megoldásokkal szemben a servletek előnyei:
- platformfüggetlen megoldást biztosítanak a rendszerint platformfüggő CGI-script megvalósításokkal szemben
- a webszerveren belül állandóan futó virtuális gép sokkal gyorsabb kiszolgálást eredményez, mivel elmarad a minden kérés kiszolgálásához szükséges külső programindítás
- egy servlet átirányíthatja a kérést egy másik servlethez, ezáltal dinamikusan lehet alkalmazkodni a webszerver terheltségéhez
- egy servlet könnyen megőrizhet információkat az azonos helyről jövő egymás utáni kérések kiszolgálása között.
A servleteket csakis olyan webszervereken lehet használni, melyek támogatják a servlet API-t és képesek Java programok futtatására.
A lefordított servlet bájtkódját a webszerver előre megadott alkönyvtárába kell másolni. Ez a webszerver konfigurációjától függ, de általában egy servlets nevű alkönyvtárat szoktak használni.
Servlet megszűntetése
Ha nincs szükség tovább az adott servlet szolgáltatásaira, akkor a webszerver megszüntetheti a servlet példányt. A servlet futtatókörnyezet megvárja amíg az adott servletet használó minden még futó kliens kiszolgáló programszál véget ér (vagy lejár egy beállított időtartam, 30 sec) és meghívja a servlet public void destroy() metódusát. Ezen metódus meghívása után már nem fog egyik életciklus metódus sem meghívódni.
Ha esetleg újra szükség lenne a már megszüntetett servletre, akkor az a servlet új példányának létrehozását és inicializálását jelenti.